SpringBoot 入门基础

xiaoxiao2025-11-27  7

一、springboot入门

    –jdk1.8:Spring Boot 推荐jdk1.7及以上;java version "1.8.0_112"     –maven3.x:maven 3.3以上版本;Apache Maven 3.3.9     –IntelliJIDEA2017:IntelliJ IDEA 2017.2.2 x64、STS     –SpringBoot 1.5.9.RELEASE:1.5.9;          idea配置:         <profile>         <id>jdk‐1.8</id>         <activation>         <activeByDefault>true</activeByDefault>         <jdk>1.8</jdk>         </activation>         <properties>         <maven.compiler.source>1.8</maven.compiler.source>         <maven.compiler.target>1.8</maven.compiler.target>         <maven.compiler.compilerVersion>1.8</maven.compiler.compilerVersion>         </properties>         </profile> 二:springboot HelloWorld

    1.创建一个maven工程;(jar)     2.导入spring boot相关的依赖:导入parent后根据场景配置各种starter         <parent>         <groupId>org.springframework.boot</groupId>         <artifactId>spring‐boot‐starter‐parent</artifactId>         <version>1.5.9.RELEASE</version>         </parent>         <dependencies>         <dependency>         <groupId>org.springframework.boot</groupId>         <artifactId>spring‐boot‐starter‐web</artifactId>         </dependency>         </dependencies>     3.编写自己的程序应用         @SpringBootApplication:用在主程序类上,表明是一个Spring Boot应用         main方法中用// Spring应用启动起来         SpringApplication.run(HelloWorldMainApplication.class,args);启动                  编写相关的Controller、Service     4         @Controller         public class HelloController {                  @ResponseBody         @RequestMapping("/hello")         public String hello(){         return "Hello World!";         }         }     5简化配置     <!‐‐ 这个插件,可以将应用打包成一个可执行的jar包;‐‐>         <build>         <plugins>         <plugin>         <groupId>org.springframework.boot</groupId>         <artifactId>spring‐boot‐maven‐plugin</artifactId>         </plugin>         </plugins>         </build 三、配置文件             1、配置文件         SpringBoot使用一个全局的配置文件,配置文件名是固定的;         •application.properties:数组用逗号隔开 比如:pets=cat,dog,agt         •application.yml或者yaml后缀都可以                  1、基本语法             k:(空格)v:表示一对键值对(空格必须有);             以空格的缩进来控制层级关系;只要是左对齐的一列数据,都是同一个层级的                  2、值的写法             1 字面量:普通的值(数字,字符串,布尔)             k: v:字面直接来写;             字符串默认不用加上单引号或者双引号;             "":双引号;不会转义字符串里面的特殊字符;特殊字符会作为本身想表示的意思             name: "zhangsan \n lisi":输出;zhangsan 换行 lisi             '':单引号;会转义特殊字符,特殊字符最终只是一个普通的字符串数据             name: ‘zhangsan \n lisi’:输出;zhangsan \n lisi             对象、Map(属性和值)(键值对):             k: v:在下一行来写对象的属性和值的关系;注意缩进                          2 对象还是k: v的方式                     friends:                         lastName: zhangsan                         age: 20                                              行内写法:friends: {lastName: zhangsan,age: 18}             3 数组(List、Set):             用- 值表示数组中的一个元素                 pets:                     ‐ cat                     ‐ dog                     ‐ pig                                      行内写法:pets: [cat,dog,pig]                              2、获取配置文件的值                     @value():字面量/${key}从环境变量、配置文件中获取值/#{SpEL}                     @ConfigurationPropertie:                     属性匹配规则:person.firstName:使用标准方式                                     person.first-name:大写用-                                     person:first_name:大写用_                                     PERSON.FIRST_NAME:推荐系统属性使用这种写法                                          两者的区别是:                     @ConfigurationPropertie:批量导入,支持松散绑定,jre303数据校验,复杂类型封装                     @value:一个一个导入,支持spel表达式                                               3、@PropertySource&@ImportResource&@Bean                 PropertySource:加载指定的配置文件                                  @ImportResource:导入Spring的配置文件,让配置文件里面的内容生效;                 Spring Boot里面没有Spring的配置文件,我们自己编写的配置文件,也不能自动识别;                 想让Spring的配置文件生效,加载进来;@ImportResource标注在一个配置类上                                  springboot 推荐给容器中添加组件的方式:                 注解:@Configuration 和@Bean                 1、配置类@Configuration------>Spring配置文件                 2、使用@Bean给容器中添加组件

 

配置文件值注入

person: lastName: hello age: 18 boss: false birth: 2017/12/12 maps: {k1: v1,k2: 12} lists: ‐ lisi ‐ zhaoliu dog: name: 小狗 age: 12

javaBean:

/** * 将配置文件中配置的每一个属性的值,映射到这个组件中 * @ConfigurationProperties:告诉SpringBoot将本类中的所有属性和配置文件中相关的配置进行绑定; * prefix = "person":配置文件中哪个下面的所有属性进行一一映射 * * 只有这个组件是容器中的组件,才能容器提供的@ConfigurationProperties功能; * */ @Component @ConfigurationProperties(prefix = "person") public class Person { private String lastName; private Integer age; private Boolean boss; private Date birth; private Map<String,Object> maps; private List<Object> lists; private Dog dog;

<!‐‐导入配置文件处理器,配置文件进行绑定就会有提示‐‐> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring‐boot‐configuration‐processor</artifactId> <optional>true</optional> </dependency>

 

3、配置文件注入值数据校验

@Component @ConfigurationProperties(prefix = "person") @Validated public class Person { /** * <bean class="Person"> * <property name="lastName" value="字面量/${key}从环境变量、配置文件中获取值/# {SpEL}"></property> * <bean/> */ //lastName必须是邮箱格式 @Email //@Value("${person.last‐name}") private String lastName; //@Value("#{11*2}") private Integer age; //@Value("true") private Boolean boss; private Date birth; private Map<String,Object> maps; private List<Object> lists; private Dog dog;

4、@PropertySource&@ImportResource&@Bean @PropertySource:加载指定的配置文件;

/** * 将配置文件中配置的每一个属性的值,映射到这个组件中 * @ConfigurationProperties:告诉SpringBoot将本类中的所有属性和配置文件中相关的配置进行绑定; * prefix = "person":配置文件中哪个下面的所有属性进行一一映射 * * 只有这个组件是容器中的组件,才能容器提供的@ConfigurationProperties功能; * @ConfigurationProperties(prefix = "person")默认从全局配置文件中获取值; * */ @PropertySource(value = {"classpath:person.properties"}) @Component @ConfigurationProperties(prefix = "person") //@Validated public class Person { /** * <bean class="Person"> * <property name="lastName" value="字面量/${key}从环境变量、配置文件中获取值/# {SpEL}"></property> * <bean/> */ //lastName必须是邮箱格式 // @Email //@Value("${person.last‐name}") private String lastName; //@Value("#{11*2}") private Integer age; //@Value("true") private Boolean boss;

SpringBoot推荐给容器中添加组件的方式;推荐使用全注解的方式 1、配置类@Configuration------>Spring配置文件 2、使用@Bean给容器中添加组件

 

//@Configuration:指明当前类是一个配置类;就是来替代之前的Spring配置文件.在配置文件中用<bean><bean/>标签添加组件

@Configuration public class MyAppConfig { //将方法的返回值添加到容器中;容器中这个组件默认的id就是方法名 @Bean public HelloService helloService02(){ System.out.println("配置类@Bean给容器中添加组件了..."); return new HelloService(); } }

 

4、配置文件占位符 ${random.value}、${random.int}、${random.long} ${random.int(10)}、${random.int[1024,65536]}

2、占位符获取之前配置的值,如果没有可以是用:指定默认值

person.last‐name=张三${random.uuid} person.age=${random.int} person.birth=2017/12/15 person.boss=false person.maps.k1=v1 person.maps.k2=14 person.lists=a,b,c person.dog.name=${person.hello:hello}_dog person.dog.age=15

5、Profile

1、多Profile文件 我们在主配置文件编写的时候,文件名可以是 application-{profile}.properties/yml 默认使用application.properties的配置; 2、yml支持多文档块方式

server: port: 8081 spring: profiles: active: prod ‐‐‐ server: port: 8083 spring: profiles: dev ‐‐‐ server: port: 8084 spring: profiles: prod #指定属于哪个环境

3、激活指定profile 1、在配置文件中指定 spring.profiles.active=dev 2、命令行: java -jar spring-boot-02-config-0.0.1-SNAPSHOT.jar --spring.profiles.active=dev; 可以直接在测试的时候,配置传入命令行参数 3、虚拟机参数; -Dspring.profiles.active=dev

 

 

6、配置文件加载位置 springboot 启动会扫描以下位置的application.properties或者application.yml文件作为Spring boot的默认配置文 件 –file:./config/ –file:./ –classpath:/config/ –classpath:/优先级由高到底, 优先级由高到低,互补配置,,高优先级的配置会覆盖低优先级的配置;

 

SpringBoot会从这四个位置全部加载主配置文件;互补配置; 我们还可以通过spring.config.location来改变默认的配置文件位置 项目打包好以后,我们可以使用命令行参数的形式,启动项目的时候来指定配置文件的新位置;指定配置文件和默 认加载的这些配置文件共同起作用形成互补配置; java -jar spring-boot-02-config-02-0.0.1-SNAPSHOT.jar --spring.config.location=G:/application.properties

 

7、外部配置加载顺序

 

SpringBoot也可以从以下位置加载配置; 优先级从高到低;高优先级的配置覆盖低优先级的配置,所有的配置会 形成互补配置 1.命令行参数 所有的配置都可以在命令行上进行指定 java -jar spring-boot-02-config-02-0.0.1-SNAPSHOT.jar --server.port=8087 --server.context-path=/abc 多个配置用空格分开; --配置项=值 2.来自java:comp/env的JNDI属性 3.Java系统属性(System.getProperties()) 4.操作系统环境变量 5.RandomValuePropertySource配置的random.*属性值

 

由jar包外向jar包内进行寻找; 优先加载带profile 6.jar包外部的application-{profile}.properties或application.yml(带spring.profile)配置文件 7.jar包内部的application-{profile}.properties或application.yml(带spring.profile)配置文件 再来加载不带profile 8.jar包外部的application.properties或application.yml(不带spring.profile)配置文件 9.jar包内部的application.properties或application.yml(不带spring.profile)配置文件

 

10.@Configuration注解类上的@PropertySource 11.通过SpringApplication.setDefaultProperties指定的默认属性 所有支持的配置加载来源;

转载请注明原文地址: https://www.6miu.com/read-5040080.html

最新回复(0)