And if they are, How to stop that?
			
			3336 次
		
2 回答
            9        
        
		
这取决于被注释scope的对象。bean如果它是有范围的singleton,那么它在 Spring 中的任何地方都将使用相同的实例ApplicationContext。如果它是 scope prototype,那么将在每个位置使用一个新实例。
<bean id="id" class="some.NewObject" scope="prototype"/>
<bean id="id2" class="some.AnotherNewObject" scope="singleton"/>
这些 bean 定义加上以下代码将有助于说明。
class Class1 {
    @Autowired
    some.AnotherNewObject obj;
}
class Class2 {
    @Autowired
    some.AnotherNewObject obj;
}
class Class3 {
    @Autowired
    some.NewObject obj;
}
class Class4 {
    @Autowired
    some.NewObject obj;
}
Class1并将Class2收到对同一实例的引用some.AnotherNewObject。  Class3并将Class4收到对不同实例的引用some.NewObject。
如果您使用注解和包扫描进行配置,那么您可以使用@Scope注解来指定您的范围:
@Component
@Scope("prototype")
class NewObject {
    ...
}
@Component
@Scope("singleton")
class AnotherNewObject {
    ...
}
于 2012-08-14T13:09:59.720   回答
    
    
            3        
        
		
@Service
@Scope("prototype")
public class CustomerService 
{}
于 2012-08-14T13:17:31.777   回答