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啓動項目
相關文章
相關標籤/搜索