Fork me on GitHub

第二章 Spring Boot 基础配置

第二章 Spring Boot 基础配置

阅读《Spring Boot+Vue全栈开发实践》王松 著 ,阅读摘要笔记。

2.1 @Spring BootApplication

 1 @SpringBootConfiguration
 2 @EnableAutoConfiguration
 3 @ComponentScan(
 4     excludeFilters = {@Filter(
 5     type = FilterType.CUSTOM,
 6     classes = {TypeExcludeFilter.class}
 7 ), @Filter(
 8     type = FilterType.CUSTOM,
 9     classes = {AutoConfigurationExcludeFilter.class}
10 )}
11 )
12 public @interface SpringBootApplication {
13     //
14 }

点击 Ctrl + @Spring BootApplication,可以查看它的底层代码。

所以我们可以看到 @Spring BootApplication 是一个组合注解。

2.1.1 @SpringBootConfiguration

 1 @Configuration 2 public @interface SpringBootConfiguration { 3 } 

点击 Ctrl + @SpringBootConfiguration,可以查看它的底层代码。

功能:这是一个配置类,开发者可以在这个类中配置Bean。

2.1.2 @EnableAutoConfiguration

功能:开启自动化配置。Spring Boot中的自动化配置是非侵入式的。

2.1.3 @ComponentScan

功能:默认扫描的类都位于当前类所在包的下面,因此将项目启动类放在根包目录下。

 

我们将功能实现的代码都放到com.java.springbootdemo包下。

@ComponentScan 可以扫描 @Service, @Respository,@Component,@Controller,@RestController,@Configuration。

2.2 定制 banner (骚操作)

每次的项目启动都会有这样的一个banner (横幅)。

在 resources 中创建一个 banner.txt 文件,在里面输入 你想要出现的 banner内容,在启动项目,就可以看到你输入的内容在Console中出现。

我们还可以用几个在线网站提供艺术字显示的:

 

将下面的文字复制到banner.txt 中就行了,重新启动项目,我们可以看到:

 

2.3 类型安全配置属性

类型安全配置属性 (Type-safe Configuration Properties)

功能:可以更加方便地将配置文件中的数据注入Bean中。

我们在application.properties中添加配置:

 1 book.name=三国演义
 2 book.author=罗贯中
 3 book.price=30
 4  5 book1.name=西游记
 6 book1.author=西游记
 7 book1.price=20
 8  9 book-2.name=水浒传
10 book-2.author=水浒传
11 book-2.price=35

我们将配置数据注入到这个Bean中:

 1 import org.springframework.boot.context.properties.ConfigurationProperties;
 2 import org.springframework.stereotype.Component;
 3  4 @Component
 5 @ConfigurationProperties(prefix = "book-2")  
 6 //格式:小写字母-数字字符,可以用"-"相连也可以不用,并且必须以字母开头
 7 public class Book {
 8     private String name;
 9     private String author;
10     private Float price;
11 12     public String getName() {
13         return name;
14     }
15 16     public void setName(String name) {
17         this.name = name;
18     }
19 20     public String getAuthor() {
21         return author;
22     }
23 24     public void setAuthor(String author) {
25         this.author = author;
26     }
27 28     public Float getPrice() {
29         return price;
30     }
31 32     public void setPrice(Float price) {
33         this.price = price;
34     }
35 36     @Override
37     public String toString() {
38         return "Book{" +
39                 "name='" + name + '\'' +
40                 ", author='" + author + '\'' +
41                 ", price=" + price +
42                 '}';
43     }
44 }

代码中 的 @ConfigurationProperties(prefix="xxx"),这个"xxx"可以是上面配置的book,book1,book-2,但是它

格式:小写字母-数字字符,可以用"-"相连也可以不用,并且必须以字母开头

最后我们在创建一个 BookController 进行简单的测试:

 1 import com.java.springbootdemo.model.Book;
 2 import org.springframework.beans.factory.annotation.Autowired;
 3 import org.springframework.web.bind.annotation.GetMapping;
 4 import org.springframework.web.bind.annotation.RestController;
 5  6 @RestController
 7 public class BookController {
 8  9     @Autowired
10     Book book;
11 12     @GetMapping("/book")
13     public String book(){
14         return book.toString();
15     }
16 }

启动项目。访问自己定的路径。

可能访问到会对中文进行转码,变成乱码。

方法一、我们可以在application.properties中添加下面的一段配置:

1 #设置spring-boot 编码格式
2 server.tomcat.uri-encoding=UTF-8
3 spring.http.encoding.charset=UTF-8
4 spring.http.encoding.enabled=true
5 spring.http.encoding.force=true
6 spring.messages.encoding=UTF-8

方法二、我们直接在Settings中进行一定的配置:

 

在启动项目,进行访问。

2.4 Profile

application-dev.properties:开发环境中的配置;

application-prod.properties:生产环境中的配置;

在 resources中创建 application-dev.properties 和 application-prod.properties两个文件。

在application-dev.properties中写入:

 1 server.port=8090 

在application-prod.properties中写入:

 1 server.port=8085 

然后回到我们的application.properties中进行配置:

 1 spring.profiles.active=dev  

这个表示使用application-dev.properties配置文件启动项目,若将dev 改成 prod,则表示用application-prod.properties启动项目。启动成功就可以通过相应的端口进行访问。

注:如果我们在application.properties中原先配置过了 server.port=8081 的话,会将这个直接覆盖。

posted @ 2019-07-05 15:56  gentleKay  阅读(198)  评论(0编辑  收藏  举报