第二章 Spring Boot 基础配置
阅读《Spring Boot+Vue全栈开发实践》王松 著 ,阅读摘要笔记。
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
点击 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启动项目。启动成功就可以通过相应的端口进行访问。