如何在我的spring 3.2和hibernate 4集成项目上实现AbstractAnnotationConfigDispatchers Servletilizer for java配置?

如何在我的spring 3.2和hibernate 4集成项目上实现AbstractAnnotationConfigDispatchers Servletilizer for java配置?,java,spring,hibernate,Java,Spring,Hibernate,在我的应用程序中,我使用Spring3.2、JSF2.1和Hibernate4集成。我想将配置xml文件替换为java配置。为此,我将重点介绍AbstractAnnotationConfigDispatchersServletInitializer和WebMVCConfigureAdapter部分 web.xml <?xml version="1.0" encoding="UTF-8" standalone="no"?> <web-app xmlns="http://java.

在我的应用程序中,我使用Spring3.2、JSF2.1和Hibernate4集成。我想将配置xml文件替换为java配置。为此,我将重点介绍AbstractAnnotationConfigDispatchersServletInitializer和WebMVCConfigureAdapter部分

web.xml

<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<web-app xmlns="http://java.sun.com/xml/ns/javaee"
xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" version="3.0"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd">
<display-name />
<context-param>
   <param-name>contextConfigLocation</param-name>
   <param-value>
   /WEB-INF/applicationContext.xml
   </param-value>
</context-param>
<listener>
    <listener-class>
        org.springframework.web.context.request.RequestContextListener
    </listener-class>
</listener>
<listener>
    <listener-class>
        org.springframework.web.context.ContextLoaderListener
    </listener-class>
</listener>
<filter>
    <description>generated-persistence-filter</description>
    <filter-name>MySQLFilter</filter-name>
    <filter-class>
        org.springframework.orm.jpa.support.OpenEntityManagerInViewFilter
    </filter-class>
    <init-param>
        <param-name>entityManagerFactoryBeanName</param-name>
        <param-value>MySQL</param-value>
    </init-param>
</filter>
<filter-mapping>
    <filter-name>MySQLFilter</filter-name>
    <url-pattern>/*</url-pattern>
</filter-mapping>
<filter>
    <filter-name>PrimeFaces FileUpload Filter</filter-name>
    <filter-class>org.primefaces.webapp.filter.FileUploadFilter</filter-class>
</filter>
<filter-mapping>
    <filter-name>PrimeFaces FileUpload Filter</filter-name>
    <servlet-name>Faces Servlet</servlet-name>
</filter-mapping>   
<context-param>
    <param-name>javax.faces.STATE_SAVING_METHOD</param-name>
    <param-value>server</param-value>
</context-param>
<context-param>
    <param-name>com.sun.faces.expressionFactory</param-name>
    <param-value>com.sun.el.ExpressionFactoryImpl</param-value>
</context-param>
<welcome-file-list>
    <welcome-file>index.jsp</welcome-file>
</welcome-file-list>
<servlet>
    <servlet-name>Faces Servlet</servlet-name>
    <servlet-class>javax.faces.webapp.FacesServlet</servlet-class>
    <load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
    <servlet-name>Faces Servlet</servlet-name>
    <url-pattern>*.xhtml</url-pattern>
</servlet-mapping>
<error-page>
    <exception-type>javax.faces.application.ViewExpiredException</exception-type>
    <location>/jsf/login.xhtml</location>
</error-page>
</web-app>

对于xml配置,您需要在启动时注册spring ContextLoaderListener

public void onStartup(ServletContext servletContext) {
    XmlWebApplicationContext root = new XmlWebApplicationContext
    root.setConfigLocation("/WEB-INF/applicationContext.xml")
    servletContext.addListener(new ContextLoaderListener(root))
}
对于java配置:

public void onStartup(ServletContext servletContext) {
    AnnotationConfigWebApplicationContext root = new AnnotationConfigWebApplicationContext
//scan the package of your @Configuration java files
    root.scan("org.example.config")
    servletContext.addListener(new ContextLoaderListener(root))
}
看起来欢迎文件列表和错误页面没有注释或java配置支持,您仍然需要在web.xml中定义它们,servlet容器将同时加载web.xml和WebInitializer

如果您想完全摆脱web.xml,可以尝试在web框架中实现欢迎文件和错误页面

--编辑--

我不熟悉jsf,您可以尝试在方法启动时添加以下内容:

servletContext.setInitParameter("javax.faces.STATE_SAVING_METHOD", "server");
servletContext.setInitParameter("com.sun.faces.expressionFactory", "com.sun.el.ExpressionFactoryImpl");

看起来像是与JSF无关的spring和hibernate问题。请注意,这里的JSF仅充当HTML生成器。如何在Spring3.2Java配置类上实现上下文参数、欢迎文件列表和错误页(web.xml)等属性。感谢您的建议。我正在做的是在框架级别实现错误页面和欢迎文件。但仍然存在类似javax.faces.STATE\u SAVING\u方法和web.xml上的com.sun.faces.expressionFactory。如何在WebInitializerJava配置上实现它
public void onStartup(ServletContext servletContext) {
    AnnotationConfigWebApplicationContext root = new AnnotationConfigWebApplicationContext
//scan the package of your @Configuration java files
    root.scan("org.example.config")
    servletContext.addListener(new ContextLoaderListener(root))
}
servletContext.setInitParameter("javax.faces.STATE_SAVING_METHOD", "server");
servletContext.setInitParameter("com.sun.faces.expressionFactory", "com.sun.el.ExpressionFactoryImpl");