Spring注解
苍穹尘
文能提笔安天下,武能上"码"定乾坤。
展开
-
Spring注解系列七:组件注册-@Import
1、MainConfig2@Configuration@Import({Color.class, Red.class})public class MainConfig2 { /** * 给容器中注册组件; * 1)、包扫描+组件标注注解(@Controller/@Service/@Repository/@Component)[自己写的类] * 2)、@Bean[导入的第三方包里...原创 2019-05-08 12:18:12 · 212 阅读 · 0 评论 -
Spring注解系列五:组件注册-@Lazy
@Configurationpublic class MainConfig2 { /** * 懒加载: * 单实例bean:默认在容器启动的时候创建对象; * 懒加载:容器启动不创建对象。第一次使用(获取)Bean创建对象,并初始化; */ @Lazy @Bean("person") public Person person(){ System.out.pr...原创 2019-05-06 21:25:59 · 480 阅读 · 0 评论 -
Spring注解系列六:组件注册-@Conditional
1、创建配置类@Configurationpublic class MainConfig2 { /** * @Conditional({Condition}) : 按照一定的条件进行判断,满足条件给容器中注册bean * 如果系统是windows,给容器中注册("bill") * 如果是linux系统,给容器中注册("linus") */ @Conditional(Win...原创 2019-05-06 21:48:59 · 144 阅读 · 0 评论 -
Spring注解系列十九:自动装配-@Autowired
自动装配:Spring利用依赖注入(DI),完成对IOC容器中中各个组件的依赖关系赋值。@Autowired:自动注入(1)、默认优先按照类型去容器中找对应的组件:applicationContext.getBean(BookDao.class);找到就赋值。1、BookDao@Repositorypublic class BookDao { }2、BookService...原创 2019-05-25 12:01:44 · 326 阅读 · 0 评论 -
Spring缓存注解
一、简介 从3.1开始,Spring引入了对Cache的支持。其使用方法和原理都类似于Spring对事务管理的支持。Spring Cache是作用在方法上的,其核心思想是这样的:当我们在调用一个缓存方法时会把该方法参数和返回结果作为一个键值对存放在缓存中,等到下次利用同样的参数来调用该方法时将不再执行该方法,而是直接从缓存中获取结果进行返回。所以在使用Spring Cache的时候我们要保证我们...原创 2019-05-26 16:04:53 · 5510 阅读 · 0 评论 -
Spring注解系列二十:自动装配-@Resource
Spring还支持使用@Resource(JSR250)和@Inject(JSR330)[java规范的注解]一、@Resource: 可以和@Autowired一样实现自动装配功能;默认是按照组件名称进行装配的。 不能支持@Primary功能,不能支持@Autowired(reqiured=false)。1、BookDao@Repositorypublic class BookDao...原创 2019-06-02 12:27:50 · 381 阅读 · 0 评论 -
Spring注解系列二十一:自动装配-@Autowired的使用位置
@Autowired可以标注在构造器、参数、方法、属性上;都是从容器中获取参数组件的值。一、标注在方法位置:@Bean+方法参数;参数从容器中获取;默认不写@Autowired效果是一样的;都能自动装配。 1、Car@Componentpublic class Car { public Car(){ System.out.println("car constructor...")...原创 2019-06-02 13:02:27 · 2200 阅读 · 0 评论 -
Spring注解系列二十二:自动装配-Aware接口
自定义组件想要使用Spring容器底层的一些组件(ApplicationContext,BeanFactory,xxx);自定义组件实现xxxAware;在创建对象的时候,会调用接口规定的方法注入相关组件;Aware;把Spring底层一些组件注入到自定义的Bean中。xxxAware:功能使用xxxProcessor;如:ApplicationContextAware==》Applicati...原创 2019-06-02 14:19:01 · 336 阅读 · 0 评论 -
Spring注解系列二十三:自动装配-@Profile
Profile:Spring为我们提供的可以根据当前环境,动态的激活和切换一系列组件的功能。如:开发环境、测试环境、生产环境。 @Profile:指定组件在哪个环境的情况下才能被注册到容器中,不指定,任何环境下都能注册这个组件。 1)、加了环境标识的bean,只有这个环境被激活的时候才能注册到容器中。默认是default环境。 2)、写在配置类上,只有是指定的环境的时候,整个配置类里面...原创 2019-06-02 15:04:57 · 239 阅读 · 0 评论 -
Spring注解系列二十四:AOP原理-基本使用
AOP:【动态代理】指在程序运行期间动态的将某段代码切入到指定方法指定位置进行运行的编程方式。1、导入aop模块;Spring AOP:(spring-aspects)。2、定义一个业务逻辑类(MathCalculator);在业务逻辑运行的时候将日志进行打印(方法之前、方法运行结束、方法出现异常等等)。3、定义一个日志切面类(LogAspects):切面类里面的方法需要动态感知MathCa...原创 2019-06-02 15:51:46 · 195 阅读 · 0 评论 -
Spring注解系列二十五:AOP原理-源码解析
AOP原理:1、@EnableAspectJAutoProxy @Import(AspectJAutoProxyRegistrar.class):给容器中导入AspectJAutoProxyRegistrar。 利用AspectJAutoProxyRegistrar自定义给容器中注册bean;BeanDefinetion。 internalAutoProxyCreator=Annot...原创 2019-06-02 16:26:48 · 219 阅读 · 0 评论 -
Spring注解系列二十六:声明式事务
一、基本使用1、配置类 TxConfig 。主要有两点:(1)、@EnableTransactionManagement 开启基于注解的事务管理功能;相当于<tx:annotation-driven/>(2)、要配置事务管理器来控制事务;PlatformTransactionManager@EnableTransactionManagement //开启基于注解的事务管理功能...原创 2019-06-15 19:58:52 · 493 阅读 · 0 评论 -
Spring注解系列二十七:BeanFactoryPostProcessor原理
BeanPostProcessor:bean后置处理器,bean创建对象初始化前后进行拦截工作的;一、BeanFactoryPostProcessor:beanFactory的后置处理器;在BeanFactory标准初始化之后调用,来定制和修改BeanFactory的内容;所有的bean定义已经保存加载到beanFactory,但是bean的实例还未创建。1、自定义的 BeanFactory ...原创 2019-06-15 20:38:32 · 937 阅读 · 0 评论 -
Spring注解系列二十八:BeanDefinitionRegistryPostProcessor原理
一、BeanDefinitionRegistryPostProcessor 继承了 BeanFactoryPostProcessor 类。 postProcessBeanDefinitionRegistry(); 在所有bean定义信息将要被加载,bean实例还未创建的;优先于BeanFactoryPostProcessor执行;利用BeanDefinitionRegistryPostProc...原创 2019-06-16 10:23:35 · 3454 阅读 · 2 评论 -
Spring注解系列二十九:ApplicationListener原理
一、ApplicationListener:监听容器中发布的事件。事件驱动模型开发; public interface ApplicationListener<E extends ApplicationEvent>监听 ApplicationEvent 及其下面的子事件;1、监听器 MyApplicationListener 实现了 ApplicationListener 类,用来...原创 2019-06-16 11:33:21 · 5219 阅读 · 0 评论 -
Spring注解系列四:组件注册-@Scope
1、默认是单实例的。相当于加了注解@Scope(“singleton”)@Configurationpublic class MainConfig2 { @Bean("person") public Person person(){ System.out.println("给容器中添加Person...."); return new Person("张三", 25); }}...原创 2019-05-06 21:23:02 · 282 阅读 · 0 评论 -
Spring注解系列三:组件注册-@Filter
1、FilterType过滤规则@Configuration @ComponentScan(value="com.atguigu",includeFilters = { @Filter(type=FilterType.ANNOTATION,classes={Controller.class}), @Filter(type=FilterType.ASSIGNABLE_TYPE,class...原创 2019-05-06 21:03:08 · 941 阅读 · 1 评论 -
Spring注解系列八:组件注册-ImportSelector
1、MainConfig2@Configuration//ImportSelector:返回需要导入的组件的全类名数组;@Import(MyImportSelector.class)public class MainConfig2 {}2、自定义需要导入的组件MyImportSelector 。实现ImportSelector 接口//自定义逻辑返回需要导入的组件public ...原创 2019-05-08 12:33:20 · 267 阅读 · 0 评论 -
Spring注解系列九:组件注册-ImportBeanDefinitionRegistrar
1、MainConfig2@Configuration//ImportBeanDefinitionRegistrar:手动注册bean到容器中@Import({Color.class,Red.class,MyImportSelector.class,MyImportBeanDefinitionRegistrar.class})public class MainConfig2 {}2...原创 2019-05-08 12:47:39 · 655 阅读 · 0 评论 -
Spring注解系列十:组件注册-FactoryBean
1、MainConfig2@Configurationpublic class MainConfig2 { /** * 给容器中注册组件; * 1)、包扫描+组件标注注解(@Controller/@Service/@Repository/@Component)[自己写的类] * 2)、@Bean[导入的第三方包里面的组件] * 3)、@Import[快速给容器中导入一个组件...原创 2019-05-08 13:01:35 · 344 阅读 · 0 评论 -
Spring注解系列十一:生命周期-bean
1、MainConfigOfLifeCycle/** * bean的生命周期: * bean创建---初始化----销毁的过程 * 容器管理bean的生命周期; * 我们可以自定义初始化和销毁方法;容器在bean进行到当前生命周期的时候来调用我们自定义的初始化和销毁方法 * * 构造(对象创建) * 单实例:在容器启动的时候创建对象 * 多实例:在每次获取的时候创建...原创 2019-05-08 13:26:41 · 170 阅读 · 0 评论 -
Spring注解系列十二:生命周期-InitializingBean和DisposableBean
1、MainConfigOfLifeCycle/** * 2)、通过让Bean实现InitializingBean(定义初始化逻辑); * 实现DisposableBean(定义销毁逻辑); */@ComponentScan("com.atguigu.bean")@Configurationpublic class MainConfigOfLi...原创 2019-05-08 13:36:49 · 568 阅读 · 0 评论 -
Spring注解系列十三:生命周期-@PostConstruct和@PreDestroy
1、MainConfigOfLifeCycle/** * 3)、可以使用JSR250; * @PostConstruct:在bean创建完成并且属性赋值完成;来执行初始化方法 * @PreDestroy:在容器销毁bean之前通知我们进行清理工作 */@ComponentScan("com.atguigu.bean")@Configurationpublic class M...原创 2019-05-08 13:46:10 · 449 阅读 · 0 评论 -
Spring注解系列十四:生命周期-BeanPostProcessor
1、MainConfigOfLifeCycle/** * 4)、BeanPostProcessor【interface】:bean的后置处理器; * 在bean初始化前后进行一些处理工作; * postProcessBeforeInitialization:在初始化之前工作 * postProcessAfterInitialization:在初始化之后工作 */@Comp...原创 2019-05-08 13:56:53 · 245 阅读 · 0 评论 -
Spring注解系列十五:生命周期-BeanPostProcessor原理
1、AbstractAutowireCapableBeanFactory//在bean初始化之前给bean进行属性赋值protected void populateBean(String beanName, RootBeanDefinition mbd, BeanWrapper bw) { PropertyValues pvs = mbd.getPropertyValues(); ...原创 2019-05-08 14:26:27 · 182 阅读 · 0 评论 -
Spring注解系列十六:生命周期-BeanPostProcessor使用
Spring底层对 BeanPostProcessor 的使用:bean赋值,注入其他组件,@Autowired,生命周期注解功能,@Async等等都是利用 BeanPostProcessor来完成的。1、BeanPostProcessor2、ApplicationContextAwareProcessor。可以帮我们给组件中注入IOC容器public class Dog impleme...原创 2019-05-08 14:59:15 · 620 阅读 · 0 评论 -
Spring注解系列十七:属性赋值-@Value
1、MainConfigOfPropertyValues@Configurationpublic class MainConfigOfPropertyValues { @Bean public Person person(){ return new Person(); }}2、创建组件Person<bean id="person" class="com.atguig...原创 2019-05-08 15:14:04 · 558 阅读 · 0 评论 -
Spring注解系列十八:属性赋值-@PropertySource
1、创建配置文件person.propertiesperson.name=李四person.age=202、使用@PropertySource读取外部配置文件中的k/v保存到运行的环境变量中;加载完外部的配置文件以后使用${}取出配置文件的值。@PropertySource是可重复注解。也可以用@PropertySources注解指定多个PropertySource加载多个配置文件。&l...原创 2019-05-08 15:29:44 · 616 阅读 · 0 评论 -
@Value取值为NULL
@Value("${tag}")private String tagValue;但是取值时,有时这个tagvalue为NULL,可能原因有:1、使用static或final修饰了tagValue,如下: private static String tagValue; //错误 private final String tagValue; //错误2、类没有加上@Compo...原创 2019-05-09 11:13:41 · 4573 阅读 · 0 评论 -
Spring注解系列一:组件注册-@Configuration和@Bean
1、引入依赖<dependency> <groupId>org.springframework</groupId> <artifactId>spring-context</artifactId> <version>4.3.12.RELEASE</version></dependency>...原创 2019-05-06 19:56:17 · 367 阅读 · 0 评论 -
Spring注解系列二:组件注册-@ComponentScan
1、在配置类中配置包扫描<!-- 包扫描、只要标注了@Controller、@Service、@Repository,@Component --><context:component-scan base-package="com.atguigu"></context:component-scan>@Configuration //告诉Spring这是一...原创 2019-05-06 20:47:56 · 469 阅读 · 0 评论 -
Spring注解系列三十:@EventListener原理
一、@EventListener@Servicepublic class UserService { @EventListener(classes={ApplicationEvent.class}) public void listen(ApplicationEvent event){ System.out.println("UserService。。监听到的事件:"+event)...原创 2019-06-16 11:55:38 · 8801 阅读 · 0 评论