1.依赖注入
所谓依赖注入就是根据key找到对应的对象 这里的key是指 ioc容器他是一个Map结构的容器
key:名字 value:对象
@Component注解
将对象交给Ioc容器管理 @Component有一个属性value 给value赋值一个名字 交给ioc value属性值在ioc中相当于key 可以不给value赋值 那么默认值就是类名首字母改小写 就是它的默认值 为了区分不同层的依赖注解 @Component衍生出三种注解
@Controller 表现层
用来修饰表现层 把表现层的对象交给ioc容器管理
@Service
用来修饰业务层(逻辑层) 把业务层对象交给ioc容器管理
@Repository
用来修饰数据访问层 把数据访问层对象交给ioc管理
三种衍生注解的功能跟@Component的功能完全一样 只是为了区分不同层 如果没有给它指定value属性 默认值就是类名加首字母小写 如果一个接口下有两个实现类 两个注解都没有指定value值 现在要为这个注解依赖注入对象 那么会注入哪个对象呢??? 根据变量名来注入
变量名 要实现类的首字母加小写 就能够实现依赖注入 是那个实现类的就注入哪个实现类的 如果变量名不是实现类的首字母加小写就会报错 value属性名可用省略不写
2.配置类
@Configuration
用来标记这个类是一个Spring的配置类
@ComponentScan
用来扫描指定包下的注解 将它们放入Ioc容器管理 @ComponentScan有一个属性basePackages 值是一个数组 可以指定多个扫描路径
3.整合Junit
@RunWith
@RunWith就是一个运行器 用来指定Spring的Junit测试 替代原来的Junit
在Spring5之前指定SpringJUnit4ClassRunner.class Junit测试
@RunWith(SpringJUnit4ClassRunner.class)
在Spring5之后指定SpringRunner.class Junit测试
@RunWith(SpringRunner.class)
@ContextConfiguration
加载配置类 classes属性指定配置类类名.class 配置类去扫描指定注解将它们放入Ioc容器