Yay fasulyesinin yok etme yönteminde, veritabanındaki bazı öğeleri temizlemek için bazı sorgular yürütmek istiyorum. Bahar, bunu bulabildiğim herhangi bir yolla buna izin vermiyor gibi görünüyor.Bir baharlık fasulyede, işlemleri kullanabilen bir kapatma yöntemine sahip olmak mümkün müdür?
hata her zamanki gibi bir şeydir: isimde fasulye başarısız yöntemi yok arasında
Invocation 'someBean': org.springframework.beans.factory.BeanCreationNotAllowedException: adı ile oluşturma hatası fasulye ' transactionManager ': Bu fabrikanın tekilleri imhası sırasında tekil çekirdeği oluşturulmasına izin verilmez (yok bir BeanFactory'den bir yok yöntemiyle uygulamasında!)
Aşağıdakiler, fasulyeye artık ihtiyaç duyulmadığında shutdownDestroy'u çağırmak için yayı bildirecektir. Ancak, işlemleri kullanmaya çalışırken yukarıdaki hatayı alıyorum.
<bean class="org.springframework. ... .CommonAnnotationBeanPostProcessor"/>
ve sonra @PreDestroy
ile yöntemini işaretlemek: Kullandığım ortak yaşam döngüsü ek açıklamaları etkinleştirdiğinizde
<bean id="someId" name="someName" class="someClass"
destroy-method="shutdownDestroy"/>
aynı durum geçerlidir. Bu yöntem, işlemleri de kullanamaz.
Bunu yapmanın bir yolu var mı?
EDIT: Teşekkürler! Bean'in SmartLifecycle'ı uygulayıp aşağıdakileri ekledim ve çok güzel çalışıyor.
private boolean isRunning = false;
@Override
public boolean isAutoStartup() {return true;}
@Override
public boolean isRunning() {return isRunning;}
/** Run as early as possible so the shutdown method can still use transactions. */
@Override
public int getPhase() {return Integer.MIN_VALUE;}
@Override
public void start() {isRunning = true;}
@Override
public void stop(Runnable callback) {
shutdownDestroy();
isRunning = false;
callback.run();
}
@Override
public void stop() {
shutdownDestroy();
isRunning = false;
}
Ben senin yöntemin shutdownDestroy() @Transactional ek açıklama vardır varsayıyorum? Sorgularınızı bu yöntemde nasıl yürütüyorsunuz? Bunu bahar tarafından otomatikleştirilmiş bir EntityManager ile yapmaya çalışıyorum. Otomatik kablolama işleri iyi çalışıyor, ancak sorgumu yürütmeye çalıştığımda aşağıdakileri elde ediyorum: javax.persistence.TransactionRequiredException: Bir güncelleştirme/silme sorgusu yürütme – mag382