SpringBoot学习第一天

SpringBoot01
一.
创建一个简单的SpringBoot项目
①项目创建方式一: 使用Spring Initializr 的 Web页面创建项目
1、打开   https://start.spring.io/
2、填写项目信息
3、点击”Generate Project“按钮生成项目;下载此项目
4、解压项目包,并用IDEA以Maven项目导入,一路下一步即可,直到项目导入完毕。
5、如果是第一次使用,可能速度会比较慢,包比较多、需要耐心等待一切就绪。
项目创建方式二: 使用 IDEA 直接创建项目
1、创建一个新项目
2、选择spring initalizr , 可以看到默认就是去官网的快速构建工具那里实现
3、填写项目信息
4、选择初始化的组件(初学勾选 Web 即可)
5、填写项目路径
6、等待项目构建成功
uploading.4e448015.gif转存失败重新上传取消
uploading.4e448015.gif转存失败重新上传取消
uploading.4e448015.gif转存失败重新上传取消
二.
项目目录结构
uploading.4e448015.gif转存失败重新上传取消
下面的结构介绍参考文章: https://blog.csdn.net/aisahngLIFE/article/details/85273758

比较特殊的文件和文件夹
①.Idea存放项目的配置信息,包括历史记录,版本控制信息等。其实可以不用理它,也可以在IDEA里面设置隐藏它
②.mvn用来存放maven-wrapper.properties和相关jar包
③.gitignore是分布式版本控制系统git的配置文件,意为忽略提交
④.iml文件存的是项目的配置信息,可以不用管它,可以删掉,在运行的时候会自动重新创建它
⑤mvnw 全名是maven wrapper
它的原理是在maven-wrapper.properties文件中记录你要使用的maven版本,当用户执行mvnw clean 命令时,发现当前用户的maven版本和期望的版本不一致,那么就下载期望的版本,然后用期望的版本来执行mvn命令
mvn.cmd–执行mvnw命令的cmd入口
三.
pom.xml
<parent>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-parent</artifactId>
    <version>2.2.6.RELEASE</version>
    <relativePath/> <!-- lookup parent from repository -->
</parent>


<dependencies>
    <dependency>
        <!--web场景启动器-->
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-web</artifactId>
    </dependency>




    <dependency>
        <!--springboot单元测试-->
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-test</artifactId>
        <scope>test</scope>
        <!--剔出依赖-->
        <exclusions>
            <exclusion>
                <groupId>org.junit.vintage</groupId>
                <artifactId>junit-vintage-engine</artifactId>
            </exclusion>
        </exclusions>
    </dependency>
</dependencies>




<build>
    <plugins>
        <!--打包插件-->
        <plugin>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-maven-plugin</artifactId>
        </plugin>
    </plugins>
</build>

 

四.
编写一个http接口
1、在主程序的同级目录下,新建一个controller包, 一定要在同级目录下,否则识别不到
2、在包中新建一个DemoController类
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;


@RestController
public class DemoController {


    @RequestMapping("/demo")
    public String demo(){
        return "HelloWorld!!!";
    }
}

 

3、编写完毕后,从主程序启动项目,浏览器发起请求,看页面返回;控制台输出了 Tomcat 访问的端口号!
五.
打成jar包
uploading.4e448015.gif转存失败重新上传取消
如果遇到报错,可以配置打包时 跳过项目运行测试用例
<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-surefire-plugin</artifactId>
    <configuration>
        <!--跳过项目运行测试用例-->
        <skipTests>true</skipTests>
    </configuration>
</plugin>

如何更改项目端口号
在application.properties中加入
server.port=8081
七.
更改启动时显示的字符拼成的字母,SpringBoot呢?也就是 banner 图案;
只需一步:到项目下的 resources 目录下新建一个banner.txt 即可。
图案可以到: https://www.bootschool.net/ascii 这个网站生成,然后拷贝到文件中即可

八.
SpringBoot配置文件
  • application.properties
    • 语法结构:key=value
  • application.yaml  (推荐使用)
    • 语法结构:key:空格 value
九.
通过ymal给属性赋值
1.
创建Person和Dog实体类
@Data
@Component
public class Person {

    private String name;
    private Integer age;
    private boolean happy;
    private Date birth;
    private Map<String,Object> map;
    private List<String> list;
    private Dog dog;

}
@Data
@Component
public class Dog {

    private String name;
    private Integer age;

}
application.yaml
person:
  name: "hello"
  age: 22
  happy: false
  birth: 2020/04/14
  map: {k1: v1,k2: v2}
  list:
    - code
    - music
  dog:
    name: "doge"
    age: 10

 

2.
在Person类加上 @ConfigurationProperties ( prefix = "person" )注解 
这时会报红,点击引导网站添加依赖
 
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-configuration-processor</artifactId>
    <optional>true</optional>
</dependency>
3.
启动项目测试
可以获取到数据
Person(name=hello, age=22, happy=false, birth=Tue Apr 14 00:00:00 CST 2020, map={k1=v1, k2=v2}, list=[code, music], dog=Dog(name=doge, age=10))
4.
@ConfigurationProperties作用
将配置文件中配置的每一个属性的值,映射到这个组件中,告诉SpringBoot将本类中的所有属性和配置文件中相关的配置进行绑定。
参数prefix:将配置文件中的所有属性一一对应
只有这个组件是容器中的组件,才能使用容器提供的@ConfigurationProperties功能
5.
除了使用yaml还可以使用properties配置属性值
    5.1  在resources目录下新建一个 person.properties 文件
name=zhangsan
    5.2   然后在我们的代码中指定加载 person.properties 文件
@Data
@Component
@PropertySource(value = "classpath:person.properties")
public class Person {
    @Value("name")
    private String name;
    
       ......
}

 

 
输出结果:Person(name=name, age=null, happy=false, birth=null, map=null, list=null, dog=null)
如果遇到 properties配置文件在写中文的时候,有乱码 ,可以去IDEA中设置编码格式为UTF-8;
settings-->FileEncodings 中配置;
uploading.4e448015.gif转存失败重新上传取消
十.
配置文件占位符
person:
  name: ${random.uuid} #随机数uuid
  age: ${random.int}  #随机数int
  happy: false
  birth: 2020/04/14
  map: {k1: v1,k2: v2}
  list:
    - code
    - music
  dog:
    name: ${abc:默认值}_旺财 #当这个abc是存在的时候赋值abc中的值,不存在赋值默认值
    age: 10

 

输出结果:Person(name=1faa4cdc-5fcd-4428-9541-b54c425bbf81, age=-1856721532, happy=false, birth=Tue Apr 14 00:00:00 CST 2020, map={k1=v1, k2=v2}, list=[code, music], dog=Dog(name=默认值_旺财, age=10))
十一.
1.@ConfigurationProperties和@Value的区别
uploading.4e448015.gif转存失败重新上传取消
2.松散绑定
yml中写的last-name,这个和lastName是一样的, - 后面跟着的字母默认是大写的。这就是松散绑定。
有点类似于之前学习Vue中ES6的驼峰写法
比如:在注册组件中使用了一个子组件叫做demoComponent,在<template></template>中引用子组件标签<demo-component/>
写个例子:
#application.yaml
person:
  last-name: ${random.uuid} #随机数uuid

-------------------------------------------------------------------------------------------------
//Person.java
@Data
@Component
@ConfigurationProperties(prefix = "person")
public class Person {
    private String lastName;
    ......
}

 

 
输出结果:
Person(lastName=20b240a6-dd1a-4018-ab3b-e4dc54266dfe, age=1706709056, happy=false, birth=Tue Apr 14 00:00:00 CST 2020, map={k1=v1, k2=v2}, list=[code, music], dog=Dog(name=默认值_旺财, age=10))
3.
JSR303数据校验 , 这个就是我们可以在字段是增加一层过滤器验证 , 可以保证数据的合法性。
Springboot中可以用@validated来校验数据,如果数据异常则会统一抛出异常,方便异常中心统一处理。我们这里来写个注解让我们的name只能支持Email格式。
@Component //注册bean
@ConfigurationProperties(prefix = "person")
@Validated  //数据校验
public class Person {


    @Email(message="邮箱格式错误") //name必须是邮箱格式
    private String name;
}

 

运行结果 :default message [不是一个合法的电子邮件地址];
uploading.4e448015.gif转存失败重新上传取消
4.
复杂类型封装,yml中可以封装对象 , 使用value就不支持
 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值