从Spring迁移到Spring Boot

Spring Boot给我们的开发提供了一系列的便利,所以我们可能会希望将老的Spring 项目转换为新的Spring Boot项目,本篇文章将会探讨如何操作。

请注意,Spring Boot并不是取代Spring,它只是添加了一些自动配置的东西,从而让Spring程序更快更好

添加Spring Boot starters

要想添加Spring Boot,最简单的办法就是添加Spring Boot Starters。

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

添加应用程序入口

每一个Spring Boot程序都需要一个应用程序入口,通常是一个使用@SpringBootApplication注解的main程序:

@SpringBootApplication
public class Application {
public static void main(String[] args) {
SpringApplication.run(Application.class, args);
}
}

@SpringBootApplication注解是下列注解的组合:

@Configuration ,@EnableAutoConfiguration,@ComponentScan 。

默认情况下@SpringBootApplication会扫描本package和子package的所有类。所以一般来说SpringBootApplication会放在顶层包下面。

Import Configuration和Components

Spring Boot通常使用自动配置,但是我们也可以手动Import现有的java配置或者xml配置。

对于现有的配置,我们有两个选项,一是将这些配置移动到主Application同一级包或者子包下面,方便自动扫描。

二是显式导入。

我们看一下怎么显示导入:

@SpringBootApplication
@ComponentScan(basePackages="com.flydean.config")
@Import(UserRepository.class)
public class Application {
//...
}

如果是xml文件,你也可以这样使用@ImportResource导入:

@SpringBootApplication
@ImportResource("applicationContext.xml")
public class Application {
//...
}

迁移应用程序资源

默认情况下Spring Boot 会查找如下的资源地址:

/resources
/public
/static
/META-INF/resources

想要迁移的话 我们可以迁移现有资源到上诉的资源地址,也可以使用下面的方法:

spring.resources.static-locations=classpath:/images/,classpath:/jsp/

迁移应用程序属性文件

Spring Boot 会在如下的地方查找application.properties或者application.yml 文件:

* 当前目录
* 当前目录的/config子目录
* 在classpath中的/config目录
* classpath root

我们可以将属性文件移动到上面提到的路径下面。

迁移Spring Web程序

如果要迁移Spring Web程序,我们需要如下几步:

  1. 添加spring-boot-starter-web依赖:
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>

通过Spring Boot的自动配置,会自动检测classpath中的依赖包,从而自动开启@EnableWebMvc,同时创建一个DispatcherServlet。

如果我们在@Configuration类中使用了@EnableWebMvc注解,则自动配置会失效。

该自动配置同时自动配置了如下3个bean:

  • HttpMessageConverter用来转换JSON 和 XML。
  • /error mapping用来处理所有的错误
  • /static, /public, /resources 或者 /META-INF/resources的静态资源支持。
  1. 配置View模板

对于web页面,通常不再推荐JSP,而是使用各种模板技术来替换:Thymeleaf, Groovy, FreeMarker, Mustache。 我们要做的就是添加如下依赖:

<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-thymeleaf</artifactId>
</dependency>

template文件在/resources/templates下面。

如果我们仍然需要是用JSP,则需要显示配置如下:

spring.mvc.view.prefix=/WEB-INF/views/
spring.mvc.view.suffix=.jsp

更多教程请参考 flydean的博客

从Spring迁移到Spring Boot的更多相关文章

  1. 你应该将应用迁移到Spring 4的五个原因

    本文来源于我在InfoQ中文站翻译的文章,原文地址是:http://www.infoq.com/cn/news/2015/12/five-reasons-to-migrate-spring4 Rafa ...

  2. Spring Kafka和Spring Boot整合实现消息发送与消费简单案例

    本文主要分享下Spring Boot和Spring Kafka如何配置整合,实现发送和接收来自Spring Kafka的消息. 先前我已经分享了Kafka的基本介绍与集群环境搭建方法.关于Kafka的 ...

  3. 一起来学spring Cloud | 第一章:spring Cloud 与Spring Boot

    目前大家都在说微服务,其实微服务不是一个名字,是一个架构的概念,大家现在使用的基于RPC框架(dubbo.thrift等)架构其实也能算作一种微服务架构. 目前越来越多的公司开始使用微服务架构,所以在 ...

  4. Spring,Spring MVC及Spring Boot区别

    什么是Spring?它解决了什么问题? 我们说到Spring,一般指代的是Spring Framework,它是一个开源的应用程序框架,提供了一个简易的开发方式,通过这种开发方式,将避免那些可能致使代 ...

  5. Spring Cloud和Spring Boot的区别

    Spring MVC: Spring MVC属于SpringFrameWork的后续产品,已经融合在Spring Web Flow里面.Spring 框架提供了构建 Web 应用程序的全功能 MVC ...

  6. Spring Kafka整合Spring Boot创建生产者客户端案例

    每天学习一点点 编程PDF电子书.视频教程免费下载:http://www.shitanlife.com/code 创建一个kafka-producer-master的maven工程.整个项目结构如下: ...

  7. Spring Cloud与Spring Boot版本匹配关系

    Spring Cloud是什么? “Spring Cloud provides tools for developers to quickly build some of the common pat ...

  8. Spring MVC和Spring Boot的理解以及比较

    Spring MVC是什么?(1)Spring MVC是Spring提供的一个强大而灵活的模块式web框架.通过Dispatcher Servlet, ModelAndView 和 View Reso ...

  9. spring cloud和spring boot两个完整项目

    spring cloud和spring boot两个完整项目 spring cloud 是基于Spring Cloud的云分布式后台管理系统架构,核心技术采用Eureka.Fegin.Ribbon.Z ...

随机推荐

  1. 如何使用Rancher在OpenStack上创建K8S集群

    不可否认的是,OpenStack仍然是可行的云操作系统,并且被全世界许多互联服务提供商使用.而Rancher是业界最为广泛使用的Kubernetes管理平台,通过简洁直观的GUI集中管理企业IT中的多 ...

  2. 为什么scanf(" %c",&c)中%c前要空格?

    空格确实不是必须的,但有了空格就可以忽略你输入的空格. ****例如:scanf(" %c" ,&c),你输入了' a'(a前面有个空格),a就能被c接受. 但控制符前如果 ...

  3. PTA数据结构与算法题目集(中文) 7-20

    PTA数据结构与算法题目集(中文)  7-20 7-20 表达式转换 (25 分)   算术表达式有前缀表示法.中缀表示法和后缀表示法等形式.日常使用的算术表达式是采用中缀表示法,即二元运算符位于两个 ...

  4. Linux基础篇,磁盘及文件使用管理

    在windows系统下,我们可以使用图形化界面很明了的看出当前硬盘使用量与某个文件的占用空间大小和文件数量.但是在linux系统中,我们应该如何得到这些信息呢? 当然是功能强大的df与du了. 一.d ...

  5. Java第二十六天,多线程等待换新机制(严格执行化)

    代码: 1.老板类: package com.lanyue.day26; public class bossRunnable implements Runnable { public myLock l ...

  6. SQL——语法基础篇(上)

    用数据库的方式思考SQL是如何执行的 虽然 SQL 是声明式语言,我们可以像使用英语一样使用它,不过在 RDBMS(关系型数据库管理系统)中,SQL 的实现方式还是有差别的.今天我们就从数据库的角度来 ...

  7. 如何初学python?资深程序员浅谈,教你学会入门python

    我认为python应该是现在市面上最简单,也是最值钱的一门编程语言,所以学习的人是越来越多,但是,如何初学python?这个问题困扰着很多初学python的人,今天,给大家简单聊聊这个话题. 我曾经也 ...

  8. Keepalived实现Nginx负载均衡高可用

    第一章:keepalived介绍 VRRP协议 目的就是为了解决静态路由单点故障问题的 第二章: keepalived工作原理 2.1 作为系统网络服务的高可用功能(failover) keepali ...

  9. Docker搭建Nessus pro笔记

    0x01 准备Docker环境 拉取镜像: docker pull ubuntu 创建容器: docker run -p 9922:22 -p 8834:8834 --name nessus -it ...

  10. Python 变量详解[学习 Python 必备基础知识][看此一篇就够了]

    您的"关注"和"点赞",是信任,是认可,是支持,是动力...... 如意见相佐,可留言. 本人必将竭尽全力试图做到准确和全面,终其一生进行修改补充更新. 目录 ...