spring 3+stusts2+mybtits项目的spring化改造

##旧的项目技术栈 spring3+strusts2+mybatis 3.1.1; 无依赖管理插件java

###添加maven管理 将全部的jar依赖用maven管理,固然还有一些属性配置文件web

pom.xml的一部分spring

<resources>
            <resource>
                <directory>src/main/java</directory>
                <includes>
                    <include>**/*.xml</include>
                    <include>**/*.properties</include>
                </includes>
                <filtering>false</filtering>
            </resource>
 <resources>

###添加springmvc,使其可用spring-mvc

  • 加入springmvc的依赖
  • 在web.xml里加入spring的分发器
<servlet>
		<servlet-name>spring</servlet-name>
		<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
		<init-param>
			<param-name>contextConfigLocation</param-name>
			<param-value>classpath:applicationContext.xml</param-value>
		</init-param>
		<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
		<servlet-name>spring</servlet-name>
		<url-pattern>/v1/*</url-pattern>
	</servlet-mapping>

添加了一个v1的拦截路径,与原来的strusts2的url区分开.tomcat

###将spring 3.0的依赖更新为4.0 中间有一个mybatis的升级冲突,更很快完成了 ###用spring boot管理依赖 添加了最新的1.5.2的springboot依赖springboot

<parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>1.5.2.RELEASE</version>
        <relativePath/> <!-- lookup parent from repository -->
    </parent>

添加相关的maven组件mybatis

<plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
                <version>1.5.2.RELEASE</version>
                <executions>
                    <execution>
                        <goals>
                            <goal>repackage</goal>
                        </goals>
                    </execution>
                </executions>
            </plugin>

###将项目改造为springboot启动的项目mvc

这个比较难,是别人作的. 添加了一个servlet启动控制的依赖app

<dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-legacy</artifactId>
            <version>1.0.0.RELEASE</version>
        </dependency>

这个jar包发布就没更新maven

修改web.xml里的监听器

<context-param>
		<param-name>contextConfigLocation</param-name>
		<param-value>classpath:applicationContext.xml</param-value>
	</context-param>

    <listener>
		<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
	</listener>
	<!-- 配置spring核心servlet -->
	<servlet>
		<servlet-name>spring</servlet-name>
		<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
		<init-param>
			<param-name>contextConfigLocation</param-name>
			<param-value>classpath:spring-mvc.xml</param-value>
		</init-param>
		<load-on-startup>1</load-on-startup>
	</servlet>

原来是这种,如今改成

<context-param>
		<param-name>contextConfigLocation</param-name>
		<param-value>com.sanji.mall2.Application</param-value>
	</context-param>
	<listener>
		<listener-class>org.springframework.boot.legacy.context.web.SpringBootContextLoaderListener</listener-class>
	</listener>

	<!-- 配置spring核心servlet -->
	<servlet>
		<servlet-name>spring</servlet-name>
		<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
		<init-param>
			<param-name>contextAttribute</param-name>
			<param-value>org.springframework.web.context.WebApplicationContext.ROOT</param-value>
		</init-param>
		<load-on-startup>1</load-on-startup>
	</servlet>
  • 修改了spring启动的上下文,改成springboot的启动类
  • 修改了spring的启动监听器,改成springboot的监听器
  • 修改了springmvc的启动参数,从xml的位置配置改成为springmvc的java配置类.

这样,就能够在application.yml里配置各类环境变量了.配置thymeleaf和logback也很轻松

###去掉web.xml文件

/**

  • @author 武继明 [wzslw@163.com]

  • @since 17-4-20 下午4:34 */ @SpringBootApplication @MapperScan("com.sanji.**.dao") public class Application extends SpringBootServletInitializer { public static void main(String[] args) { SpringApplication.run(Application.class, args); }

    @Override protected SpringApplicationBuilder configure(SpringApplicationBuilder application) { //加载Application.class里全部的bean return application.sources(Application.class); }

    @Bean public FilterRegistrationBean urlRewriteFilter(){ UrlRewriteFilter demoFilter=new UrlRewriteFilter(); //拦截器注册bean FilterRegistrationBean registrationBean=new FilterRegistrationBean(); registrationBean.setFilter(demoFilter); List<String> urlPatterns=new ArrayList<String>(); urlPatterns.add("/*");//拦截路径,能够添加多个 registrationBean.setUrlPatterns(urlPatterns); //指定拦截器顺序 registrationBean.setOrder(1); registrationBean.setDispatcherTypes(DispatcherType.REQUEST,DispatcherType.FORWARD); return registrationBean; }

    @Bean public FilterRegistrationBean strutsDispatcherfilter(){ StrutsPrepareAndExecuteFilter demoFilter=new StrutsPrepareAndExecuteFilter(); FilterRegistrationBean registrationBean=new FilterRegistrationBean(); registrationBean.setFilter(demoFilter); List<String> urlPatterns=new ArrayList<String>(); urlPatterns.add("*.action");//拦截路径,能够添加多个 registrationBean.setUrlPatterns(urlPatterns); registrationBean.setOrder(2); return registrationBean; }

}

- 集成了SpringBootServletInitializer,重写 protected SpringApplicationBuilder configure(SpringApplicationBuilder application) 方法.加载Application.class里全部的bean

- 新增urlRewriteFilter的bean, strutsPrepareAndExecuteFilter的bean


- 最后,使用tomcat启动项目
相关文章
相关标签/搜索