请求参数

响应数据

三层架构模式

分层解耦
- 内聚: 软件中各个功能模块内部的功能联系
- 耦合: 衡量软件中各个层/模块之间的关联,依赖的程度
- 软件设计原则: 高内聚低耦合
- 控制反转: lnversion Of Control, 简称IOC。对象的创建控制权由程序自身转移到外部(容器), 这种思想称为控制反转。
- 依赖注入: Dependency Injection, 简称DI。容器为应用程序提供运行时, 所依赖的资源, 称之为依赖注入。
- Bean对象: IOC容器中创建, 管理的对象, 称之为bean
IOC and DI
- 将Service层和Dao层的实现类, 交给IOC容器管理(在实现类上面加上@Component注解, 表示要将该类交给IOC容器管理, 成为IOC容器的Bean)--即为控制反转
- 为Controller和Service注入运行时, 依赖的对象(在需要创造对象的代码上面加上@Autowired注解, 表示运行时, IOC会提供该类型的Bean对象, 并赋值给该变量)--即为依赖注入
- 运行测试
IOC

Bean组件扫描
- 并不是只要加了上面四种注解的类就一定会成为IOC中的Bean对象, 想要生效, 还需要被组件扫描注解@ComponentScan扫描
- 启动类声明注解@SpringBootApplication中, 包含了组件扫描注解, 默认扫描的范围是启动类所在包及其子包
DI
-
IOC容器中只能装一个类型的一个bean对象, 如果出现多个同类型的bean对象即对多个同类型的实现类都加了@Component或衍生注解, 就会报错, 解决方案如下:
- @Primary: 加在实现类上, 表示该类的优先级, 即依赖注入时优先注入该类的bean
- @Autowired + @Qualifier("bean的名字"): 加在依赖注入的地方, 指定注入该名称的bean
- @Resource(name = "bean的名字"): 加在依赖注入的地方, 无需再加@Autowired注解, 指定注入该名称的bean
@Autowired注解和@Resource注解的区别

