我想创建一个自定义el函数,以便快速从dao中选择选项。我使用Spring,我想在我的自定义el函数类中注入spring bean dao。
在el函数类中,我使用静态方法,并且我无法访问应用程序上下文。 我以这种方式使用了ApplicationContextAware的实现
public class AppContextUtil implements ApplicationContextAware
{
private ApplicationContext applicationContext;
private static final AppContextUtil instance=new AppContextUtil();
private AppContextUtil()
{
}
public static AppContextUtil getInstance()
{
return instance;
}
public <T> T getBean(Class<T> clazz)
{
return applicationContext.getBean(clazz);
}
/**
* {@inheritDoc}
*/
@Override
public void setApplicationContext(ApplicationContext applicationContext) throws BeansException
{
this.applicationContext = applicationContext;
}
}
但是applicationContext为null。
访问applicationContext的唯一方法是belove
WebApplicationContext appCtx =
WebApplicationContextUtils.getWebApplicationContext(context.getServletContext());
MyDAO myDAO = appCtx.getBean(MyDAO.class);
但是这样我需要在el函数参数中传递PageContext。
如何使用spring bean支持创建el函数类?我如何以静态方式访问applicationContext?
谢谢。
答案 0 :(得分:0)
将bean或Application Context“注入”静态字段的脏解决方案:
@Component
public class AppContextUtil {
private static ApplicationContext applicationContext;
@Autowire
private set ApplicationContext(ApplicationContext applicationContext) {
AppContextUtil.applicationContext = applicationContext;
}
}