耦合
之前的代码因为要在controller层创建一个service的对象,service层也要建立dao对象,说明两个层之间存在耦合。而软件设计需要高内聚低耦合。
解决方法:创建一个容器,把service对象放进去,controller层调用时,从容器中找。
IOC&DI流程介绍
在Service和dao的实现类加上@Component,实现控制反转
@Component//将当前类交给IOC容器管理,称为IOC容器中的Bean
第二步,在controller层添加@Autowired,完成依赖注入
@Autowired//运行时,IOC容器会自动注入EmpServiceA
private EmpService empService ;
在service层同样添加@Autowired
这时不需要添加
= new EmpServiceA()
控制层会在容器内自己寻找带有@Component的实现类。
IOC详解
下面三个是用用于三个层的,第一个可以用于不属于这三个层的工具类,
但是@Controller不会用在控制层,因为控制层@RestController包括@Controller和@ResponseBody。
DI详解
有多个@Autowired时
1.@Primary,谁加上,谁就优先。
23.@Qualifier和@Resourse都是加上bean的名字来确定优先。