@SpringBootApplication
@ImportResource("applicationContext.xml")
public class Application {
//...
迁移应用程序资源
默认情况下,Spring Boot会在以下位置之一查找资源文件:
/resources
/public
/static
/META-INF/resources
要迁移,我们可以将所有资源文件移动到其中一个位置,也可以通过设置spring.resources.static-locations
属性:
spring.resources.static-locations=classpath:/images/,classpath:/jsp/
迁移应用程序属性
框架将自动加载在名为application.properties
或者application.yml
放置在以下位置之一:
当前目录的a/config子目录
类路径上的/config目录
为了避免显式加载属性,我们可以将它们移动到这些位置之一具有此名称的文件中。例如,放入类路径上应该存在的/resources文件夹中。
我们还可以从名为application-{profile}.properties
的文件中自动加载特定于概要文件的属性。
此外,大量预定义的属性名可用于配置不同的应用程序行为。
在应用程序中使用的每个Spring框架模块都需要稍加修改,主要与配置有关。让我们看看一些最常用的功能。
迁移SpringWeb应用程序
Web Starter
springboot为web应用程序提供了一个启动程序,它将引入所有必要的依赖关系。这意味着我们可以从Spring框架中删除所有特定于web的依赖项,并用Spring boot starter web替换它们:
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
由于Spring Boot会尽可能根据类路径自动配置应用程序,因此添加此依赖关系将导致将@EnableWebMvc
注释添加到主应用程序类,并设置DispatcherServlet bean
。
如果您有一个WebApplicationInitializer
类来设置DispatcherServlet
,则不再需要它,@EnableWebMvc
注释也不再需要。
当然,如果需要自定义行为,我们可以定义bean,在这种情况下,将使用bean。
如果我们在@Configuration
类上显式使用@EnableWebMvc
注释,那么MVC自动配置将不再被启用。
添加web starter还确定以下bean的自动配置:
支持从类路径上名为/static、/public、/resources或/META-INF/resources的目录提供静态内容
HttpMessageConverter bean,用于JSON和XML等常见用例
处理所有错误的错误映射
View Technologies
至于构建网页,官方文档建议不要使用JSP文件,而是使用模板引擎。自动配置包括以下模板引擎:Thymeleaf、Groovy、FreeMarker、Mustache。要使用其中一个,我们只需添加特定的启动程序:
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-thymeleaf</artifactId>
</dependency>
模板文件应放在/resources/templates
文件夹中。
如果我们想继续使用JSP文件,我们需要配置应用程序以便它能够解析JSP。例如,如果文件位于/webapp/WEB-INF/views
中,则需要设置以下属性:
spring.mvc.view.prefix=/WEB-INF/views/
spring.mvc.view.suffix=.jsp
嵌入式Web服务器
此外,我们还可以使用嵌入式Tomcat服务器运行应用程序,通过添加spring boot starter Tomcat依赖项,该服务器将在端口8080
上自动配置:
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-tomcat</artifactId>
</dependency>
springboot提供自动配置的其他web服务器有Jetty和Undertow。
迁移Spring Security应用程序
启用Spring Security的启动程序是Spring boot starter Security
:
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-security</artifactId>
</dependency>
默认情况下,这将创建一个名为“user
”的用户,并在启动期间记录一个随机生成的密码,并使用基本身份验证保护所有端点。但是,我们通常希望添加我们的安全配置,这与默认配置不同。
因此,我们将使用@EnableWebSecurity
对现有类进行注释,它扩展了WebSecurityConfigurerAdapter
并定义了一个自定义配置:
@Configuration
@EnableWebSecurity
public class SecurityConfig extends WebSecurityConfigurerAdapter {
// ...
迁移Spring Data应用程序
根据我们使用的Spring数据实现,我们需要添加相应的启动程序。例如,对于JPA,我们可以添加spring boot starter数据JPA依赖项:
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-jpa</artifactId>
</dependency>
如果要使用内存中的数据库,请为H2、Derby和HSQLDB类型的数据库添加相应的启用依赖关系的自动配置。
例如,要使用内存中的H2数据库,我们只需要H2依赖关系:
<dependency>
<groupId>com.h2database</groupId>
<artifactId>h2</artifactId>
</dependency>
如果我们想使用不同的数据库类型和配置,比如MySQL数据库,那么我们需要依赖关系以及定义配置。
为此,我们可以保留数据源bean定义,也可以使用预定义属性:
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
spring.datasource.url=jdbc:mysql://localhost:3306/myDb?createDatabaseIfNotExist=true
spring.datasource.username=user
spring.datasource.password=pass
springboot将自动配置Hibernate作为默认的JPA提供者,以及transactionmanagerbean。
在本文中,我们展示了将现有Spring应用程序迁移到较新的Spring引导框架时遇到的一些常见场景。
总的来说,迁移时的体验当然会高度依赖于所构建的应用程序。
无代码侵入的数据采集和Mock,支持Spring、Dubbo、Redis、Mybatis等开源框架的录制和回放;
支持各种复杂业务场景的验证:多线程并发、异步回调、写操作等;
欢迎扫码进QQ群交流
官网:http://arextest.com
github:https://github.com/arextest