为什么要用Spring Boot?

简而言之,从本质上来说,Spring Boot就是Spring,它做了那些没有它你自己也会去做的SpringBean配置。有了它,你可以更加专注于应用程序的逻辑。

Spring Boot精要

最重要的是以下四个核心:

  • 自动配置:针对很多Spring应用程序常见的应用功能,Spring Boot能自动提供相关配置。
  • 起步依赖: 告诉Spring Boot需要什么功能,它就能引入需要的库。
  • 命令行界面:这是Spring Boot的可选特性,借此你只需写代码就能完成完整的应用程序,无需构建传统项目构建。
  • Actuator:让你能够深入运行中的Spring Boot应用程序,一探究竟。

简单介绍

可以使用Spring Initializr初始化一个Spring Boot工程。

使用起步依赖

Spring Boot通过提供众多起步依赖降低项目依赖的复杂度。起步依赖本质上是一个Maven项目对象模型,定义了对其他库的传递依赖,这些东西加在一起即支持某项功能。
如果你是选择Maven工程,你将看见pom.xml文件:
例如,在pom.xml文件中添加一个起步依赖:

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

覆盖起步依赖引入的传递依赖

比如:排除掉Web起步依赖的Jackson:

<dependency>  
    <groupId>org.springframework.boot</groupId>  
    <artifactId>spring-boot-starter-web</artifactId>  
    <exclusions>  
        <exclusion>  
            <artifactId>spring-boot-starter-web</artifactId>  
            <groupId>com.fasterxml.jackson.core</groupId>  
        </exclusion>  
    </exclusions>  
</dependency>

你也可以指定另一个版本Jackson来进行构建:

<dependency>  
    <groupId>com.fasterxml.jackson.core</groupId>  
    <artifactId>jackson-databind</artifactId>  
    <version>2.4.3</version>  
</dependency>

使用自动配置

针对很多Spring应用程序常见的应用功能,Spring Boot能自动提供相关配置,让开发者专注于应用程序功能。简而言之,这是一个运行时的过程。

比如:Thymeleaf是不是在Classpath里?如果是,则配置Thymeleaf的模板解析器、视图解析器以及模板引擎。

自定义配置

覆盖Spring Boot自动配置

覆盖自动配置很简单,就当自动配置不存在,直接显示地写一段配置。

通过属性文件外置配置

创建一个名为application.yml的文件或者application.properties的文件即可。

自动配置微调

这里以YAML文件为准。
比如配置嵌入式服务器:

server:  
  port: 8000
应用程序Bean的配置外置

在application.yml里设置一个属性:

amazon:  
  associate_id: habuma-20

在一个类里面收集属性:

@Component  
@ConfigurationProperties("amazon")
public class AmazonProperties {  
  
  private String associateId;  
    
  public void setAssociateId(String associateId) {  
    this.associateId = associateId;  //associateId的setter方法
  }  
    
  public String getAssociateId() {  
    return associateId;  
  }  
    
}

@ConfigurationProperties注解说明该Bean的属性应该是(通过setter方法)从配置属性值注入的。perfix属性说明AmazonProperties应该注入带amazon前缀的属性。

注入了AmazonProperties的ReadingListController:

@Controller  
@RequestMapping("/")  
public class ReadingListController {  
  
   private ReadingListRepository readingListRepository;  
   private AmazonProperties amazonConfig;  
  
   @Autowired  
   public ReadingListController(ReadingListRepository readingListRepository,  
       AmazonProperties amazonConfig) {  
      this.readingListRepository = readingListRepository;  
    this.amazonConfig = amazonConfig; //注入AmazonProperties
   }  
     
   @RequestMapping(method=RequestMethod.GET)  
   public String readersBooks(Reader reader, Model model) {  
      List<Book> readingList = readingListRepository.findByReader(reader);  
      if (readingList != null) {  
         model.addAttribute("books", readingList);  
         model.addAttribute("reader", reader);  
         model.addAttribute("amazonID", amazonConfig.getAssociateId());//向模型中添加associateId
      }  
      return "readingList";  
   }       
}
使用Profile进行配置

Profile是一种条件化配置,基于运行时激活的Profile。
当应用程序需要部署到不同的运行环境时,一些配置细节通常会有所不同。

使用Profile YAML文件进行配置:

logging:  
  level:  
    root: DEBUG
    
spring:  
  profiles:  
    active: production #激活Profile
---  
  
spring:  
  profiles: development  
  
server:  
  port: 8001  
---  
  
spring:  
  profiles: production  
  
server:  
  port: 8002

这个application.yml文件分为三个部分,第一段对全部Profile生效,第二段应用于开发环境,第三段应用于生成环境。


WinRT
21 声望4 粉丝

临渊羡鱼,不如退而结网


« 上一篇
日期和时间API
下一篇 »
Spring核心