重新学习Spring
凤凰FH
选择即是承载,努力不过坚持,价值在于创造,快乐源于内心。
展开
-
【八】Bean工厂后置处理器BeanFactoryPostProcessor
和BeanPostProcessor类似,不过这个是在BeanFactory实例化之后的后置处理器,同样可以通过@Bean声明,方法标为static,如下两图:一个典型的作用就是,可以把在spring.factories中注册的监听器去掉了,把监听中的方法挪到这个PostProcessor中,就可以在容器初始化之前进行配置,比如注册Scope、编程添加BeanPostProcessor...原创 2019-10-17 14:30:00 · 295 阅读 · 0 评论 -
【七】Bean后置处理器 BeanPostProcessor
通过扩展BeanPostProcessor,可以参与Spring框架初始化过程。创建类PojoBeanPostProcessor,代码如下图:在BeanConfig中配置它为Bean,这个类型的Bean会在早期进行初始化并参与其它Bean的生命周期,代码如下图:启动应用,控制台打印如下图:看到后置处理器的日志打印在afterPropertiesSet之后。注意这个Bea...原创 2019-10-17 14:06:07 · 162 阅读 · 0 评论 -
【六】短生命周期的Bean注入到长生命周期的Bean问题
回到之前的simpleThreadScope代码,配置如下图:写一个CommandLineRunner,如下图:启动应用,控制台打印如下图:显然,两个线程打印的ServiceA是一模一样的,包括里面的PojoBean实例也是一样的,这是与我们想要的结果不同的,因为PojoBean定义的Scope是simpleThreadScope,也就是每个线程创建一个。修改一下Poj...原创 2019-10-17 10:26:41 · 203 阅读 · 0 评论 -
【五】Bean方法注入,@Lookup
在Spring应用中,大部分Bean是单例的,prototype的Bean很少,因为prototype的Bean一般我们自己直接new也可以。但是如果我们想要在singleton Bean中的方法使用prototype Bean,应该怎么写?方法一:实现ApplicationContextAware,通过ApplicationContext获取prototype Bean,这种比较简单也比较清...原创 2019-10-17 09:58:52 · 185 阅读 · 0 评论 -
【四】注册SimpleThreadScope,自定义Scope
Spring框架里面还有一个没有注册的Scope,SimpleThreadScope,通过这个学习下怎么自定义Scope。把BeanConfig中PojoBean的配置改成@Scope("simpleThreadScope"),启动应用程序报错,如下两图:原来是这个Scope没有注册,创建一个ApplicationListener用来注册simpleThreadScope,监听Appl...原创 2019-10-16 15:21:51 · 799 阅读 · 0 评论 -
【三】Bean的基本scope
Scope表示Bean的范围,用来定义Bean在什么范围不需要重新创建,超出了范围要重新创建。默认是singleton,在一个Spring容器中存在一个实例。写两个Service,如下图:在BeanConfig类中配置它们,都传递pojoBean做为构造参数,如下图:启动应用,控制台打印如下:可以看到,PojoBean只实例了一次,并且ServiceA和Servic...原创 2019-10-16 15:05:22 · 229 阅读 · 0 评论 -
【二】Bean的基本生命周期
Spring是通过配置来管理Bean的,现在主流的配置方式已经不是xml了,而是推崇无xml配置,就是使用Java注解配置Bean。首先创建一个BeanConfig类,在这个类上面注解@Configuration,如下图:上图配置了一个PojoBean类,这个类我是这么写的,如下图:这就可以了,然后直接运行主程序,控制台打印如下图:通过打印的日志,可以看出来PojoBean...原创 2019-10-16 14:48:04 · 104 阅读 · 0 评论 -
【一】创建Spring Boot应用
使用开发工具Idea,菜单栏选择File->New->Project,在弹出框中选择Spring Initializr,如下图:点击下一步,输入Group、Artifact,其它可以不动,如下图:点击下一步,选择依赖。在Developer Tools中选择Lombok(可以减少很多代码量的工具),Spring Boot版本使用默认值,如下图:点击下一步,创建一个...原创 2019-10-16 14:25:42 · 123 阅读 · 0 评论