如果他們是,如何阻止?Spring的@Autowired對象是否被重用?
回答
這取決於bean
被註釋的scope
。如果它的範圍是singleton
,那麼它將在Spring ApplicationContext
的每個地方使用相同的實例。如果它的範圍是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 {
...
}
好,但它如何改變註解的範圍? – AhHatem 2012-08-14 13:16:05
你是什麼意思,你可以提供更多的上下文嗎?您不能使用'@ Autowired'註釋來更改bean的範圍。 – 2012-08-14 13:17:52
但是你可以用bean上的註解本身來改變作用域 – NimChimpsky 2012-08-14 13:20:19
@Service
@Scope("prototype")
public class CustomerService
{}
我不明白爲什麼原型/單例.//沒有被Spring聲明爲枚舉。 – Eugene 2012-08-14 17:38:32
@Eugene出於這個原因:http://stackoverflow.com/a/11741450/106261 – NimChimpsky 2012-08-14 19:31:44
我同意這個帖子,其中答案談論一個控制器內的頁面的價值,但在這裏我們可以使用一個枚舉的原型,這將是一個編譯時間常量,Scope註釋會將ENUM作爲輸入,而不是String。例如Hibernate的GeneratedValue可以做到這一點。 – Eugene 2012-08-14 19:40:49
- 1. @Autowired是否只涉及一個對象?
- 2. Spring @Autowired註解和ContextComponent掃描和@autowired註釋對象
- 3. Spring @Autowired字段是否自動隱私?
- 4. spring @autowired
- 5. 使用@Autowired在Spring對象注入時拋出的NullPointerException異常
- 6. 爲什麼spring @autowired是null?
- 7. 如何在構造函數中爲不是Spring的對象使用autowired參數?
- 8. 如何在Scala對象中使用Spring Autowired(或手動連線)?
- 9. Java lambda匿名對象是否被重用?
- 10. 使用Spring的@Autowired和scala
- 11. 是否可以在@Service中使用Spring 3 @Autowired註釋?
- 12. spring @ autowired nullpointer
- 13. Spring @Component @Autowired
- 14. Spring Boot Autowired null
- 15. Inject URL()Spring Autowired
- 16. Spring autowired user
- 17. Spring @Autowired和@Qualifier
- 18. Vaadin-spring autowired
- 19. Spring Boot - Autowired MongoClient
- 20. Spring Framework Autowired
- 21. 如何獲取並設置Spring的Autowired對象?
- 22. 是否可以確定一個對象是否被另一個對象引用?
- 23. 自我對象是否會被Python的多重處理共享?
- 24. 重新確認SceneKit中的對象是否已被點擊
- 25. Spring中的AutoWired Setter而不是AutoWired實例變量
- 26. 對象是否可以被更早的銷燬,以使其存儲內存可以被後續對象重用?
- 27. 是否可以重用backgroundworker對象?
- 28. 重用javax.xml.ws.Service對象是否安全?
- 29. 使用processing.Manager時對象是否重複?
- 30. Spring @Autowired bean null null
使用原型範圍 – 2012-08-14 13:10:45
爲什麼要停止呢? – NimChimpsky 2012-08-14 13:15:44