2014-01-14 71 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或其他什么? –