Web开发三层架构
- controller:控制层,接收前端发送的请求,处理请求并响应数据
- service:业务逻辑层
- dao:数据访问层,负责数据访问操作
分层解耦
内聚:软件中各个功能模块内部的功能联系
耦合:衡量软件中各个层/模块之间的依赖、关联程度
控制反转:IOC,对象的创建控制权由程序自身转到外部
依赖注入:DI,容器为应用程序提供运行时所依赖的资源
Bean对象:IOC容器中创建、管理的对象
@Component:将Service和Dao层的实现类交给IOC容器
@Autowired:为Controller和Service注入运行时依赖的对象
注解要生效还需要被组件扫描注解@ComponentScan扫描(默认包含在启动类声明注解@SpringBootApplication)
当存在多个同类型类时,@Autowired无法自动注入依赖,可以在需要的类上加@Primary注解,或者在需要注入依赖处加@Qualifier(“className”),或者用@Resource代替@Autowired,@Resource(name=“className”)根据类名来选择注入的依赖