在学习面向对象三大特性之一封装性时,我们就有提到高内聚,低耦合,现在我们要基于springboot架构下来达到解耦,当然封装性也一定会用到。
先来回顾一下什么是高内聚低耦合
高内聚低耦合的概念
学习springboot之前,我们关于耦合度的认识一直在分包完成代码实现,加private等权限,但是各个程序之间我们依旧要需要很多对象和接口来连接。下面我们就进入springboot解耦的学习
springboot中的解耦思路
后面的知识依旧兼容前面,所以前面的分包解耦操作也必然存在,这是一个非常简单练习,但我们也用到分包,访问数据和业务实现包括具体的操作都在对应的包下
spring中bean的声明
这样逻辑会更清晰
component
这三个注解都是component的衍生,更加具体
直接看@Service的源码,包含component
@Repository的源码
在IOC容器中,每一个Bean都有一个属于自己的名字,可以通过注解的value属性指定bean的名字。如
果没有指定,默认为类名首字母小写
组件扫描
放入容器的和注入的bean要想生效就必须在对应的包下,这里默认在springboot启动项的包和及其子包下,当不在这两个包下就会无法生效,程序就会报错
解决办法,指定包扫描
@ComponentScan({"包名"})
DI详解
注;这里我们所需要的依赖的资源都是我们控制转换放进去的,当需求超过了我们放的资源就会报错,
@Autowird 与 @Resource的区别