博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
SpringBoot框架完整‖怎么写一个基础项目
阅读量:3959 次
发布时间:2019-05-24

本文共 7560 字,大约阅读时间需要 25 分钟。

SpringBoot第一个程序–springboot_demo_01

qq_2405310636的博客,qq此号,如有不懂加此号联系我

文章目录

环境:

  • jdk1.8
  • maven 3.6.1
  • springboot:最新版本
  • IDEA

官方:提供了一个快速生成的网站!

  • 可以在直接下载后,importIDEA开发
  • 直接使用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来配置;比如一个简单的端口配置,我们来对比一下yamlxml

    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  #Map
    maps: {
    you: pig,me: hada} #List
    lists: - java - spring #Dog pojo dog: name: ${
    person.name}的狗 age: ${
    dog3.age}dog3: name: 豆豆3 age: 193 dog:# ${person1.name:未命名}的狗 里面的 :未命名 是默认值,即如果person1.name是空就取默认值 name: ${
    person1.name:未命名}的狗 age: ${
    dog3.age}

pojo给属性赋值:

spring@Value直接在属性上写:1

application.properties文件:2

.yaml文件:3

优先级:.yaml > @Value 且 application.properties

1.直接写值

public class Dog {
//用@Value是spring的方式,也可以用 @Value("旺财") private String name; @Value("3") private Integer age;

2.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); }}

3.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数据校验 支持 不支持
复杂类型封装 支持 不支持

4.松散绑定

#在yaml文件给pojo属性赋值时,遇到驼峰命名的属性可以这样写#表示驼峰式、下划线(_)、短横线(-)#标准方式person.firstName#方式一#大写用-person.first-name#方式二#大写用_person.first_name

5.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.配置位置

#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:/

2.多环境配置文件

  • 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/

你可能感兴趣的文章
拓扑排序
查看>>
POJ 3680(费用流)
查看>>
校oj10532: 生成字符串(dp,最优状态转移)
查看>>
平衡二叉树(AVL树)
查看>>
优先队列---二叉堆
查看>>
POJ1521---哈夫曼编码,求最优WPL
查看>>
POJ---2010(Moo University - Financial Aid,优先队列)
查看>>
POJ---3662(Telephone Lines,最短路+二分*好题)
查看>>
L2-007. 家庭房产(并查集)
查看>>
L2-016. 愿天下有情人都是失散多年的兄妹(搜索)
查看>>
L2-019. 悄悄关注
查看>>
POJ 3468 A Simple Problemwith Integers(SplayTree入门题)
查看>>
营业额统计 HYSBZ - 1588 (伸展树简单应用)
查看>>
HDU 1890 Robotic Sort(伸展树---反转应用)
查看>>
POJ 3580 SuperMemo(伸展树的几个基本操作)
查看>>
(十) Web与企业应用中的连接管理
查看>>
(八) 正则表达式
查看>>
一.JavaScript 基础
查看>>
6.ECMAScript 对象
查看>>
7.ECMAScript 继承
查看>>