使用Spring上下文获取容器内对象

在Spring应用中,@Autowired注解用于从容器中获取单例对象,但当需要在如TaskThread类的new实例中使用@Service或@Repository等对象时,直接使用@Autowired会无效。为解决此问题,可以通过Spring上下文来获取这些单例对象的实例。文章介绍了如何在非Spring管理的类中,利用Spring上下文获取所需对象,同时提到了通过上下文获取系统配置变量的方法。
摘要由CSDN通过智能技术生成

在spring应用中,经常使用@Component、@Controller、@Service注解,与之匹配的还有一个更加常见的@Autowired注解。前者的作用在于让spring容器来管理这个类,而后者的作用就是从spring容器中获取这个类的对象,更关键的是,这个对象是单例的。

为了使用@Autowired获取某个类的单例,必须将当前类也交给spring容器管理,即使用@Component等注解标识这个类。但是这样会出现一个问题,就是当前类的调用也必须通过注解来获得。那么,new就无法使用了。举个例子,我有一个TaskThread类,每次发布任务时就会启动了一个TaskThread类,这里必须通过new来实例化对象,但是TaskThread类中又需要用到service层、dao层的对象,而在这时候这些对象是不能被@Autowired的,因为这样做没有效果,所有的@Autowired对象都会是null。那么应该怎么办呢?

通过spring上下文来获取单例对象的实例!
一种简单的获取spring上下文的方式是通过spring启动类来获取,下面看实现:

// spring应用启动类
@SpringBootApplication
public class WebTestApplication extends SpringBootServletInitializer {


  public static void main(String[] args) {
    //SpringApplication.run(WebTestApplication.class, ar
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值