您的位置:首页 > 编程语言 > Java开发

springmvc +dubbo项目切换成spring boot启动

2017-08-31 15:02 513 查看

springmvc +dubbo项目切换成spring boot启动

最近对老项目架构上进行一次改动,将原来springmvc + dubbo 切换成spring boot jar启动方式

**1.在pom.xml添加springboot依赖 并删除之前spring所有依赖

这里使用的版本是1.5.2.RELEASE 对应spring版本4.3.7**

<modelVersion>4.0.0</modelVersion>
<groupId>com.hd.web</groupId>
<artifactId>hd_web</artifactId>
<version>1.0.0</version>
<packaging>jar</packaging>
<name>hd_web</name>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>1.5.2.RELEASE</version>
</parent>

<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>

<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<version>1.4.2.RELEASE</version>
<dependencies>
<!-- spring热部署 -->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>springloaded</artifactId>
<version>1.2.6.RELEASE</version>
</dependency>
</dependencies>
</plugin>


如果有redis依赖

<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-redis</artifactId>
<version>1.4.7.RELEASE</version>
</dependency>


如果有jpa依赖

<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-jpa</artifactId>
<version>${spring.boot.version}</version>
</dependency>


2.将web.xml 里的servlet filter进行改造

listener 改造前

<listener>
<listenerclass>com.hdb.modules.hdbOnline.servlet.LoginSessionListener</listener-class>
</listener>


改造后

找到该类添加@WebListener 注解即可

filter 改造前

<filter>
<filter-name>encodingFilter</filter-name>
<filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>
<init-param>
<param-name>encoding</param-name>
<param-value>UTF-8</param-value>
</init-param>
<init-param>
<param-name>forceEncoding</param-name>
<param-value>true</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>encodingFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>


改造后

@Bean
public FilterRegistrationBean registrationFilterBean() {
FilterRegistrationBean registration = new FilterRegistrationBean();
registration.setFilter(characterEncodingFilter());
registration.addUrlPatterns("/*");
return registration;
}

@Bean
public CharacterEncodingFilter characterEncodingFilter() {
CharacterEncodingFilter characterEncodingFilter = new CharacterEncodingFilter();
characterEncodingFilter.setEncoding("UTF-8");
characterEncodingFilter.setForceEncoding(true);
return characterEncodingFilter;
}


servlet 改造前

<servlet>
<servlet-name>ValidateCodeServlet</servlet-name>
<servlet-class>com.hdb.common.servlet.ValidateCodeServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>ValidateCodeServlet</servlet-name>
<url-pattern>/servlet/validateCodeServlet</url-pattern>
</servlet-mapping>


改造后 找到该类

@WebServlet(name="ValidateCodeServlet",urlPatterns="/servlet/validateCodeServlet")


错误 页面配置 改造前

<error-page>
<exception-type>java.lang.Throwable</exception-type>
<location>/WEB-INF/views/error/500.jsp</location>
</error-page>
<error-page>
<error-code>500</error-code>
<location>/WEB-INF/views/error/500.jsp</location>
</error-page>


改造后

/**
* 错误 页面配置
* @return
*/
@Bean
public EmbeddedServletContainerCustomizer containerCustomizer() {
return new EmbeddedServletContainerCustomizer() {
@Override
public void customize(ConfigurableEmbeddedServletContainer container) {
ErrorPage errorPage = new ErrorPage(Throwable.class, "/WEB-INF/views/error/500.jsp");
ErrorPage error400Page = new ErrorPage(HttpStatus.BAD_REQUEST, "/WEB-INF/views/error/404.jsp");
ErrorPage error404Page = new ErrorPage(HttpStatus.NOT_FOUND, "/WEB-INF/views/error/404.jsp");
ErrorPage error405Page = new ErrorPage(HttpStatus.METHOD_NOT_ALLOWED, "/WEB-INF/views/error/404.jsp");
ErrorPage error500Page = new ErrorPage(HttpStatus.INTERNAL_SERVER_ERROR, "/WEB-INF/views/error/500.jsp");
container.addErrorPages(errorPage, error400Page, error404Page, error405Page, error500Page);
}
};
}


3.spring-mvc.xml 文件中的拦截器 视图解析器的改造

添加一个Configuration类 扩展WebMvcConfigurerAdapter类,然后重写addInterceptors方法添加拦截器

重写addResourceHandlers 方法添加对于静态资源的处理

重写configureViewResolvers方法添加视图解析器

4.jar包启动是不支持jsp的,因此,加入几项支持

spring-boot-maven-plugin 版本1.4.2.RELEASE 高版本好像不太支持

将webapp的文件打包后放到META-INF下,否则访问不到

<resource>
<directory>src/main/webapp</directory>
<targetPath>META-INF/resources</targetPath>
<includes>
<include>**/**</include>
</includes>
</resource>


添加两个依赖,但是scope 去掉

<dependency>
<groupId>org.apache.tomcat.embed</groupId>
<artifactId>tomcat-embed-jasper</artifactId>
</dependency>
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>jstl</artifactId>
</dependency>


目前只是改了启动方式,其中包括对于mq、hibernate lucene、dubbo都是通过引入xml实例化的,后期慢慢研究如何进行整合。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  spring spring mvc dubbo