springboot的配置

**

首先呢,了解一下它配置的优先级*

•配置文件一般使用以.yml为后缀的文件,例如:application.yml
springBoot配置文件的优先级
项目/main/resources/.yml < 项目/main/resources/.yml < 项目/.yml < 项目/config/.yml
一般我们只用 项目/config/.yml 下面的.yml配置文件

###YML*(YAML)*的基本语法
key: value //注意::后面必须加上个空格
例如:
server:
port: 8081 就相当于server.port=/8081的层级关系
值的写法
**k: v:**这就相当于上面的格式;如果加上"",会转义字符串里面的特殊字符,对象也可以用行内的写法:如:server:{port: 8081,k: v}多个值的话需用逗号隔开,但需要注意属性名后面的冒号后必须加空格!!
数组(List Set)在这里插入图片描述
用- 值表示数组中的一个元素,行内的话比如:list: [a,b]

将JavaBean注入到配置文件中

首先提供实体类以及getset方法,图中的@Component注解作用是:交给spring管理相当于
@ConfigurationProperties(prefix = “person”)这个prefix 也可以用value代替,而这个person是用来与spring容器中得person相关信息进行绑定

在这里插入图片描述
在这里插入图片描述
注:第一个实体类上面的警告可以在pom.xml里面添加依赖

org.springframework.boot
spring-boot-configuration-processor
true

解决,也可以选择不做处理,不会影响代码的正确性!
*在resources/application.ymal中注入属性
在这里插入图片描述
注:需要注意的是名字不能以驼峰命名法命名,否则会报错
接下来:就需要测试一下了
在controller类里面使用
@Autowired
Person person;
然后写上访问的路径及方法体就可以运行测试类的main方法,使用浏览器或者使用idea上的REST Client输入路径就可以访问了

上面的这种是使用全局配置进行属性赋值,还可以在实体类中使用 @Value注解 进行赋值,里面使用KaTeX parse error: Expected 'EOF', got '#' at position 53: …spring表达式语言==>'#̲{"值"}'进行赋值,还可以进…{“配置文件中第一级.属性名”}赋值

比较@ConfigurationProperties和@Value的区别*
最大的区别就是@ConfigurationProperties支持数据校验,而@Value则不支持。
(2)通过注解@Vuale从全局配置文件中获取数据
spring提供了一个@Value注解,获取全局配置文件中的某个配置项的数据

@Value("${}") 获取全局配置文件的数据

@Value("#{}") #{} 里面写 spring表达式,可以计算后注入数据

@Value("") 直接写字面量的普通值注入数据
如:在实体类上加上@Validated 作用是开启数据校验,如果在yml中写的格式不对的话会报错提示比如Email报错如下:在这里插入图片描述
但是全局配置文件一般定义的都是有关spring配置的信息,如果我们需要定义一些与spring配置无关的信息,那么该如何呢?

我们可以定义局部的配置文件,然后使用@PropertySource注解进行获取![在这里插入图片描述](https://img-blog.csdnimg.cn/20210111214927188.jpg?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L20wXzU0NDQ0OTI3,size_16,color_FFFFFF,t_70#pic_center)

1.1.5.7 @ImportResource
导入Spring的配置文件,让配置文件里面的内容生效;
Spring Boot里面没有Spring的配置文件,我们自己编写的配置文件,也不能自动识别; 想让Spring的配置文件生效,加载进来;@ImportResource标注在一个配置类上

实例:
定义一个UserSercice方法,使用xml配置文件的方式管理UserService类。如何在springboot项目中获取?
 定义UserService
public class UserService {
public void test(){
System.out.println(“这是UserService里面的方法”);
}
}

 定义bean.xml配置文件,管理bean

 在启动类上添加@importResource注解
@SpringBootApplication
@ImportResource(locations = {“classpath:bean.xml”})//加载类路径下面的配置文件
public class App {
public static void main(String[] args) {
SpringApplication.run(App.class,args);
}
}
测试
@RestController
public class controller {
@Autowired
ApplicationContext applicationContext;
@RequestMapping("/hello")
public String hello(){
UserService userService = (UserService) applicationContext.getBean(“userService”);
userService.test();
return “这是我的第一个springboot程序”;
}
}
在这里插入图片描述

注意!!!:在springboot项目中,我们在spring容器中添加组件,我们一般不用以上使用xml的方式。Springboot推荐我们使用全注解的方式在spring容器添加组件。
1、配置类@Configuration------>Spring配置文件
2、使用@Bean给容器中添加组件

定义OrderService

public class OrderService {
public void test(){
System.out.println(“这是OrderService里面的方法”);
}
}

定义配置类
1)当有JavaBean与全局配置文件里的数据对应的时候,就使用@ConfigurationProperties注解

2)当只是需要配置文件中某一个值的时候,就使用@Value注解

3)在resources目录下创建两个配置文件,一个为application.yml配置文件,另一个为application.properties配置文件;

结论:在同一目录下,properties配置优先级 > YAML配置优先级。//所以我们在jar包启动时带上properties写法的配置可以覆盖配置

package com.oracle.config;
import com.oracle.service.OrderService;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
@Configuration
/**

  • 指明当前类就是一个配置类,用来替代之前的配置文件
    */
    public class MyAppConfig {
    //将方法的返回值添加到spring容器中,组件的默认id就是当前方法名
    @Bean
    public OrderService orderService(){
    return new OrderService();
    }
    }
    测试调用
    @RestController
    public class controller {
    @Autowired
    ApplicationContext applicationContext;

    @RequestMapping("/hello")
    public String hello(){
    OrderService userService = (OrderService) applicationContext.getBean(“orderService”);
    userService.test();
    return “这是我的实验”;
    }
    }
    springBoot配置文件的优先级
    项目/main/resources/.yml < 项目/main/resources/.yml < 项目/.yml < 项目/config/.yml
    一般我们只写在 项目/config/.yml 下面

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值