改造的要点:
1、提取配置
2、导入配置
3、优化依赖
4、打包改造
一、首先 spring mvc 配置文件初始化入口是 web.xml
里面会去加载 servlet,一般会有如下配置,这是所有springmvc的配置入口
<servlet>
<servlet-name>springMVC</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<init-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath:/config/spring/springMVC-servlet.xml</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
从这里可以找到 springMVC-servlet.xml配置文件(这个文件几乎等同于springboot的application.yml),然后再根据 里面的配置找其他的文件
其他的配置文件的功能无非就是 扫描配置,参数配置,自定义一些bean配置二,各种数据库连接配置等等
二、提取配置
一般提取就是将之前用配置文件定义的东西转成springboot流行的定义方式
比如:
1、把扫描的配置提取到 Application启动类
@SpringBootApplication(scanBasePackages = {"com.aa.bb"})
@ImportResource("classpath:/config/spring/webApplicationContext.xml")
public class HaiotAdapterApplication {
public static void main(String[] args) {
SpringApplication.run(HaiotAdapterApplication.class, args);
}
}
2、bean 配置提取
<bean id="person" class="com.it.Person">
<property name="name" value="tom"></property>
<property name="age" value="23"></property>
</bean>
转成》》
@Configuration
public class PersonConfig {
@Bean
public Person person() {
return new Person("刘正", 31);
}
}
三、配置导入
实在不好提取的配置,就保留之前用xml定义的形式,然后 @ImportResource 引入
如
@SpringBootApplication(scanBasePackages = {"com.aa.bb"})
@ImportResource("classpath:/config/spring/webApplicationContext.xml")
public class AdapterApplication {
public static void main(String[] args) {
SpringApplication.run(AdapterApplication.class, args);
}
}
四、依赖优化
主要是依赖丢失和依赖重复
1、日志依赖
排除
<dependency>
<groupId>${project-groupId}</groupId>
<artifactId>adapter</artifactId>
<version>${project-version}</version>
<exclusions>
<exclusion>
<!--排除-->
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-log4j2</artifactId>
</exclusion>
<exclusion>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-log4j12</artifactId>
</exclusion>
<exclusion>
<groupId>javax.servlet</groupId>
<artifactId>servlet-api</artifactId>
</exclusion>
</exclusions>
</dependency>
新增:注意对应版本
<dependency>
<groupId>ch.qos.logback</groupId>
<artifactId>logback-classic</artifactId>
<version>1.2.3</version>
</dependency>
#### 报错 java.lang.NoSuchMethodError: ch.qos.logback.core.util.Loader.getResourceOccurrenceCount(Ljava/lang/String;Ljava/lang/ClassLoader;)Ljava/util/Set;
<exclusion>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-log4j12</artifactId>
</exclusion>
#### 报错 Caused by: org.apache.catalina.LifecycleException: A child container failed during start
<exclusion>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-log4j12</artifactId>
</exclusion>
2、orm依赖
如 hibernate (版本要与springboot 对应上 springboot1.3.3.RELEASE -- hibernate 4.x)
<!--hibernate 依赖 start-->
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-c3p0</artifactId>
<version>4.2.4.Final</version>
</dependency>
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-core</artifactId>
<version>4.2.4.Final</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-orm</artifactId>
<version>4.2.5.RELEASE</version>
</dependency>
<!--hibernate 依赖 end-->
<!--mysql 依赖 start-->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>8.0.18</version>
</dependency>
<dependency>
<groupId>commons-dbcp</groupId>
<artifactId>commons-dbcp</artifactId>
<version>1.4</version>
</dependency>
<!--mysql 依赖 end-->
五、打包改造
参考之前的文章: