请求响应

请求参数

响应数据

三层架构模式

分层解耦

  • 内聚: 软件中各个功能模块内部的功能联系
  • 耦合: 衡量软件中各个层/模块之间的关联,依赖的程度
  • 软件设计原则: 高内聚低耦合
  • 控制反转: lnversion Of Control, 简称IOC。对象的创建控制权由程序自身转移到外部(容器), 这种思想称为控制反转。
  • 依赖注入: Dependency Injection, 简称DI。容器为应用程序提供运行时, 所依赖的资源, 称之为依赖注入。
  • Bean对象: IOC容器中创建, 管理的对象, 称之为bean

IOC and DI

  1. 将Service层和Dao层的实现类, 交给IOC容器管理(在实现类上面加上@Component注解, 表示要将该类交给IOC容器管理, 成为IOC容器的Bean)--即为控制反转
  2. 为Controller和Service注入运行时, 依赖的对象(在需要创造对象的代码上面加上@Autowired注解, 表示运行时, IOC会提供该类型的Bean对象, 并赋值给该变量)--即为依赖注入
  3. 运行测试

IOC

Bean组件扫描

  • 并不是只要加了上面四种注解的类就一定会成为IOC中的Bean对象, 想要生效, 还需要被组件扫描注解@ComponentScan扫描
  • 启动类声明注解@SpringBootApplication中, 包含了组件扫描注解, 默认扫描的范围是启动类所在包及其子包

DI

  • IOC容器中只能装一个类型的一个bean对象, 如果出现多个同类型的bean对象即对多个同类型的实现类都加了@Component或衍生注解, 就会报错, 解决方案如下:


  • @Primary: 加在实现类上, 表示该类的优先级, 即依赖注入时优先注入该类的bean
  • @Autowired + @Qualifier("bean的名字"): 加在依赖注入的地方, 指定注入该名称的bean
  • @Resource(name = "bean的名字"): 加在依赖注入的地方, 无需再加@Autowired注解, 指定注入该名称的bean
@Autowired注解和@Resource注解的区别
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容