如果他們是,如何阻止?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. Spring @Autowired對象爲null
- 2. @Autowired是否只涉及一個對象?
- 3. Spring @Autowired註解和ContextComponent掃描和@autowired註釋對象
- 4. Spring @Autowired字段是否自動隱私?
- 5. Autowired spring bean是nul
- 6. spring @autowired
- 7. 使用@Autowired在Spring對象注入時拋出的NullPointerException異常
- 8. C#是否重用尚未被GC銷燬的現有對象?
- 9. 爲什麼spring @autowired是null?
- 10. 如何在構造函數中爲不是Spring的對象使用autowired參數?
- 11. 檢查linq對象是否被引用
- 12. 如何在Scala對象中使用Spring Autowired(或手動連線)?
- 13. 使用Spring的@Autowired和scala
- 14. Java lambda匿名對象是否被重用?
- 15. 是否可以在@Service中使用Spring 3 @Autowired註釋?
- 16. Spring Boot - Autowired MongoClient
- 17. Spring autowired user
- 18. Spring Boot Autowired null
- 19. Spring automagic,@Autowired
- 20. Spring @Autowired和Singletons
- 21. spring @ autowired nullpointer
- 22. Spring @Autowired detection
- 23. Spring Framework Autowired
- 24. Spring @Component @Autowired
- 25. Vaadin-spring autowired
- 26. Spring @Autowired和@Qualifier
- 27. Inject URL()Spring Autowired
- 28. Spring @Autowired註釋。如何在db中創建與對象相關的對象?
- 29. 如何獲取並設置Spring的Autowired對象?
- 30. Autowired服務和對象之間的不同Spring MVC
使用原型範圍 – 2012-08-14 13:10:45
爲什麼要停止呢? – NimChimpsky 2012-08-14 13:15:44