Spring Boot做了那些没有它你也会去做的Spring Bean配置

“习惯优于配置”的理念让项目快速运行起来

容易创建一个独立运行(bootable jar,内嵌Servlet容器)、准生产级别的基于Spring框架的项目,使用Spring Boot你可以不用或者只需要很少的Spring配置

核心魔法

  • 自动配置:针对很多Spring应用程序常见的应用功能,Spring Boot能自动提供相关配置
  • 起步依赖:告诉Spring Boot需要什么功能,它就能引入需要的库
  • Actuator:可度量

传统Spring MVC开发Hello World Web步骤

  • 项目结构,Maven pom.xml,Spring MVC和Servlet API这些依赖(可用mvn archetype:generate -DarchetypeCatalog=internal生成 template)
  • web.xml(或WebApplicationInitializer实现),声明Spring的DispatcherServlet
  • Spring MVC的Spring配置
  • 一控制器类,以“hello World”相应HTTP请求
  • Tomcat

只有一个东西是和Hello World功能相关的,即控制器,剩下的都是Spring开发的Web应用程序必需的通用模板

spring boot

Spring Initializr的一些方法

pom

生成出来的默认用的parent

<parent>
   <groupId>org.springframework.boot</groupId>
   <artifactId>spring-boot-starter-parent</artifactId>
   <version>x.x.x.RELEASE</version>
</parent>

不喜欢可改成

<dependencyManagement>
     <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-dependencies</artifactId>
            <version>x.x.x.RELEASE</version>
            <type>pom</type>
            <scope>import</scope>
        </dependency>
    </dependencies>
</dependencyManagement>

改Spring Data版本

<spring-data-releasetrain.version>Fowler-SR2</spring-data-releasetrain.version>
</properties>

import 方式得

<dependency>
    <groupId>org.springframework.data</groupId>
    <artifactId>spring-data-releasetrain</artifactId>
    <version>Fowler-SR2</version>
    <scope>import</scope>
    <type>pom</type>
</dependency>

version 可取

  • BUILD-SNAPSHOT - current snapshots
  • M1, M2 etc. - milestones
  • RC1, RC2 etc. - release candidates
  • RELEASE - GA release
  • SR1, SR2 etc. - service releases

启动

  • main 方法
  • mvn spring-boot:run
  • java -jar

properties

application.properties

com.ddatsh.name="dd"
@RestController
public class UserController {

    @Value("${com.ddatsh.name}")
    private String name;
    
    @RequestMapping("/user")
    public String hello() {
        return name;
    }
}

属性太多,一个个绑定到属性字段上太累

ConfigBean.java类+@ConfigurationProperties(prefix = “com.ddatsh”)来指明使用哪个

import org.springframework.boot.context.properties.ConfigurationProperties;

@ConfigurationProperties(prefix = "com.ddatsh")
public class ConfigBean {
    
    private String name;

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }
}

入口类

@EnableConfigurationProperties({ConfigBean.class})

使用

@RestController
public class UserController {

    @Autowired
    ConfigBean configBean;

    @RequestMapping("/user")
    public String hello() {
        return configBean.getName();
    }
}

参数引用

com.ddatsh.host="127.0.0.1"
com.ddatsh.port="1234"
com.ddatsh.addr={com.ddatsh.host}:{com.ddatsh.port}

ref

Spring Boot干货系列

http://tengj.top/2017/02/26/springboot1/