2014-09-01 40 views
8

@Autowired, iç mimarlar, düzenleyiciler ve sınıf değişkenleriyle birlikte kullanılabilir.Yay ek açıklamaları

@Autowired ek açıklamasını bir yöntem veya başka bir kapsam içinde nasıl kullanabilirim? Aşağıdakileri denedim, ancak derleme hataları üretir. Örneğin,

Bu imkansızsa, başarmanın başka bir yolu var mı?

cevap

23

(Spring 4. kullanılan) @Autowired açıklama kendisi bu sadece kurucular, alanlar, yöntem ya da diğer ek açıklamaları açıklamak için kullanılabilir demektir

@Target({ElementType.CONSTRUCTOR, ElementType.FIELD, ElementType.METHOD, ElementType.ANNOTATION_TYPE}) 

ile açıklandı. Yerel değişkenlerde kullanılamaz.

yapsa bile, Spring'in veya herhangi bir çalışma ortamı ortamının bu konuda yapabileceği bir şey yoktur, çünkü yansıma yöntem gövdelerine herhangi bir kanca sağlamamaktadır. Çalışma zamanında o yerel değişkene erişemezdiniz.

Bu yerel değişkeni bir alana taşımanız ve otomatikleştirmeniz gerekir.

1

neyi aradığınız yönteminde IoC ise bunu yapabilirsiniz:

Helper2.java sınıf

public class Helper2 { 

    @Autowired 
    ApplicationContext appCxt; 

    public void tryMe() { 
     Helper h = (Helper) appCxt.getBean("helper"); 
     System.out.println("Hello: "+h); 
    } 
} 

spring.xml dosya fark ediyoruz <context:annotation-config />

<beans ...> 
    <context:annotation-config /> 
    <bean id="helper" class="some_spring.Helper" /> 
    <bean id="helper2" class="some_spring.Helper2" /> 
</beans> 

günlük çıkış

kullanıcıya
2017-07-06 01:37:05 DEBUG DefaultListableBeanFactory:249 - Returning cached instance of singleton bean 'helper2' 
2017-07-06 01:37:05 DEBUG DefaultListableBeanFactory:249 - Returning cached instance of singleton bean 'helper' 
Hello: [email protected] 
İlgili konular