最近在读Spring in Action4这本书,受其启发结合自己的业务,编写这个JavaConfig配置类+CXF的纯注解开发反例:
首先,准备环境:Spring4.x + cxf3.x + servlet3.x +Tomcat7,以上框架都要使用以上版本
其次,编写用于替代Web.xml的类AbstractAnnotationConfigDispatcherServletInitializer,
Spring3.2引入了一个便利的WebApplicationInitializer的基础实现,也就是AbstractAnnotationConfigDispatcherServletInitializer,配置该类可以用于启动DespatcherServlet创建的SpringMVC上下文和ContextLoaderListener创建的Spring应用上下文。
例:
package com.nari.config;
import javax.servlet.ServletContext;
import javax.servlet.ServletException;
import javax.servlet.ServletRegistration.Dynamic;
import org.apache.cxf.transport.servlet.CXFServlet;
import org.apache.log4j.Logger;
import org.springframework.web.filter.CharacterEncodingFilter;
import org.springframework.web.servlet.support.AbstractAnnotationConfigDispatcherServletInitializer;
import com.nari.coherence.listener.TaskServlet;
/**
* 该类用于替换web.xml配置文件:用于启动web容器
* @ClassName: StratApplicationContextInitializer
* @Description:
* @author: Fjw
* @date: 2018年1月17日 上午8:57:40
*/
public class StratApplicationContextInitializer
extends AbstractAnnotationConfigDispatcherServletInitializer{
private static final Logger logger = Logger.getLogger(StratApplicationContextInitializer.class);
/**
* 返回带有@Configuration注解的类,将会用来配置ContextLoaderListener创建的应用上下文中的bean
* ApplicationContext(里面包含了由该上下文创建的所有bean)
*/
@Override
protected Class<?>[] getRootConfigClasses() {
// 创建一个配置类,用于registerContextLoaderListener底层方法的加载使用
logger.info(">>>>>>root配置类初始化<<<<<<<<<");
return new Class<?>[]{RootConfig.class};
}
/**
* 返回带有@Configu