1.需求
一个不受spring管理的静态工厂方法,根据传入的参数获取spring管理的bean。
2.实现思路
通过实现ServletContextAware接口,获取到ServletContext对象,然后通过ServletContext获取spring中的对象。
3.代码
@Service
public class BuyerServiceImplTest implements ServletContextAware,XxxService{
private static ServletContext servletContext;
@Override
public void setServletContext(ServletContext servletContext) {
BuyerServiceImplTest.servletContext = servletContext;
}
public BuyerServiceImplTest(){
}
public static Object getSpringDao(String param){
// 根据param不同,从servletContext中获取不同dao实现类
}
}
// 不受spring管理的对象,需要使用sping中的bean
public class OtherService{
private Dao dao;
public OtherService(String param){
this.dao = BuyerServiceImplTest.getSpringDao(param);
}
}