本文共 7560 字,大约阅读时间需要 25 分钟。
SpringBoot
第一个程序–springboot_demo_01
qq_2405310636的博客,qq此号,如有不懂加此号联系我
jdk1.8
maven 3.6.1
springboot
:最新版本import
进IDEA
开发IDEA
创建一个springboot
项目(SpringInitialer
)maven
--> package
注意:pom.xml
中一定要写
org.springframework.boot spring-boot-maven-plugin
target
下的jar --> show in explorer
--> cmd
-->java -jar .\demo-0.0.1-SNAPSHOT.jar
(这个jar的名称,你可以直接写一部分,按TAB键补全)
修改banner
:
banner.txt
文件放到项目resources
文件下 yaml
语法:SpringBoot
配置文件书写规则:
application.properties
语法结构:key=value
application.yaml
语法结构:key:空格value
配置文件的作用:修改SpringBoot
自动配置的默认值,因为SpringBoot
在底层都给我们配置好了。
标记语言:
以前的配置文件,大多数都是使用xml
来配置;比如一个简单的端口配置,我们来对比一下yaml
和xml
yaml
配置:
server: port: 8081
xml
配置
8081
yaml
语法
# .properties 是 key=value# yaml 既可以写 key=value 也可以写对象server: port: 8081#对象# .properties 是 key=value# yaml 既可以写 key=value 也可以写对象server: port: 8081person: #String name: zy #Integer age: 21 #boolean happy: true #Date birth: 1999/07/01 #Mapmaps: { you: pig,me: hada} #List
pojo
给属性赋值:用spring
的@Value
直接在属性上写:1
用application.properties
文件:2
用.yaml
文件:3
优先级:.yaml > @Value 且 application.properties
public class Dog { //用@Value是spring的方式,也可以用 @Value("旺财") private String name; @Value("3") private Integer age;
application.properties
name=钰兔
取值方法
@PropertySource(value = "classpath:application.properties")public class Person { @Value("${name}") private String name;
测试打印
@RunWith(SpringRunner.class)@SpringBootTestpublic class DemoApplicationTests { @Autowired Person person; @Test public void contextLoads() { System.out.println(person); }}
application.yaml
person: name: zy age: 21 happy: true birth: 1999/07/01 maps: { you: pig,me: hada} lists: - java - spring dog: name: 豆豆 age: 19
赋值
@ConfigurationProperties(prefix = "person")//这个在yaml文件的时候用public class Person {
测试打印
@RunWith(SpringRunner.class)@SpringBootTestpublic class DemoApplicationTests { @Autowired Person person; @Test public void contextLoads() { System.out.println(person); }}
@ConfigurationProperties | @Value | |
---|---|---|
功能 | 批量注入配置文件中的属性 | 一个一个指定 |
松散绑定(松散语法) | 支持 | 不支持 |
SpEL | 不支持 | 支持${属性} |
JSR303 数据校验 | 支持 | 不支持 |
复杂类型封装 | 支持 | 不支持 |
#在yaml文件给pojo属性赋值时,遇到驼峰命名的属性可以这样写#表示驼峰式、下划线(_)、短横线(-)#标准方式person.firstName#方式一#大写用-person.first-name#方式二#大写用_person.first_name
JSR303
数据校验依赖
org.springframework.boot spring-boot-starter-validation
POJO
@Validated//JRS303 数据校验public class Person { private String name; private Integer age; private Boolean happy; private Date birth; @Email(message = "邮箱填写不合法") private String email;
yaml
person: name: zy age: 21 happy: true birth: 1999/07/01 email: 123
//空检查 @Null //验证对象是否为null @NotNull //验证对象是否不为null, 无法查检长度为0的字符串 @NotBlank //检查约束字符串是不是Null还有被Trim的长度是否大于0,只对字符串,且会去掉前后空格. @NotEmpty //检查约束元素是否为NULL或者是EMPTY.//Booelan检查 @AssertTrue //验证 Boolean 对象是否为 true @AssertFalse //验证 Boolean 对象是否为 false//长度检查 @Size(min=, max=) //验证对象(Array,Collection,Map,String)长度是否在给定的范围之内 @Length(min=, max=) //Validates that the annotated string is between min and max included.//日期检查 @Past //验证 Date 和 Calendar 对象是否在当前时间之前,验证成立的话被注释的元素一定是一个过去的日期 @Future //验证 Date 和 Calendar 对象是否在当前时间之后 ,验证成立的话被注释的元素一定是一个将来的日期 @Pattern //验证 String 对象是否符合正则表达式的规则,被注释的元素符合制定的正则表达式,regexp:正则表达式 flags: 指定 Pattern.Flag 的数组,表示正则表达式的相关选项。//数值检查 //建议使用在Stirng,Integer类型,不建议使用在int类型上,因为表单值为“”时无法转换为int,但可以转换为Stirng为”“,Integer为null @Min //验证 Number 和 String 对象是否大等于指定的值 @Max //验证 Number 和 String 对象是否小等于指定的值 @DecimalMax //被标注的值必须不大于约束中指定的最大值. 这个约束的参数是一个通过BigDecimal定义的最大值的字符串表示.小数存在精度 @DecimalMin //被标注的值必须不小于约束中指定的最小值. 这个约束的参数是一个通过BigDecimal定义的最小值的字符串表示.小数存在精度 @Digits //验证 Number 和 String 的构成是否合法 @Digits(integer=,fraction=) //验证字符串是否是符合指定格式的数字,interger指定整数精度,fraction指定小数精度。 @Range(min=, max=) //被指定的元素必须在合适的范围内 @Range(min=10000,max=50000,message=”range.bean.wage”) @Valid //递归的对关联对象进行校验, 如果关联对象是个集合或者数组,那么对其中的元素进行递归校验,如果是一个map,则对其中的值部分进行校验.(是否进行递归验证) @CreditCardNumber //信用卡验证 @Email //验证是否是邮件地址,如果为null,不进行验证,算通过验证。 @ScriptAssert(lang= ,script=, alias=) @URL(protocol=,host=, port=,regexp=, flags=)
#1 配置文件优先级由上至下递减file:./config/file:./classpath:/config/classpath:/#2file:./custom-config/classpath:custom-config/#3file:./custom-config/classpath:custom-config/file:./config/file:./classpath:/config/classpath:/
yaml
(位置自己放,上面有)
server: port: 8084spring: profiles: active: dev# active 选择激活哪一个配置,可以选择激活yaml或properties文件的。---server: port: 8081spring: profiles: dev---server: port: 8082spring: profiles: test---
properties
(等价的写法,就是有点麻烦)
server.port=8081
springboot
框架的样子pom.xml
4.0.0 org.springframework.boot spring-boot-starter-parent 2.3.2.RELEASE com.lyc demo 0.0.1-SNAPSHOT springboot_001 Demo project for Spring Boot 1.8 org.springframework.boot spring-boot-starter-web org.springframework.boot spring-boot-starter-test test org.junit.vintage junit-vintage-engine org.springframework.boot spring-boot-maven-plugin
com.lyc.demo.Springboot001Application.java
不可更改,允许添加
package com.lyc.demo;import org.springframework.boot.SpringApplication;import org.springframework.boot.autoconfigure.SpringBootApplication;//本身就是spring的一个组件//程序的主入口,不能删也不能改@SpringBootApplicationpublic class Springboot001Application { public static void main(String[] args) { SpringApplication.run(Springboot001Application.class, args); }}
com.lyc.demo.controller.java
package com.lyc.demo.controller;import org.springframework.web.bind.annotation.RequestMapping;import org.springframework.web.bind.annotation.RestController;//自动装配@RestControllerpublic class HelloController { @RequestMapping("/hello") public String hello(){ //调用业务接收前端的参数 return "hello"; }}
reeources.application.properties
#无
test.java.com.lyc.demo.Springboot001ApplicationTests
不可更改,允许添加
package com.lyc.demo;import org.junit.jupiter.api.Test;import org.springframework.boot.test.context.SpringBootTest;//单元测试@SpringBootTestclass Springboot001ApplicationTests { @Test void contextLoads() { }}
qq_2405310636的博客: 创作不易,如需引用,请注明出处。
转载地址:http://vttzi.baihongyu.com/