一、IOC依赖反转
注解 | 说明 | 位置 |
---|---|---|
@Component | 声明bean的基础注解 | 不属于以下三类,用这个注解 |
@controller | @Component 的衍生注解 | 标注在控制器类上 |
@Service | @Component 的衍生注解 | 标注在业务器类上 |
@Repository | @Component 的衍生注解 | 标注在数据访问类上(由于mybatis整合,用的少) |
1.1 理解
1.在controller层上加入注解:@RestController和@controller,其中@RestController = @Controller + @ResponseBody。
2.在Service层上加入注解:@Service//意味着将当前这个实现类交给IOC容器管理,成为IOC容器中的Bean对象。
3.在Dao层上加入注解:@Component将当前类交给IOC容器管理,成为IOC容器中的bean。component没问题,但是可以用更符合它的,这一层是dao层,对应Repository。
1.2 注意
1.声明bean的时候,可以通过value属性指定bean的名字,如果没有指定,默认为类名首字母小写。
2.在springboot集成web开发中,声明控制器bean时要用@Controller。
二、DI依赖注入
在使用@Autowired注解的时候,默认是按照类型进行,如果存在多个相同类型的bean,则通过下面的方式解决。
Autowired:默认按照类型装配。也就是要去IOC容器中赵这个类型的Bean对象,然后完成注入。
若存在多个同类型Bean:
解决方式①:@Primary,下面的EmpServiceA和EmpServiceB,想要哪一个给哪一个上面加入@Primary。
解决方式②:在需要注入的层,加入@Qualifier注解并结合@Autowired。(两者结合)
解决方式③:只用@Resource,name参数输入需要的Bean名字。
注意:
Autowired默认按照类型注入;而resource默认按照名称注入。
Autowired是spring框架提供的注解;而resource是jdk框架提供的注解。