spring boot普通类调用bean实现
2017-08-04 08:54
337 查看
我们知道如果我们要在一个类使用spring提供的bean对象,我们需要把这个类注入到spring容器中,交给spring容器进行管理,但是在实际当中,我们往往会碰到在一个普通的Java类中,想直接使用spring提供的其他对象或者说有一些不需要交给spring管理,但是需要用到spring里的一些对象。如果这是spring框架的独立应用程序,我们通过
这样的方式就可以很轻易的获取我们所需要的对象。
但是往往我们所做的都是Web Application,这时我们启动spring容器是通过在web.xml文件中配置,这样就不适合使用上面的方式在普通类去获取对象了,因为这样做就相当于加载了两次spring容器,而我们想是否可以通过在启动web服务器的时候,就把Application放在某一个类中,我们通过这个类在获取,这样就可以在普通类获取spring bean对象了,让我们接着往下看。
普通类调用Spring bean对象:请大家自行查阅在这里不在累述。
spring boot普通类调用bean实现
在Spring Boot可以扫描的包下
假设我们编写的工具类为SpringUtil。
如果我们编写的SpringUtil在Spring Boot可以扫描的包下或者使用@ComponentScan引入自定义的包了,那么原理很简单,只需要使得SpringUtil实现接口:ApplicationContextAware,然后加上@Component 注解即可,具体编码如下:
启动应用,查看控制台的打印信息是否有:
不在Spring Boot的扫描包下方式一
这种情况处理起来也很简单,先编写SpringUtil类,同样需要实现接口:ApplicationContextAware,具体编码如下:
之后这一步才是关键,使用@Bean注解,在App.java类中将SpringUtil注解进来,代码如下:
不在Spring Boot的扫描包下方式二
代码基本和上面都是相同的,主要是在App.java中使用@Import进行导入。
而且在SpringUtil是不需要添加@Component注解
说明以上3中方式都生效了,这3中方式根据实际情况选择一种方式就可以了。
那么这样子在普通类既可以使用:
SpringUtil.getBean() 获取到Spring IOC容器中的bean。
当然也可以在Spring管理的类中使用:
@Resouce或者@Autowired 进行注入使用,当然我们这个类的核心是普通类可以调用spring的bean进行使用了,是不是很神奇呢。
但是往往我们所做的都是Web Application,这时我们启动spring容器是通过在web.xml文件中配置,这样就不适合使用上面的方式在普通类去获取对象了,因为这样做就相当于加载了两次spring容器,而我们想是否可以通过在启动web服务器的时候,就把Application放在某一个类中,我们通过这个类在获取,这样就可以在普通类获取spring bean对象了,让我们接着往下看。
普通类调用Spring bean对象:请大家自行查阅在这里不在累述。
spring boot普通类调用bean实现
在Spring Boot可以扫描的包下
假设我们编写的工具类为SpringUtil。
如果我们编写的SpringUtil在Spring Boot可以扫描的包下或者使用@ComponentScan引入自定义的包了,那么原理很简单,只需要使得SpringUtil实现接口:ApplicationContextAware,然后加上@Component 注解即可,具体编码如下:
这种情况处理起来也很简单,先编写SpringUtil类,同样需要实现接口:ApplicationContextAware,具体编码如下:
代码基本和上面都是相同的,主要是在App.java中使用@Import进行导入。
而且在SpringUtil是不需要添加@Component注解
那么这样子在普通类既可以使用:
SpringUtil.getBean() 获取到Spring IOC容器中的bean。
当然也可以在Spring管理的类中使用:
@Resouce或者@Autowired 进行注入使用,当然我们这个类的核心是普通类可以调用spring的bean进行使用了,是不是很神奇呢。
相关文章推荐
- 8. Spring Boot如何实现普通类调用bean
- Spring Boot的普通类调用Bean对象
- SpringBoot学习(2)-SpringBoot中其他普通类调用Spring管理的Service、dao等bean
- 170630、springboot编程之普通类中调用spring管理的bean对象
- 17、Spring Boot普通类调用bean【从零开始学Spring Boot】
- 普通java类调用spring注解bean
- 基于HttpClient实现RPC远程服务调用【SpringBoot项目】
- 普通类调用Spring bean对象
- 普通类调用Spring的Bean第二版
- 17、Spring Boot普通类调用bean【从零开始学Spring Boot】
- SpringBoot 之 普通类获取Spring容器中的bean
- 17、Spring Boot普通类调用bean【从零开始学Spring Boot】
- SpringBoot使用多线程实现异步调用
- (17)Spring Boot普通类调用bean【从零开始学Spring Boot】
- SpringCloud(一):用springboot实现简单服务调用
- Spring Boot使用@Async实现异步调用
- 普通类调用Spring中的Bean
- Spring Boot使用@Async实现异步调用:自定义线程池
- spring-boot实战【10】【转】:Spring Boot中使用@Async实现异步调用
- Spring Boot使用@Async实现异步调用:自定义线程池