控制反转(IOC)和依赖注入(DI)在spring的环境下是等同的概念
-
控制反转是通过依赖注入实现的
-
依赖注入:容器负责创建对象和维护对象的依赖关系
无论xml配置、注解配置还是Java配置,都被称为配置元数据。
- 元数据:描述数据的数据。本身不具备任何可执行的能力,只能通过外界代码来对这些元数据进行解析后进行一些有意义操作
声明Bean的注解:
-
@Component:组件,没有明确的角色
-
@Service在业务逻辑层使用
-
@Repository在数据访问层使用
-
@Controller在展现层使用
注入Bean的注解(可在set方法或属性上)
-
@Autowired:Spring提供的注解
-
@Inject:JSR-330提供的注解
-
@Resource:JSR-250提供的注解
@Configuration:声明当前类是一个配置类(可能有0个或多个Bean的注解)
@Bean:声明在方法上,声明当前方法返回的是一个Bean
@ComoinentScan:自动扫包下所有使用声明bean的类,并注册为Bean
SpringBoot中全局配置使用Java配置(如数据库相关配置、MVC相关配置),业务Bean的配置使用注解配置(声明Bean注解)
AOP:面向切面,目的是为了解耦
- 在OOP中只能通过继承类和实现接口,来使代码的耦合度增强。继承是单继承,阻碍更多行为添加到一组类上,AOP你不了OOP的不足
spring支持AspectJ的注解式切面编程
-
@Aspect:声明是一个切面
-
@After、@Before、@Around定义建言(advice),可直接将拦截规则(切点PointCut)作为参数。如果切点想复用,可以使用@PointCut专门定义拦截规则,然后在三个方法中参数调用
-
其中符合条件的每一个被拦截处为连接点(JoinPoint)
Springboot的Java配置的需要@EnablleAspectJAutoProxy开启spring对AspectJ的支持