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核心配置与注解的主要内容,如果未能解决你的问题,请参考以下文章

Spring Boot核心注解

Spring Boot最核心的27个注解,你了解多少?

Spring Boot实战笔记-- Spring高级话题(组合注解与元注解)

springboot核心内容

Spring Boot核心特性之组件自动装配

Spring Boot注解说明