如果他们是,如何制止?
答案 0 :(得分:9)
这取决于被注释的scope
的{{1}}。如果它是作用域bean
,则它将在Spring singleton
中的任何位置使用相同的实例。如果它是范围ApplicationContext
,则将在每个位置使用新实例。
prototype
这些bean定义与以下代码相结合将有助于说明。
<bean id="id" class="some.NewObject" scope="prototype"/>
<bean id="id2" class="some.AnotherNewObject" scope="singleton"/>
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
答案 1 :(得分:4)
@Service
@Scope("prototype")
public class CustomerService
{}