通过继承ApplicationContextAware的方式获取到了bean。
但是这个bean中注入的其他bean或new的对象都为空,代理之后拿不到吗?
为什么?怎么才能获取到呢?
https://www.cnblogs.com/deng-cc/p/6373670.html
给点浅薄的建议,如果想通过名称获取IOC一个实例。Spring 2.5提供了一个org.springframework.beans.factory.BeanNameAware这个接口。你可以实现这个接口。来实现通过Byname获取bean
你是使用错了,继承ApplicationContextAware后的工具类,在使用的时候不要再次注入了。
参考这个工具类
@Component
public class SpringUtil implements ApplicationContextAware{
private static ApplicationContext applicationContext;
@Override
public void setApplicationContext(ApplicationContext arg) throws BeansException {
applicationContext=arg;
}
/**
* 根据beanId获取实体对象
* @param beanId
* @param clazz
* @param <T>
* @return
*/
public static<T> T getBean(String beanId, Class<T> clazz){
T bean = applicationContext.getBean(beanId, clazz);
return bean;
}
/**
* 根据类型获取实体对象
* @param clazz
* @param <T>
* @return
*/
public static<T> T getBean(Class<T> clazz){
T bean = applicationContext.getBean( clazz);
return bean;
}
}
使用的时候直接SpringUtil.getBean(class)就行了