springboot理解二之配置文件(2.配置类和内外部配置文件的优先级)

前言:现在一般都使用配置类来配置,必要情况再使用配置文件。

目录:
一、配置类
二、配置文件(xml配置文件、占位符、多环境、内部文件优先级、外部配置、自动配置类)
本章主要涉及注解:
@Configuration (声明是个组件)
@bean (加入导springr容器中(ioc) 在配置类方法名默认是组件名,也可通过@bean的属性name修改)
@Qualifier (获取容器的内容时,存在多种组件的时候需要指定名字才能注入) @ImportResource (还希望以前的xml的生效。配置文件生效就用这个注解)

一、配置类(建议用)

1. 配置类例子
涉及注解:
@Configuration (声明是个组件)
@bean (加入导springr容器中(ioc) 在配置类方法名默认是组件名,也可通过@bean的属性name修改)
@Qualifier (获取容器的内容时,存在多种组件的时候需要指定名字才能注入)

//测试实体类
// @Component("pet")
// @ConfigurationProperties(prefix = "pet")
public class Pet {
    private String name;
    private int age;
    //要写set、get、带参构造、无参构造,tostring方法
    }
//配置类(就是代替spring配置文件)
@Configuration
public class HelloWordCongfig {

    //加入导springr容器中(ioc) 这个方法名pet1默认是组件名,也可通过@bean的属性name修改
    @Bean(name = "pet2")
    public Pet pet1(){
        return  new Pet("阿黄",1);
    }
}
//测试类
@RunWith(SpringRunner.class)
@SpringBootTest
public class HellowrodApplicationTests {

    @Autowired
    @Qualifier("pet2")
    private Pet pet ;

    @Test
    public void test() {
        System.out.println(pet);
    }
}

二、 配置文件

1. 原来xml配置文件的使用

涉及注解:
@ImportResource (还希望以前的xml的生效。配置文件生效就用这个注解)
例子:主程序入口例子:@ImportResource(locations={“classpath:test.xml”})

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd">
<bean id="test" class="com.demo.hellowrod.eintiy.Pet">
    <property name="name" value="测试名"/>
    <property name="age" value="111"/>
</bean>
</beans>
2. 配置文件中的占位符

在这里插入图片描述

3. 多环境

我们在开发的时候经常会有默认运行环境、开发运行环境、生产(正式)运行环境。
项目内部配置:
在这里插入图片描述
说明:
spring.profiles.active指定运行哪个环境
spring.profiles (就是给这个环境命名)

注意下(以配置三个环境为例子):
都无命名的:(默认走最后的那个环境);
有命名的也有没有命名的:(默认走无命名的环境);

外部的命令控制:
若是以jar包的形式运行的话使用下面命令在dom运行(像这样的环境可以运行多个实例,以不同端口运行):

Java-jar ‘这里写jar包的路径’ --spring.profiles.active=prod
4. 项目内位置文件的优先级

在这里插入图片描述

5. 外部配置文件

springboot官方文档:链接
一般无论配置文件属性一般在spring.config这个配置类里。
说明:
项目是打包成一个jar包运行的,若是想使用外部的配置文件(例子:在jar同级目录下使新建一个application.properties文件)
在这里插入图片描述
内外部都有配置文件的优先级:
在这里插入图片描述

6. 自动配置类

参考下主函数的组成中肯定少不了这个自动配置类。
@EnableAutoConfiguration (单从字面上解释:启动自动配置)在这个类的组成中一层一层下去找,找到(XXXPropeties)的文件。这些就是它设置的属性。
在这里插入图片描述

可以参考springboot的写法:

//需要提供一个要注入的类,这里的例子传过来的一个类,得到后就可以使用这个配置类了
@EnableConfigurationProperties({Pet.class})
//配置类(就是代替spring配置文件)
@Configuration
public class HelloWordCongfig {

    private Pet pet;

    public HelloWordCongfig(Pet pet){
        this.pet = pet;
    }
    //加入导springr容器中(ioc) 这个方法名pet1默认是组件名,也可通过@bean的属性name修改
    @Bean(name = "pet2")
    public Pet pet1() {
        return pet;
    }

}

需要判断的话就的有下面一些判断的配置是否生效的的派生注解。
在这里插入图片描述
若是想要看下系统有哪些配置类生效了在日志打印出来可以配置:
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值