Spring注解解析
文章平均质量分 52
Spring注解的使用和解析
一白.
菜鸟中的菜鸟
展开
-
Spring组件注册注解之@Configuration @Bean
在往Spring IOC容器添加组件的时候,一般XML声明的方式如下:<?xml version="1.0" encoding="UTF-8"?><beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instanc...原创 2019-01-05 20:24:49 · 386 阅读 · 1 评论 -
Spring组件注册注解之@ComponentScan,@ComponentScans
目录1. 说明2. @ComponentScan注解属性3. @ComponentScan过滤规则说明4. 自定义扫描过滤规则5. @ComponentScan原理分析6.@ComponentScans1. 说明与ComponentScan注解相对应的XML配置就是<context:component-scan/>, 根据指定的配置自动扫描pac...原创 2019-01-05 21:35:26 · 49838 阅读 · 3 评论 -
Spring组件注册注解之@Scope
目录1. 说明2. 注解说明3. 注解用法4. 组件依赖组件1. 说明@Scope是指定IOC组件的作用域,是单例存在的还是多例的等等,对应的XML如下:<?xml version="1.0" encoding="UTF-8"?><beans xmlns="http://www.springframework.org/schema/beans" ...原创 2019-01-07 09:28:20 · 222 阅读 · 1 评论 -
Spring组件注册注解之@Lazy
目录1. 说明2. 注解说明3. 注解分析1. 说明Spring主键的初始化时机可以是IOC容器初始化的时候一起初始化,也可以是被请求的时候才初始化,对应的XML配置如下:<?xml version="1.0" encoding="UTF-8"?><beans xmlns="http://www.springframework.org/schem...原创 2019-01-07 12:58:55 · 1145 阅读 · 1 评论 -
Spring组件注册注解之@Conditional
1. 说明IOC在容器初始化的时候,可以根据自定义条件来判断是否需要加载组件;2. 注解说明@Conditional可以定义在类和方法上,value值是Condition接口Class文件数组;当定义在类上的时候,该配置类下的所有方法配置都需要满足类上的条件定义才会创建组件,当被定义在方法的时候,条件满足才会创建组件;@Target({ElementType.TYPE, Elem...原创 2019-01-08 09:06:06 · 465 阅读 · 1 评论 -
Spring组件注册注解之@Import
目录1. 说明2. 注解说明3. 代码演示4. 注解分析1. 说明Spring可以通过@Import注解导入外部组件到IOC容器中,对应的XML配置如下:<?xml version="1.0" encoding="UTF-8"?><beans xmlns="http://www.springframework.org/schema/beans" ...原创 2019-01-09 00:35:15 · 415 阅读 · 1 评论 -
Spring组件注册-FactoryBean
目录1. 说明2. 代码演示3. 原理分析1. 说明Spring IOC容器可以通过实现FactoryBean来创建组件并加载到容器中;public interface FactoryBean<T> { //具体的创建对象的方法 T getObject() throws Exception; //创建的组件所属说明类型,类似contex...原创 2019-01-15 23:48:13 · 382 阅读 · 1 评论 -
Spring生命周期注解之@Bean指定初始化和销毁方法
目录1. 注解说明2. 调用时机1. 注解说明在xml配置中,可以使用如下方法指定初始化和销毁方法<?xml version="1.0" encoding="UTF-8"?><beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org...原创 2019-01-17 22:11:16 · 1186 阅读 · 1 评论 -
Spring生命周期-InitializingBean,DisposableBean
IOC容器的组件除通过声明自定义初始化和销毁方法外,可以实现InitializingBean接口和DisposableBean接口,在实现内中完成初始化和销毁的逻辑;InitializingBean的接口定义如下:package org.springframework.beans.factory;public interface InitializingBean { /** ...原创 2019-01-17 22:46:34 · 1139 阅读 · 1 评论 -
Spring生命周期注解之@PostConstruct,@PreDestroy
目录1. 注解说明2. 调用过程3. 调用分析1. 注解说明@PostConstruct,@PreDestroy是Java规范JSR-250引入的注解,定义了对象的创建和销毁工作,同一期规范中还有注解@Resource,Spring也支持了这些注解;在Spring中,@PostConstruct,@PreDestroy注解的解析是通过BeanPostProcessor实现的...原创 2019-01-17 23:53:00 · 4309 阅读 · 1 评论 -
Spring生命周期之BeanPostProcessor
BeanPostProcessor定义为在创建组件时,执行组件的初始化方法(InitializingBean的实现类或者init-method指定的初始化方法)的前后做一些事情,可以是对组件的一些检查,或者对组件进行包装,或者创建组件的代理;BeanPostProcessor接口定义如下:package org.springframework.beans.factory.conf...原创 2019-01-18 00:09:51 · 289 阅读 · 1 评论 -
Spring周期之BeanPostProcessor的应用
Spring底层本身也在许多地方用到了BeanPostProcessor机制,在组件创建完并且属性赋值完成,并且在执行初始化的前后对Bean的一些封装等,BeanPostProcessor的继承关系图如下:1. ApplicationContextAwareProcessor: 为组件注入IOC容器:@Overridepublic Object postProcessB...原创 2019-01-19 11:06:24 · 304 阅读 · 1 评论 -
Spring属性赋值注解之@Value @PropertySource @PropertySources
目录1. 说明2. 注解使用3. 注解解析4. @PropertySources注解1. 说明当组件的属性通过配置文件的方式赋值的时候,xml配置的方法如下:<?xml version="1.0" encoding="UTF-8"?><beans xmlns="http://www.springframework.org/schema/beans"...原创 2019-01-27 13:05:39 · 2554 阅读 · 1 评论 -
Spring自动装配注解之@Autowired @Qualifier @Primary
目录1. 说明2. 注入规则3. 注解分析1. 说明Spring使用依赖注入,完成对IOC容器中各个组件的依赖注入,@Autowired就是Spring提供对其他组件注入的注解,@Autowired的定义如下:@Target({ElementType.CONSTRUCTOR, ElementType.METHOD, ElementType.PARAMETER, Eleme...原创 2019-01-21 23:55:09 · 600 阅读 · 1 评论 -
Spring自动装配注解之@Resource @Inject
目录1. 说明2. 注入规则3. 注解分析1. 说明@Resource和@Inject在Spring中也可以达到组件依赖注入的功能,但跟@Autowired不同,@Autowired是Spring提供的注解,而@Resource是JSR250里面定义的,@Inject是JSR330里面定义的;2. 注入规则@Resource: 可以和@Autowired一样...原创 2019-01-26 18:41:48 · 936 阅读 · 1 评论 -
Spring自动装配之方法、构造器位置的自动注入
目录1. 注解定义2. 注解使用3. 注入位置推荐1. 注解定义@Autowired的定义信息如下:@Target({ElementType.CONSTRUCTOR, ElementType.METHOD, ElementType.PARAMETER, ElementType.FIELD, ElementType.ANNOTATION_TYPE})@Retenti...原创 2019-01-27 10:06:11 · 4074 阅读 · 1 评论 -
Spring自动装配注解之@Profile
目录1. 说明2. 注解使用3. 设置环境4. 注解说明1. 说明Spring为我们提供的可以根据当前环境,动态的激活和切换一系列组件的功能,该功能就是通过@Profile来实现;@Profile的定义信息如下package org.springframework.context.annotation;import java.lang.annotation.D...原创 2019-01-27 13:06:10 · 539 阅读 · 1 评论 -
Spring AOP基本使用
1. 说明AOP能够给组件创建代理类,在目标类的方法的前后,异常等位置织入自定义代码,到达方法增强的目的;2. 步骤2.1 编写业务类;2.2编写业务切面类,在目标业务类的目标方法的适当位置(方法之前、方法运行结束、方法出现异常)编写自定义代码; 通知方法: 前置通知(@Before):在目标方法运行之前运行 ...原创 2019-01-27 22:16:15 · 223 阅读 · 1 评论 -
Spring AOP原理之@EnableAspectJAutoProxy
目录1. 说明2. 原理1. 说明@EnableAspectJAutoProxy标记在主配置类上,表示开启基于注解的aop模式;@EnableAspectJAutoProxy通过@import导入AspectJAutoProxyRegistrar,AspectJAutoProxyRegistrar又继承ImportBeanDefinitionRegistrar导入Annota...原创 2019-01-27 22:48:59 · 3238 阅读 · 1 评论 -
Spring AOP原理之AnnotationAwareAspectJAutoProxyCreator分析
目录1. 说明2.AnnotationAwareAspectJAutoProxyCreator的继承关系3. 关键类分析1. 说明@EnableAspectJAutoProxy通过@Import导入AspectJAutoProxyRegistrar.class,然后AspectJAutoProxyRegistrar是ImportBeanDefinitionRegistr...原创 2019-01-28 23:42:01 · 4063 阅读 · 1 评论 -
Spring AOP原理之注册AnnotationAwareAspectJAutoProxyCreator
目录1. 说明2. BeanPostProcessor的创建过程3.创建AnnotationAwareAspectJAutoProxyCreator4. 注册AnnotationAwareAspectJAutoProxyCreator1. 说明AnnotationAwareAspectJAutoProxyCreator作为BeanPostProcessor,在IOC容器...原创 2019-01-30 22:47:02 · 437 阅读 · 1 评论 -
Spring AOP原理之AnnotationAwareAspectJAutoProxyCreator增强目标类生成代理
目录1. 说明2. 目标类创建过程3. 目标类创建之前尝试生成代理4. 目标类被增强生成代理类1. 说明AnnotationAwareAspectJAutoProxyCreator作为InstantiationAwareBeanPostProcessor和BeanPostProcessor子类,在普通组件被创建的时候,在创建之前会调用InstantiationAwareBe...原创 2019-01-30 23:07:34 · 593 阅读 · 1 评论 -
Spring AOP原理之代理组件执行目标方法
目录1. 说明2. 目标方法执行3. 总结1. 说明在IOC容器中获取目标组件的时候,实际获取到的是增强后的代理组件,执行目标方法的时候,也是由此代理组件去执行;public static void main(String[] args) throws Exception { AnnotationConfigApplicationContext applicationC...原创 2019-01-31 23:20:01 · 951 阅读 · 1 评论 -
Spring声明式事务注解之环境搭建
1. 环境搭建步骤导入依赖,数据源、数据库驱动和Spring-jdbc模块; 编写测试代码,操作数据库 给方法标记 @Transactional,表示是一个事务方法; 使用@EnableTransactionManagement 开启基于注解的事务管理功能; 配置事务管理器来控制事务; 2. 测试代码2.1 测试Beanpackage com.yibai.sprin...原创 2019-02-15 23:29:15 · 1164 阅读 · 1 评论 -
Spring声明式事务注解之@EnableTransactionManagement
目录1. 说明2. 原理分析3.AutoProxyRegistrar分析4.ProxyTransactionManagementConfiguration分析1. 说明@EnableTransactionManagement声明在主配置类上,表示开启声明式事务,其原理是通过@Import导入TransactionManagementConfigurationSele...原创 2019-02-19 18:36:15 · 12860 阅读 · 0 评论 -
Spring声明式事务注解之事务方法的执行
目录1. 说明2. 执行事务方法3. 总结1. 说明事务方法执行,原理跟AOP是一样的,事务类被增强,然后执行事务方法的时候,其实是增强类执行目标方法和一个拦截器链,这里的拦截器是TransactionInterceptor,然后在拦截器TransactionInterceptor里面对目标方法进行事务管理;2. 执行事务方法2.1 事务方法执行的调用链如下2.2...原创 2019-02-19 23:10:49 · 635 阅读 · 0 评论