SpringBoot有关配置的问题

SpringBoot

①:SpringBoot的全局配置文件有两种表达方式 .properties和.yml结尾,但是文件名必须是application,这个是在内部写死了的;SpringBoot是约定大于配置,那么这个application必须为文件名,这是一个约定。
②:使用@ConfigurationProperties(prefix=“”) 和配置文件绑定,从配置文件中注入数据。
③:使用@Value注解,对属性的单个值的注入。
④:使用@PropertiySource。我们常常将数据配置文件从全局配置文件中抽离,那么徐亚这个注解来引入数据配置文件。
⑤:使用@ImportResource。引用自定义配置文件或者系统配置文件,这个注解使用的位置在,入口类上。
⑥:使用${}自动获取随机值和引用变量。
⑦:profile配置文件
⑦:配置文件在项目不同位置的优先级问题。
8:Spring-test要与junit整合。

1 application.properties和application.yml的语法格式

application.properties:

是采用spring initialize新建SpringBoot项目时自动生成的配置文件,也是常常使用的配置格式。我们当初在Spring中配置Mysql的基础信息的时候,我们新建的是jdbc.properties文件来配置JDBC的基本属性。语法格式也就是:name=value的形式。

application.yml:

①:基本格式:key: value。注意:键值对中间值的前面必须要有至少一个空格。

②:靠键左对齐的方式区分层次结构。

③:字符串默认可以不用引号引起来。

④:对象或者Map表示方法有两种:

在这里插入图片描述

2 @ConfigurationProperties注解的使用

在SpringBoot中通过注解@ConfigurationProperties在全局配置文件中读取数据。新建User和Address两个entity类。并实现他们的get/set、toString方法。
在这里插入图片描述
在这里插入图片描述

3 @Value从全局配置文件获取数据

我们对User类的@ConfigurationProperties的注解去掉,在username上面添加@Value注解,如下图的对应关系。
在这里插入图片描述
运行测试类,如下,除了username外其他都没有赋值。
在这里插入图片描述
@Value和@ConfigurationProperties的区别:

①:@ConfigurationProperties:是和JavaBean的所有属性绑定;@Value是一个一个属性绑定。

②:@ConfigurationProperties:不支持spring表达式的写法;@Value支持spring的表达式的写法 ,#{12+13}

③:@ConfigurationProperties:支持复杂类型的绑定;@Value不支持复杂类型的绑定。

4 @PropertiySource读取外部属性文件

在@ConfigurationProperties和@Value是直接在全局配置文件中获取数据,但是我们将什么数据都放在全局配置文件中,那么就会显得十分的臃肿,我们会往往将他们分离出来,比如在spring中进行数据库连接池c3p0的配置的时候,我们将数据库的基础信息抽离出来,放在jdbc.properties中,并且使用<context:property-placeholder location=“classpath:jdbc.properties”/>加载;具体可以参考高并发秒杀应用:DAO层设计的数据库连接池配置那块的内容。

我们新建user.properties,将全局配置文件中的数据抽离到这个文件上来:
在这里插入图片描述
我们再在使用@ConfigurationProperties下面使用@PropertySource({“classpath:user.properties”}),来完成外部文件的导入。
在这里插入图片描述
运行测试单元得到如下数据:

在这里插入图片描述

5 @ImportResource引入自定义spring的配置XML文件和配置类

在Spring的使用中,当我们配置多个spring文件中时,使用如下配置文件引入。

在这里插入图片描述
但是在SpringBoot中默认给我们已经配置好了的,它的内部相当于有一个配置文件,那么我们想要添加配置文件,我们在SpringBoot的入口类上使用@ImportResource注解引入。

我们新建addressSpring.xml文件,我们实现xml的方式将Address注入Spring的IOC容器。
在这里插入图片描述
在入口类添加注解@ImportResource。运行测试类,发现能够拿到Address的对象。
在这里插入图片描述
配置类:在SpringBoot中,不推荐Xml来配置,希望所有的配置都能够使用注解的形式完成,@Configuration和@Bean来完成,

6 配置文件中使用随机值和引用变量

可以使用 的 形 式 引 用 , r a n d o m . v a l u e : 表 示 随 机 值 ; r a n d o m . i n t : 表 示 i n t 型 的 随 机 值 , 如 果 有 参 数 表 示 0 − n 大 小 的 随 机 值 ; r a n d o m . u u i d : 表 示 随 机 I d 值 。 使 用 {}的形式引用,random.value:表示随机值;random.int:表示int型的随机值,如果有参数表示0-n大小的随机值;random.uuid:表示随机Id值。使用 random.value:random.intint0nrandom.uuidId使{}可以引用其他变量。
在这里插入图片描述
运行测试用例:
在这里插入图片描述

7 profile配置文件

我们在项目中有可能对不同的方案会配置不同的全局配置文件,但是关键的时候具体启用哪一个呢,每次都要频繁的改动就比较麻烦,所以使用到profile配置。

全局配置文件必须是application.X,这个在SpringBoot中规定死了的,但是我们可以取名问 application-name.X的配置文件,默认使用application.X,如果要使用其他配置文件时:spring.profiles.active=name,来启用。

在这里插入图片描述

7 SpringBoot中配置文件优先级

项目的根目录/config/、项目根目录/、类路径/config/、类路径/。这四个位置的配置文件优先级依次降低;如果这四个位置都有配置文件,那么四个配置文件都会生效,但是配置文件中相同的部分,高优先级的替换低优先级的内容。
在这里插入图片描述

8 Spring-test要与junit整合

我们经常将spring-test与juint进行整合使用,但是为什么要这么做呢?

@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration({"classpath:applicationContext.xml"})

因为juint的运行器不能再测试方法中通过注解的方法读取外部文件。

如果这两者整合后,就可以替换junit的运行器为SpringJUnit4ClassRunner,测试方法就可以通过注解读取外部文件。

在这里插入图片描述

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
基于C++&OPENCV 的全景图像拼接 C++是一种广泛使用的编程语言,它是由Bjarne Stroustrup于1979年在新泽西州美利山贝尔实验室开始设计开发的。C++是C语言的扩展,旨在提供更强大的编程能力,包括面向对象编程和泛型编程的支持。C++支持数据封装、继承和多态等面向对象编程的特性和泛型编程的模板,以及丰富的标准库,提供了大量的数据结构和算法,极大地提高了开发效率。12 C++是一种静态类型的、编译式的、通用的、大小写敏感的编程语言,它综合了高级语言和低级语言的特点。C++的语法与C语言非常相似,但增加了许多面向对象编程的特性,如类、对象、封装、继承和多态等。这使得C++既保持了C语言的低级特性,如直接访问硬件的能力,又提供了高级语言的特性,如数据封装和代码重用。13 C++的应用领域非常广泛,包括但不限于教育、系统开发、游戏开发、嵌入式系统、工业和商业应用、科研和高性能计算等领域。在教育领域,C++因其结构化和面向对象的特性,常被选为计算机科学和工程专业的入门编程语言。在系统开发领域,C++因其高效性和灵活性,经常被作为开发语言。游戏开发领域中,C++由于其高效性和广泛应用,在开发高性能游戏和游戏引擎中扮演着重要角色。在嵌入式系统领域,C++的高效和灵活性使其成为理想选择。此外,C++还广泛应用于桌面应用、Web浏览器、操作系统、编译器、媒体应用程序、数据库引擎、医疗工程和机器人等领域。16 学习C++的关键是理解其核心概念和编程风格,而不是过于深入技术细节。C++支持多种编程风格,每种风格都能有效地保证运行时间效率和空间效率。因此,无论是初学者还是经验丰富的程序员,都可以通过C++来设计和实现新系统或维护旧系统。3

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

haikuotiankongdong

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值