SpringBoot配置环境
typora-copy-images-to: upload微服务架构第一个Spring Boot程序jdk 1.8maven 3.6.1springboot 最新版IDEA修改端口号、bannerbanner在线制作网站Spring Boot banner在线生成工具,制作下载banner.txt,修改替换banner.txt文字实现自定义,个性化启动banner-bootschool.net原理
typora-copy-images-to: upload
微服务架构
第一个Spring Boot程序
- jdk 1.8
- maven 3.6.1
- springboot 最新版
- IDEA
修改端口号、banner
banner在线制作网站
Spring Boot banner在线生成工具,制作下载banner.txt,修改替换banner.txt文字实现自定义,个性化启动banner-bootschool.net
原理
自动配置
pom.xml
- spring-boot-dependencies:核心依赖在父工程中!
- 我们在写或者引入SpringBoot依赖的时候不需要指定版本,因为有版本仓库
启动器
-
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter</artifactId> </dependency>
-
启动器:Springboot的启动场景;
-
spring-boot-starter-web,就会自动导入web环境的所有依赖
-
springboot会将所有的功能场景变成一个个启动器
-
我们要使用什么功能,只需要一个个启动器
主程序
//下面的注解用来标注这是一个springboot的应用
@SpringBootApplication
public class Springboot01HelloworldApplication {
public static void main(String[] args) {
//将springboot应用启动
SpringApplication.run(Springboot01HelloworldApplication.class, args);
}
}
-
注解
-
@SpringBootConfiguration :springboot的配置 @Configuration :spring配置类 @Component : spring的一个组件 @EnableAutoConfiguration : 自动配置 @AutoConfigurationPackage :自动配置包 @Import({Registrar.class}):自动配置‘包注册’ @Import({AutoConfigurationImportSelector.class}):导入选择器
-
自动配置的核心文件
- springboot所有的自动配置都是在启动的时候扫描并加载:spring.factories 所有的自动配置类都在这里面,但是不一定生效,要判断条件是否成立,只要导入了对应的start,就有对应的启动器,有了启动器,自动装配就会生效,然后配置成功!
-
- springboot在启动的时候,从类路径下 /META-INF/spring.factories获取指定的值;
- 将这些自动配置的类导入容器,自动配置就会生效,帮我们进行自动配置
- 以前需要自动配置的东西,现在springboot帮我们做
- 整合javaEE,解决方案和自动配置的东西都在spring-boot-autoconfigure:2.5.3这个包下
- 它会把所有需要导入的组件,以类名的方式返回,这些组件就会被添加到容器
- 容器中也会存在很多的 xxxAutoConfiguration的文件,这些类给容器中导入了这个场景需要的所有组件,并自动配置,@Configuration,JavaConfig!
- 有了自动配置类,免去了我们手动编写配置注入功能组件的工作
-
-
-
run方法
- SpringBoot的理解
- 自动装配
- run ()
- SpringBoot的理解
自动装配原理精髓
- SpringBoot启动会加载大量的自动配置类
- 我们看我们需要的功能有没有在SpringBoot默认写好的自动配置类当中;
- 我们再来看这个自动配置类中到底配置了哪些组件; (只要我们要用的组件存在在其中,我们就不需要再手动配置了)
- 给容器中自动配置类添加组件的时候,会从properties类中获取某些属性。 我们只需要在配置文件中指定这些属性的值即可;
xXxxAutoConfigurartion: 自动配置类;给容器中添加组件
xxxxProperties: 封装配置文件中相关属性;
SpringBoot配置
删除原来的properties文件,换成application.yaml
SpringBoot使用一个全局的配置文件,配置文件名称是固定的
-
application.properties
- 语法结构: key = value
-
application.yml
-
语法结构: key : 空格 value
-
#对 空格 的要求十分严格 #普通的 key - value name: chenhao #对象 student: name: chenhao age: 3 #对象的等价行内写法 student1: {name: chenhao, age: 3} #数组 pets: - cat - pig - dog #数组的行内等价写法 pets1: [cat, pig, dog]
-
yaml 可以给实体类赋值
-
例子:
-
新建一个pojo包
-
@Component //把下面的类添加到 spring 组件里面 public class Dog { private String name; private Integer age; }
-
然后自动生成 构造函数(有参无参),get 和 set方法,还有tostring
-
-
配置文件的作用∶修改SpringBoot自动配置的默认值,因为SpringBoot在底层都给我们自动配置好了;
spring传统的内部赋值 原生方式
通过yaml赋值
如何解决?
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-configuration-processor</artifactId>
<optional>true</optional>
</dependency>
yaml的高级玩法 占位符表达式
学会举一反三将配置文件绑定到 java类上,比如连接数据库的 url 等
传统的 properties文件赋值
yaml 的优点
- cp只需要写一次即可, value则需要每个字段都添加
- 松散绑定:这个什么意思呢?比如我的yml中写的last-name,这个和lastName是一样的, -后面跟着的字母默认是大写的。这就是松散绑定
- JSR303数据校验,这个就是我们可以在字段是增加一层过滤器验证,可以保证数据的合法性
- 复杂类型封装,yml中可以封装对象,使用@value就不支持
yaml 的相关配置
yaml多套环境配置
也可以把三个文件集合到一个文件内
更多推荐
所有评论(0)