Java 在自定义el函数中注入Springbean
我想创建一个自定义el函数,以快速地从dao中选择选项。我正在使用Spring,我想在我的自定义el函数类中注入SpringbeanDAO 在el函数类中,我使用静态方法,无法访问应用程序上下文。 我以这种方式使用了ApplicationContextAware的实现Java 在自定义el函数中注入Springbean,java,spring,spring-el,Java,Spring,Spring El,我想创建一个自定义el函数,以快速地从dao中选择选项。我正在使用Spring,我想在我的自定义el函数类中注入SpringbeanDAO 在el函数类中,我使用静态方法,无法访问应用程序上下文。 我以这种方式使用了ApplicationContextAware的实现 public class AppContextUtil implements ApplicationContextAware { private ApplicationContext applicationContext
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;
}
}
但这样我需要在el函数params中传递PageContext
如何使用Springbean支持创建el函数类?如何以静态方式访问applicationContext
谢谢。将bean或应用程序上下文“注入”到静态字段的肮脏解决方案:
@Component
public class AppContextUtil {
private static ApplicationContext applicationContext;
@Autowire
private set ApplicationContext(ApplicationContext applicationContext) {
AppContextUtil.applicationContext = applicationContext;
}
}
我自己解决了:它需要在spring-conf.xml中将AppContextUtil声明为Springbean
@Component
public class AppContextUtil {
private static ApplicationContext applicationContext;
@Autowire
private set ApplicationContext(ApplicationContext applicationContext) {
AppContextUtil.applicationContext = applicationContext;
}
}