前言:现在一般都使用配置类来配置,必要情况再使用配置文件。
目录:
一、配置类
二、配置文件(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;
}
}
需要判断的话就的有下面一些判断的配置是否生效的的派生注解。
若是想要看下系统有哪些配置类生效了在日志打印出来可以配置: