tip:听课笔记。
1.由于在程序调用的过程中service层调用了持久层,controller有需要调用业务逻辑层,他们之间通过对象的创建进行互相调用,在new一个service的实现类,对象如果类名改变后就会报错,所以需要解耦。
2.IOC容器(spring容器),DI,bean的出现
2.1 IOC的DI的入门
①.Service层及Dao层的实现类,交给IOC容器管理。
在类上加上注解@component 将类交给交给IOC容器管理。成为IOC容器的bean
②.为Controller及Service注入运行时,依赖的对象。
在成员变量上加上注解@Autowired完成依赖注入操作,在程序运行时就会给该变量赋予相对应的对象。
③.运行测试。
tip:疑问为什么这样就能解耦合呢:
a:比如我们有两个实现类public class EmpServiceA implements EmpService {}
public class EmpServiceB implements EmpService {}
我们不想用EmpServiceA 中的功能,只需要把注解@component 删掉,在EmpServiceB 加上注解交给IOC容器。(如果都有注解怎么依赖注入看4.DI的详解)
就可以改变业务逻辑,而不需要改动代码 。实现了解耦
3.ioc的详解
tip:1.@Component 多用于工具类的注解
2.@RestController包括@Controller和 @ResponseBody(请求响应(类型:方法注解、类注解
位置:Controller方法上/类上
作用:将方法返回值直接响应,如果返回值类型是实体对象/集合,将会转换为SON格式响应
说明:@RestController=@Controller+@ResponseBody;))
3.声明bean的时候,可以通过value属性指定bean的名字,如果没有指定,默认为类名首字母小写。
4.使用以上四个注解都可以声明bean,但是在springboot集成web开发中,声明控制器bean只能用@Controller。
4.DI的详解