反射生成対象、スプリング注入は無効です.
1677 ワード
反射はnewの出てくる対象に似ていますが、spring容器の中にはありませんので、springの注釈は全て無効です.
コードによって注入する属性をappicationContectから取り出すこともできます.
スプリング配置
コードによって注入する属性をappicationContectから取り出すこともできます.
Service service = (Service) SpringContextUtil.getBean("service");
注意:方法の中に入れます.メンバー変数として宣言しないでください.そうでないと、プログラムを起動する時に、インスタンス化されて失敗して異常が発生します.スプリング配置
工具類を置く:public class SpringContextUtil implements ApplicationContextAware {
private static ApplicationContext applicationContext; // Spring
@Override
public void setApplicationContext(ApplicationContext applicationContext) throws BeansException {
if(SpringContextUtil.applicationContext == null){
SpringContextUtil.applicationContext = applicationContext;
}
}
public static ApplicationContext getApplicationContext() {
return applicationContext;
}
public static Object getBean(String name) throws BeansException {
return applicationContext.getBean(name);
}
public static Object getBean(String name, Class requiredType)
throws BeansException {
return applicationContext.getBean(name, requiredType);
}
public static boolean containsBean(String name) {
return applicationContext.containsBean(name);
}
public static boolean isSingleton(String name)
throws NoSuchBeanDefinitionException {
return applicationContext.isSingleton(name);
}
public static Class getType(String name)
throws NoSuchBeanDefinitionException {
return applicationContext.getType(name);
}
public static String[] getAliases(String name)
throws NoSuchBeanDefinitionException {
return applicationContext.getAliases(name);
}
}