2016-04-01 15 views
0

Uygulamamda kullanmak istediğim bir baharlık fasulyem var diyelim, ama bu eski kod, her bir sınıfı, @Component ya da herhangi bir çeşit fasulye ile kullanmak istemiyorum çünkü sınıf el ile Projenin içinden çıktı, bu yüzden istediğim yerde @Autowire kullanamıyorum.Yay 3 sınıfı tek bir fasulye örneğini tutmak ve döndürmek için mi?

Yay fasulyesi için bir sarmalayıcı sınıfı nasıl oluşturabilirim: Aşağıda belirtilen şekilde yeniden yapılandırmak istiyorum; böylece, uygulama bağlamında kayıtlı olan fasulye örneğini döndürmekten başka bir şey yapamaz mı?

@Service("myBean") 
public class MyBean { 

Temelde ben böyle bir yöntemle MyBeanHolder.java gibi bir şey arıyorum:

public MyBean getGlobalInstance() { 
    //return my global instance of MyBean 
} 

Yani bu şekilde, her yerde ben MyBean kullanmak istiyorum, ben bu getGlobalInstance() yöntemle örneğini getirebilir.

Bu ilkbahar 3.X'i nasıl çalıştırabilirim?

cevap

0

yönteminiz getGlobalInstance aynı zamanda bir bahar fasulye olduğu sınıfı da varsayalım, bunu yapabilirsiniz:

class MyBeanHolder { 
@Autowired 
ApplicationContext applicationContext; 

    public MyBean getGlobalInstance() { 
    return applicationContext.getBean(MyBean.class); 
    } 
} 

Aksi takdirde uygulama bağlamı almak için arayüz ApplicationContextAware uygulayabilir, size bulabileceğiniz getBean

+0

Bu nedenle, temel olarak, ApplicationContextAware uygulamasının uygulanması için tek yol, çünkü bu sınıfı bir fasülye yaparsam, o zaman hala bu yeni sınıfa bağlanamadığım sorunla uğraşıyorum. çünkü onu kullanmaya çalıştığım yerde hala kullanamadığım eski kod olan fasülyeli olmayan sınıflar var değişiklik? Sağ? –