我想知道如何在java对象中自动装配不受spring应用程序上下文管理的sprig bean。 我创建了一个类的实例,但后续的自动装配对象为null。例如。
@Service
Class BaseFactory {
public BaseObject getObject(String type ){
BaseObject object = null;
if(type.equalsIgnoreCase("order")){
object = new FirstServiceObject();
}
else if(type.equalsIgnoreCase("payment")){
object = new SecondServiceObject();
}
return object;
}
服务类
@Service
@Configurable
public class FirstServiceObject{
@Autowired
UserRepository mUserRepository;// coming as null
@Autowired
UserHelper userHelper;//coming as null
public getDownloadedData(String userName, String b){
User user = userHelper.findUser(userName); //null pointer exception
}
}
我从上面调用上面的助手类。
public class SomeHelper {
@Autowired
BaseFactory baseFactory;
public processUser(){
BaseObject object = baseFactory.getObject("order");
object.getDownloadedData("sunil","someString")
}
所有Autowired bean在FirstServiceObject中都为null
我已经检查了所有可能的解决方案,似乎没有一个对我有用。
答案 0 :(得分:1)
以下帖子中给出的答案解决了这个问题。 How to inject dependencies into a self-instantiated object in Spring? 这就是我所做的
public class SomeHelper {
@Autowired
BaseFactory baseFactory;
@Autowired
AutowireCapableBeanFactory beanFactory;
public processUser(){
BaseObject object = baseFactory.getObject("order");
beanFactory.autowireBean(object);
object.getDownloadedData("sunil","someString");
}
}
答案 1 :(得分:0)
你不能
如果你想在你的班级中使用Autowired spring bean,那么这个类需要由Spring管理。
答案 2 :(得分:0)
如果您的应用程序正在使用Web上下文,请尝试此
SpringBeanAutowiringSupport.processInjectionBasedOnCurrentContext(this);