分层解耦.
三层架构
controller:控制层,接收前端发送的请求,对请求进行处理,并响应数据
service:业务逻辑层,处理具体的业务逻辑
dao:数据访问层(Data Access Object)(持久层),负责数据访问操作,包括数据的增、删、改、查
分层解耦
内聚:软件中各个功能模块内部的功能联系
耦合:衡量软件中各个层/模块之间的依赖、关联的程度
软件设计原则:高内聚低耦合
service层代码改动,controller层代码也要改动,那么这两层就说耦合了
控制反转: Inversion Of Control,简称IOC。对象的创建控制权由程序自身转移到外部(容器),这种思想称为控制反转
依赖注入: DependencyInjection,简称Dl。容器为应用程序提供运行时,所依赖的资源,称之为依赖注入
Bean对象:I0C容器中创建、管理的对象,称之为bean
IOC&DI入门
第一步只需要加上一个注解@Component
第二步:controller运行时需要依赖service,service运行还是需要依赖dao,只需要在前面加上一个注解@Autowired,加上之后运行时IOC容器会自动为其提供该类型的bean对象,并且赋值给这个变量
IOC详解
Bean的声明
注意事项:
1.声明bean的时候,可以通过value属性指定bean的名字,如果没有指定,默认为类名首字母小写
2.使用以上四个注解都可以声明bean,但是在springboot集成web开发中,声明控制器bean只能用@Controller
DI详解
通过以下几种方案来解决:
@Primary
@Qualifier
@Resource
@Primary
加到A上代表想让A生效,加到B上代表想让B生效
@Qualifier
@Qualifier后面括号内指定一个属性,即value属性,value属性就是指定bean的名字。如果在声明bean的时候没有指定名字,那么就默认是类名首字母小写
@Resource
按照名称进行注入