反射得到的对象如何注入到Spring中
项目中设用反射得到的对象,是相当于new出来的对象,是无法被Spring容器管理的,需要使用这种方式,使得该对象被Spring管理,才能调用其中的方法:
工具类如SpringContextUtil如下
@Component
public class SpringContextUtil implements ApplicationContextAware {
private SpringContextUtil() {
}
private static ApplicationContext applicationContext;
@Override
public void setApplicationContext(ApplicationContext applicationContext){
SpringContextUtil.applicationContext = applicationContext;
}
public static <T> T getBean(Class<T> clazz) {
return applicationContext.getBean(clazz);
}
}
测试类
public class EmployeeTeachServiceImpl{
public EmployeeTeachDto get(){
Class clazz = Class.forName("EmployeeTeachMapper");
// 这样被Spring管理了,就可以调用方法了
EmployeeTeachMapper teachMapper= SpringContextUtil.getBean(clazz );
teachMapper.xxx();
......
}
}