Spring 4.x基础篇之依赖注入、AOP
Spring 4.x框架 + IDEA2017
Spring框架四大原则:
1)通过POJO进行轻量级和最小侵入式开发。
2)通过依赖注入和基于接口编程实现松耦合。
3)通过AOP和默认习惯进行声明式编程。
4)使用AOP和模板(template)减少模式化代码。
一、依赖注入
控制反转(Inversion of Control - IOC)、依赖注入(dependency injection - DI),在Spring环境下是等同概念,控制反转是通过依赖注入实现的。
依赖注入指的是容器负责创建对象和维护对象之间的依赖关系,而不是通过对象本身负责自己的创建和解决自己的依赖。
依赖注入的目的是为了解耦,体现一种“组合”的理念。
Spring IOC容器(ApplicationContext)负责创建Bean,并通过容器将功能类Bean注入到需要的Bean中。
无论是xml配置、注解配置还是Java配置,都被称为配置元数据,所谓元数据即描述数据的数据。元数据本身不具备任何可执行的能力,只能通过外界代码来对这些元数据解析后进行操作。Spring容器解析这些配置元数据进行Bean的初始化、配置和管理依赖。
1.简单的依赖注入(1)
![](https://img.haomeiwen.com/i7686279/c6daba6fb4aec5f6.png)
声明Bean的注解:
@Component,没有明确的角色。
@Service在业务逻辑层(service层)使用。
@Repository在数据访问层(dao层)使用。
@Controller在展现层(MVC—>Spring MVC)使用。
注入Bean的注解,一般情况下通用:
@Autowired:Spring提供的注解。
@Inject:JSR-330提供的注解。
@Resouce:JSR-250提供的注解。
2.简单的依赖注入(2)
![](https://img.haomeiwen.com/i7686279/79da6138c9554182.png)
二、AOP
AOP:面向切面编程,相对于OOP面向对象编程。
Spring的AOP的存在目的是为了解耦。AOP可以让一组类共享相同的行为。在OOP中只能通过继承类和实现接口,来使代码的耦合度增强,且类继承只能为单继承,阻碍更多行为添加到一组类上,AOP弥补了OOP的不足。
![](https://img.haomeiwen.com/i7686279/f5b51d48113650fb.png)
![](https://img.haomeiwen.com/i7686279/15c453dffe738d00.png)
上述三个小项目的pom.xml
![](https://img.haomeiwen.com/i7686279/5475a5a7aaf91d18.png)