反射生成対象、スプリング注入は無効です.

1677 ワード

反射はnewの出てくる対象に似ていますが、spring容器の中にはありませんので、springの注釈は全て無効です.
コードによって注入する属性を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);
	}
}