Spring Boot核心配置与注解
Posted shi_zi_183
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Spring Boot核心配置与注解相关的知识,希望对你有一定的参考价值。
Spring Boot核心配置与注解
Spring Boot全局配置文件
1、application.properties
2、application.yaml
全局配置文件能对一些默认配置值进行修改。Spring Boot使用一个application.properties或者application.yaml的文件作为全局配置文件。
存放路径:src/main/resource目录或者类路径的/config下。
application.properties
使用Spring Initializr方式构建Spring Boot项目时,会在resource目录下自动生成一个空的application.properties文件,Spring Boot项目启动时会自动加载application.properties文件。
示例
server.port=8443
server.servlet.context-path=/chapter02
spring.datasource.driver-class-name=com.mysql.jdbc.Driver
spring.config.additional-location=
1)使用Spring Initializr方式创建一个名为chapter02的Spring Boot项目,在Dependencies依赖选中Web依赖。
2)为了方便查看application.properties配置文件属性配置的效果,先在chapter02项目的com.example包下创建一个domain包,并在该包下创建两个实体类Pet和Student
Pet.java
package com.example.demain;
public class Pet {
private String type;
private String name;
//省略getter、setter、toString
}
Student.java
package com.example.demain;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.stereotype.Component;
import java.util.Arrays;
import java.util.List;
import java.util.Map;
@Component //用于将Person类作为Bean注入Spring容器中
@ConfigurationProperties(prefix="student") //将配置文件中以student开头的属性注入该类中
public class Student {
private int id;//学号
private String name;//姓名
private List hobby;//爱好
private String[] family;//家庭成员
private Map map;
private Pet pet;//宠物
...//省略getter setter
public void setPet(Pet pet) {
this.pet = pet;
}
@Override
public String toString() {
return "Student{" +
"id=" + id +
", name='" + name + '\\'' +
", hobby=" + hobby +
", family=" + Arrays.toString(family) +
", map=" + map +
", pet=" + pet +
'}';
}
}
其中,@ConfigurationProperties(prefix=“student”)注解的作用是将配置文件中以student开头的属性通过setter方法注入实体类对应属性中。@Component注解的作用是将当前注入属性值的Person类对象作为Bean组件放到Spring容器中,只有这样才能被注解赋值。根本目的是让Spring Boot可以扫描到该组件,除了可以使用@Component,还可以使用@Controller、@Service、@Repository、@Configuration(这些有不同含义,之后详解)
注:使用@ConfigurationProperties注解批量注入属性值时,要保证配置文件中的属性与对应实体类的属性一致,否则无法正确获取并注入属性值。
3)打开chapter02的resource目录下的application.properties配置文件,编写对Student类设置的配置属性
application.properties
server.port=8443
server.servlet.context-path=/chapter02
spring.datasource.driver-class-name=com.mysql.jdbc.Driver
#对Student属性进行配置,完成属性值的注入
student.id= 126
student.name=tom
student.hobby=play,read,sleep
student.family=father,mother
student.map.k1=v1;
student.map.k2=v2;
student.pet.type=dog
student.pet.name=kity
在Spring Boot默认全局配置文件application.properties中通过student.xxx
对Student的相关属性进行了配置,这些配置属性会通过@ConfigurationProperties(prefix="student")
注解注入对应的属性中。
注:在编写application.properties配置文件时,由于要配置的Person对象属性是我们自定义的,Spring Boot无法自动识别,所用不会有任何书写提示。在实际开发中,为了出现代码提示的效果来方便配置,在使用@ConfigurationProperties注解进行配置文件属性值注入时,可以在pom.xml文件中添加一个Spring Boot提供的配置处理器依赖
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-configuration-processor</artifactId>
<optional>true</optional>
</dependency>
在pom.xml中添加上述配置依赖后,重构项目即可。
4)为了查看application.properties配置文件是否正确,同时查看属性配置效果,在项目chapter02的测试类Chapter02ApplicationTests中引入Person实体类Bean,并进行输出测试
package com.example.demain;
import org.junit.jupiter.api.Test;
import org.junit.runner.RunWith;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.test.context.junit4.SpringRunner;
import com.example.demain.*;
@RunWith(SpringRunner.class)
@SpringBootTest
class Chapter02ApplicationTests {
@Autowired
private Student student;
@Test
public void contextLoads(){
System.out.println(student);
}
}
未完
以上是关于Spring Boot核心配置与注解的主要内容,如果未能解决你的问题,请参考以下文章