2014-01-14 70 views
0

我會用一個例子來解釋情況。例如,我有一個設置類,我在那裏配置一些主機名,端口信息。像:Guice綁定到Spring依賴注入中的實例相等

public class Settings { 

@Inject 
private User user; 

在吉斯我可以處理這個問題:

private Injector injector; 

public void setInjector(){ 
injector=Guice.createInjector(new AbstractModule(){ 
@Override 
     protected void configure(){ 
       bind(User.class).toInstance(user); 
     } 
} 
} 

當有人使用@Inject User user然後我的代碼只給他我的情況下,我的意思是,只有一個用戶實例等。無論開發者創建用戶實例與注入。

我怎樣才能在春天實現這個可以有人解釋我?

需要注意的是:我只知道有一個@Autowired註解,但如何實現這一目標,是混亂:S

在此先感謝

BTW:我無法讓你提起這here

+0

你想讓Spring創建多您的用戶對象的實例嗎?如果是,請嘗試「@Inject」和「@Dependent」。我不認爲這就是你想要的。如果你想在同一個用戶的任何地方定義bean,可以在java配置類中或通過xml http://docs.spring.io/spring/docs/3.2.4.RELEASE/spring-framework-reference/ html/beans.html#beans-factory-scopes-prototype java配置需要@Configuration和一些在xml中進行掃描的設置。澄清你在找什麼,我可以幫忙。 – Scott

+0

我總是希望隨處配置相同的用戶對象,請您介紹一下@Configuration的更多信息,以及如何使用。我只是嘗試過,但無法做到。 –

回答

0

如果這是一個Web應用程序,您希望使用類似Spring安全性的東西,並使用會話範圍對象來控制提供給表單的用戶。

否則,你可以做,這樣的事情:

@Configuration 
public class XYZConfig { 

    @Bean(name="User") 
    public User getUser() { 
     return new User(); 
    } 
} 

在您的Spring應用程序上下文,你需要做的:

<context:component-scan base-package="com.xyz" /> 

春天開機有很多基本的樣本你可能需要做的事情:

https://spring.io/guides/gs/spring-boot/

+0

我會明天測試它,但我會將新用戶的代碼更改爲我配置的用戶實例。但在那之後,我該如何回顧這個用戶實例呢?與@Autowired註釋? –

+0

它應該和「@Inject一樣,Spring被視爲與」@Autowired「相同你真的不希望用戶對於登錄的每個人都是一樣的,但這應該讓你開始。至少,我打算用「@Scope(value =」session「)」來註釋getUser方法,但是你需要設置一個用戶服務和所有的東西,但是我可能會把你的問題分配給我。實際上,如果一個春天的web應用程序,使用彈簧安全。 – Scott

+0

它不是一個WEB應用程序!我應該添加一些特殊的東西給我的用戶類?像@Service或其他什麼? –