如何在第三方库方法中包含Spring上下文?

时间:2017-09-18 09:03:33

标签: java spring spring-boot autowired spring-bean

使用 spring boot 时遇到问题。这个代码示例:

@Component
class Bat extends OtherLibrary{

    @Autowired
    public Life var;

    @PostConstruct 
    public void registerBat(){
       OtherLibraryApi api = new otherLibraryApi()
       api.register(new Bat());
    } 

    @Override
    public void onResponce(ResponceVal respVal){
         Life sum = respVal.getLife().add(var);
    }
}

Class Bat 扩展第三方库类 OtherLibrary 。 Thrid party库有抽象方法 onResponce ,这个库在某种方法上异步调用。问题是,当调用 onResponce 方法时,它不包含弹簧上下文,因此方法 onResponce 中的自动连接字段 var 具有空值。

如何在第三方库方法中包含弹簧上下文以使用自动装配的字段?

1 个答案:

答案 0 :(得分:1)

api.register(new Bat()); 

这绝对是错误的(从Spring的角度来看)!我不确定如何传递this代替new Bat()?这样,Bat类的Spring托管版本将被注册。

e.g。

api.register(this);