前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >SpringBoot基础(一)

SpringBoot基础(一)

作者头像
润森
发布2020-02-25 11:45:54
3290
发布2020-02-25 11:45:54
举报
文章被收录于专栏:毛利学Python毛利学Python

@Author:By Runsen

原文:https://maoli.blog.csdn.net/article/details/103435577

spring项目结构介绍

  • src/main/java 程序开发以及主程序入口
  • src/main/resources 配置文件
  • src/test/java 测试程序

在这里插入图片描述

resources文件夹中目录结构

  • static:保存所有的静态资源;js css images;
  • templates:保存所有的模板页面;(Spring Boot默认jar包使用嵌入式的Tomcat,默认不支持JSP页面);可以使用模板引擎(freemarker、thymeleaf);
  • application.properties:Spring Boot应用的配置文件;可以修改一些默认设置;比如端口

分析pom文件

配置文件

SpringBoot使用一个全局的配置文件,配置文件名是固定的;

application.propertiesapplication.yml

配置文件的作用:修改SpringBoot自动配置的默认值;SpringBoot在底层都给我们自动配置好;

在这里插入图片描述

在这里插入图片描述

yaml语法

YAML中允许表示三种格式,分别是常量值,对象和数组

k:(空格)v:表示一对键值对(空格必须有);

空格的缩进来控制层级关系;只要是左对齐的一列数据,都是同一个层级的

代码语言:javascript
复制
server:
    port: 8081
    path: /hello

属性和值也是大小写敏感;

"":双引号;不会转义字符串里面的特殊字符;特殊字符会作为本身想表示的意思

name: "zhangsan \n lisi":输出;zhangsan 换行 lisi

'':单引号;会转义特殊字符,特殊字符最终只是一个普通的字符串数据

name: ‘zhangsan \n lisi’:输出;zhangsan \n lisi

代码语言:javascript
复制
#即表示url属性值;
url: https://www.baidu.con 
#即表示server.host属性的值;
server:
    host: https://www.baidu,com
#数组,即表示server为[a,b,c]
server:
    - 120.168.117.21
    - 120.168.117.22
    - 120.168.117.23
#常量
pi: 3.14   #定义一个数值3.14
hasChild: true  #定义一个boolean值
name: '你好YAML'   #定义一个字符串
maps: {k1: v1,k2: 12}

配置文件值注入

JavaBean

JavaBean 是一种JAVA语言写成的可重用组件。为写成JavaBean,类必须是具体的和公共的,并且具有无参数的构造器。

@ConfigurationProperties获取值

SpringBoot的配置文件有yml和properties两种

@Component 组件必须是容器中的组件 @ConfigurationProperties(prefix = "person")

代码语言:javascript
复制
/**
 * 将配置文件中配置的每一个属性的值,映射到这个组件中
 * @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;

ALT+INS添加属性和toString方法

代码语言:javascript
复制
public class Dog {
    private String name;
    private Integer age;
}

在spring入门添加@ComponentScan("com.atguigu")找到对应的Component

pom.xml文件中导入文件处理器

代码语言:javascript
复制
<!--导入配置文件处理器,配置文件进行绑定就会有提示-->
<dependency>
	<groupId>org.springframework.boot</groupId>
	<artifactId>spring-boot-configuration-processor</artifactId>
	<optional>true</optional>
</dependency>
properties配置文件在idea中默认utf-8可能会乱码

在这里插入图片描述

测试数据导入

注意导入模块

代码语言:javascript
复制
import org.junit.Test;

@RunWith(SpringRunner.class)
@SpringBootTest
class DemoApplicationTests {

    @Autowired
    Person person;

    @Test
    void contextLoads() {
        System.out.println(person);
    }

}

在这里插入图片描述

对应的yml

代码语言:javascript
复制
person:
  lastName: hello
  age: 18
  a
  boss: false
  birth: 2017/12/12
  maps: {k1: v1,k2: 12}
  lists:
    - lisi
    - zhaoliu
  dog:
    name: 小狗
    age: 12

@Value获取值

代码语言:javascript
复制
@Component
public class Person {
	//last-name和lastName一样
    @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;
}

在这里插入图片描述

在这里插入图片描述

通过@ConfigurationProperties获取值可以检验数据

但是@Value获取值没有报错

在这里插入图片描述

在这里插入图片描述

如果说,我们只是在某个业务逻辑中需要获取一下配置文件中的某项值,使用@Value;如果说,我们专门编写了一个javaBean来和配置文件进行映射,我们就直接使用@ConfigurationProperties

@Value典型场景

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2020-02-13,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 小刘IT教程 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • spring项目结构介绍
  • 分析pom文件
  • 配置文件
  • yaml语法
  • 配置文件值注入
    • JavaBean
    • @ConfigurationProperties获取值
      • properties配置文件在idea中默认utf-8可能会乱码
        • 测试数据导入
        • @Value获取值
        • @Value典型场景
        相关产品与服务
        容器服务
        腾讯云容器服务(Tencent Kubernetes Engine, TKE)基于原生 kubernetes 提供以容器为核心的、高度可扩展的高性能容器管理服务,覆盖 Serverless、边缘计算、分布式云等多种业务部署场景,业内首创单个集群兼容多种计算节点的容器资源管理模式。同时产品作为云原生 Finops 领先布道者,主导开源项目Crane,全面助力客户实现资源优化、成本控制。
        领券
        问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档