2016-08-04 36 views
0

我想知道如何在java對象中的Autowire sprig bean不受Spring應用程序上下文管理。 我創建了一個類的實例,但隨後的自動裝配對象爲空。例如。春天非託管對象的自動裝配

@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豆即將爲空內FirstServiceObject

我與已經給了所有可能的解決方案檢查並沒有一個似乎是爲我工作。

+0

你註釋@Component來你BaseFactory? – emotionlessbananas

+0

爲什麼你甚至使用工廠,這隻會使事情變得複雜。爲什麼不直接將服務直接注入需要它的類?儘管如此,讓Spring管理服務,不要自己創建實例。 –

+0

@Asterisk是的我試過了,也沒有爲我工作。 –

回答

0

你不能

如果你想自動連接春豆類,這個類需要由Spring管理。

0

如果應用程序正在使用的網絡環境,然後嘗試在下面的帖子給出這個

SpringBeanAutowiringSupport.processInjectionBasedOnCurrentContext(this); 
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"); 
} 
} 
相關問題