Evet, bu güvenli iplik sürece bir prototip kapsamı fasulyesi olarak bildirilmiş olması ise ve Bahar tarafından çağrılan bir init()
yöntemi oluşturmak gerekir:? O parçacığı güvenli
@PostConstruct
public void init() {
listOfItem = context.getListOfItem();
}
RequestContext yalnızca tek bir iş parçacığından (isteği işlemek için tahsis edilen) erişilebilir, yapıcı, çağrılmadan hemen önce nesnenin oluşturulmasının doğası gereği yeniden giriş yapmaz. Bir gaz giderici tarafından paylaşılmasını onu durmuyor MyMapper
nesnesinde kilitlenir sırf biri kullanılabilir olsaydı
'göremezsiniz (, listOfItem
nasılsa olsa Evreselliğin sorunlarına karşı güvende olmak bu karıştırmamaya dikkat edin Senin durumunda. Ayrıca, bunun soyut bir sınıf olduğunu görüyorum, ancak listOfItem
özel olduğu için, alt sınıflar buna erişemeyecektir. Bu Listenin herhangi bir sızdırılmış referansı, eşzamanlı iş parçacıkları tarafından manipüle edilebilir, referansta yapılan herhangi bir kopya vardı (çünkü List
s Java'da değiştirilebilir).
Bu güvenlik amacınız olduğu için, alanın görünürlüğünü denetleyen bir birim testi oluşturun ve yansıma yoluyla alana erişilmesi uygun istisnayı atmazsa başarısız olur. Ayrıca alanın iş parçacığı olduğunu göstermek için alanı kendi dahili işaretleyici ek açıklamayla birlikte yorumlamak isteyebilirsiniz. Bu, belgelendirmeyle ve bir ek açıklama olarak, gelecekteki olası bir otomasyona yardımcı olur (örneğin, bu tür tüm ek açıklamaları arayabilecek ve yansıtma testini otomatik olarak çalıştırabilecek bir test tabanı gibi).
Çok temiz görünüyor! İyi işlere devam et.
hm, ancak autowiring olduğunda null bağlam değil null? – hudi
Evet, doğru, cevabımı güncelleyeceğim. (Son birkaç yıldır Scala'yı yapıyorum ...) –
Eğer init yöntemi ilkbahar tarafından çağrılırsa, aynı soruna neden olmaz mıydı? Yoksa sınıfın singleton kapsamında olmaması gerektiğini mi düşünüyorsun? – eis