四、分层解耦
4.1 三层架构
- Controller:控制层,接收前端发送的请求,对请求进行处理,并响应数据。
- service:业务逻辑层,处理具体的业务逻辑。
- dao:数据访问层(Data Access Object)(持久层),负责数据访问操作,包括数据的增删改查。
4.2 分层解耦
- 内聚:软件中各个功能模板内部的功能联系。
- 耦合:衡量软件中各个层/模板之间的依赖、关联的程度。
- 软件设计原则:高内聚、低耦合。
4.3 IOC&DI入门
@Component
@Autowired
4.4 IOC详解
Bean的声明
@Repository("Shira")
@Repository(value = "Shira")
Bean组件扫描
- 前面声明bean的四大注解,要想生效,还需要被组件扫描注解@ComponentScan扫描。
- @ComponentScan注解虽然没有显式配置,但是实际上已经包含在了启动类声明注解@SpringBootApplication中,默认扫描的范围是启动类所在包及其子包。如果将三层架构中某个层的文件移动到其他的包中,那么bean就无法声明成功。
4.5 DI详解
Bean注入
- @Autowired注解,默认是按照类型进行,如果存在多个相同类型的bean,将会报出如下错误:
其中@Primary是设置优先级,其他两个是指定bean注入
@Primary和@Qualifier是Spring提供的,而@Resource是jdk提供的。
@Qualifier要跟@Autowired一起使用。
@Autowired默认是按照类型注入,而@Resource默认是按照名称注入