因为 Filter servlet 是配置在 web.xml 里面的,这些在 service 实例化前 就实例化了,当我们在 Filter servlet 中用 普通注解根本就注入不进去。
用下面这个方法可以
import org.springframework.beans.BeansException;
import org.springframework.beans.factory.BeanFactory;
import org.springframework.beans.factory.BeanFactoryAware;
import org.springframework.stereotype.Component;
@Component("beanContextUtil")
public class BeanContextUtil implements BeanFactoryAware {
private static BeanFactory beanFactory;
public static void setContextBeanFactory(BeanFactory bf) {
beanFactory = bf;
}
public static Object getContextBean(String beanName) {
return beanFactory.getBean(beanName);
}
@Override
public void setBeanFactory(BeanFactory beanFactory) throws BeansException {
BeanContextUtil.setContextBeanFactory(beanFactory);
}
public static Object getBean(String beanName) {
return BeanContextUtil.getContextBean(beanName);
}
}
示例:
private LogInfoService logInfoService = (LogInfoService)BeanContextUtil.getBean("logInfoService");
用下面这个方法可以
import org.springframework.beans.BeansException;
import org.springframework.beans.factory.BeanFactory;
import org.springframework.beans.factory.BeanFactoryAware;
import org.springframework.stereotype.Component;
@Component("beanContextUtil")
public class BeanContextUtil implements BeanFactoryAware {
private static BeanFactory beanFactory;
public static void setContextBeanFactory(BeanFactory bf) {
beanFactory = bf;
}
public static Object getContextBean(String beanName) {
return beanFactory.getBean(beanName);
}
@Override
public void setBeanFactory(BeanFactory beanFactory) throws BeansException {
BeanContextUtil.setContextBeanFactory(beanFactory);
}
public static Object getBean(String beanName) {
return BeanContextUtil.getContextBean(beanName);
}
}
示例:
private LogInfoService logInfoService = (LogInfoService)BeanContextUtil.getBean("logInfoService");