0
下面的代碼看看:@Autowire使用單VS原型
@Controller
public class HomeController
{
@Autowired
private FacadeRemote fr;
// code omitted
}
|
@Component("user-details")
public class CustomUserServiceDetails implements UserDetailsService
{
@Autowired
private FacadeRemote fr;
@Override
public UserDetails loadUserByUsername(String email)
throws UsernameNotFoundException
{
// omitted
}
}
配置:
<!-- JNDI Properties -->
<util:properties id="jndiProps">
<beans:prop key="java.naming.factory.initial">org.jboss.naming.remote.client.InitialContextFactory</beans:prop>
<beans:prop key="java.naming.factory.url.pkgs">org.jboss.ejb.client.naming</beans:prop>
<beans:prop key="java.naming.provider.url">remote://127.0.0.1:4447</beans:prop>
<beans:prop key="java.naming.client.ejb.context">true</beans:prop>
<beans:prop key="boss.naming.client.connect.options.org.xnio.Options.SASL_POLICY_NOPLAINTEXT">false</beans:prop>
</util:properties>
<!-- EJB look up -->
<jee:remote-slsb id="ns" jndi-name="Layer//myejb!com.uni.ag.FacadeRemote"
environment-ref="jndiProps" resource-ref="false"
business-interface="com.uni.ag.FacadeRemote"
lookup-home-on-startup="true">
</jee:remote-slsb>
在下面的例子中如何@Autowire工作:
是使用FacadeRemote的同一個實例的兩個班?
一般來說,我怎樣才能學習@線程安全相關的@Autowire行爲?
因此默認情況下屬於兩個不同類的兩個實例變量將引用同一個對象(singleto策略)。如果我希望他們引用兩個不同的對象,我將不得不指定原型策略? – GionJh
我不認爲Spring會允許你爲這種bean設置'prototype'策略。請記住,遠程EJB只是一個業務代表。 (請參閱:http://docs.spring.io/spring/docs/4.0.0.RELEASE/spring-framework-reference/htmlsingle/#ejb-introduction)。這裏(http://docs.spring.io/spring/docs/4.0.0.RELEASE/spring-framework-reference/htmlsingle/#beans-factory-scopes)你可以找到關於Spring範圍的所有信息。 – Arek