1.@SpringBootApplication标注的类是是主配置类,在主配置类的所在包下的所有子包的所有组件都会被扫描到Spring容器中,完成自动配置。

    其意思就是,若有其他类在配置类所在包之外,则其不会完成自动配置。若运行,则会出错。

  代码:

@SpringBootApplication
public class SprintBoot02ConfigApplication {

	public static void main(String[] args) {
		SpringApplication.run(SprintBoot02ConfigApplication.class, args);
	}

}

  理解:其对主类进行注解,即会对整个项目中(主类所在包下)的组件扫描进spring容器中,完成自动配置。

在这个注解中,依赖了其他注解。其自动导入的注解是:@EnableAutoConfiguration

在 @EnableAutoConfiguration中,有注解@import等等。以后再详细探究。总之它就是这样一层层封装上来的

   疑点:Spring容器是什么。组件是什么。

 

2.配置文件

spring boot中有配置文件:.properties和yml。

Springboot JpaRepository设置字段不使用下划线_配置文件

其文件下的static文件保存所有的静态资源:js,css,image;templates:保存所有的模板页面(不支持JSP)但可以使用模板引擎

自带的是properties,但可自创yml文件,这两种文件都可以对项目进行配置。

/**
 *使用component使组件加入容器中
 */
@Component
/**
 * 使用该注解使用配置文件注入值
 */
@ConfigurationProperties(prefix = "person")
public class Person {
    /**
     * bean将person加入
     * <bean class="Person">
     *     <property name="LastName" value="?"></property>
     * </bean>
     *
     * @value 这个注解也可以进行配置,但必须一个值一个值的配置,且不允许松散语法绑定(严格规格输入要求),但它支持表达式运算,不支持校验
     * @configuraProperties 这个注解对值进行批量配置,其参数prefix ="" 为配置文件中的某一项,支持松散语法,不支持表达式运算,且支持校验
     * 如果只是在某一个业务中使用其一个配置值,则用@value 否则用@configuraproperties
     * 语法 @value("${duixiang}")
     */

除了使用@ConfigurationPropertie自动配置文件之外,还需要使用@Component将组件扫描进Spring容器中

以上注释中有@value和@ConfigurationProperties的区别用途

问题:YAML语法

乱码处理:进入File/Setting/editor/FileEncoding 进行更改

@PropertySource注解和@ImportResource

@ConfigurationProperties注解只能读取全局配置文件(application)【我们并不会将所有配置放在一个文件中】

当使用其他的配置文件时,我们需要@PropertySource注解加载对应配置文件[properties配置文件]。

//@ImportResource导入spring的配置文件(自己写的配置文件)[xml配置文件]

3.@Configuration和@Bean

springboot下使用全注解的方式来实现组件的添加。

@Configuration指明当前类是一个配置类,替代了spring配置文件

@Bean注解:放在方法前,将方法的返回值添加到容器中,容器中这个组件默认的id就是方法名。

4.占位符


5.Profile功能:多环境切换(不同配置文件)

1.多profile文件:在编写主配置文件时,文件名可以带上profile标识

application-{profile}.properties/yml

//例如
application-dev.properties

 

2.yml作为配置文件:使用多文档的方式激活

使用 --- 将yml文件分成多个文档快:

server:
   port:8080//默认
//激活哪一种环境配置
spring:
   prfiles:
   active:dev
---
server:
   port:8081
   profiles:dev//设置生效环境

---

server:
   prot:8083
   profiles:prod//设置生效环境

3.激活

在默认使用的application.properties中激活指定的profile:spring.profiles.active=dev

4优先级关系:由高到低,高可覆盖低的

-file:./config/

-file:./

-classpath:/config

-classpathL./

6.外部配置文件

外部配置加载顺序可查询官方文档。(外部配置优先级大于内部)

1.可在命令行更改配置项。配置项=值

2.使用外部配置文件

7.配置原理

可以看springboot的官方文档,查询配置文件能配置的属性。


**自动配置原理**

之后再补充吧。。

@Conditional派生注解

判断配置是否生效

我们可以通过配置 yml文件:

debug=true 让控制台打印自动配置报告,这样我们就可以知道哪些配置类生效了