Spring Boot笔记二:快速创建以及yml文件自动注入
上个笔记写了如何自己去创建Spring boot,以及如何去打jar包,其实,还是有些麻烦的,我们还自己新建了几个文件夹不是。
Idea可以让我们快速的去创建Spring boot应用,来看
一、快速创建Spring boot




没啥讲的了,点击完成之后,我们需要等待几分钟,Idea会帮我们下载配置一些东西。
二、yml文件和自动注入
配置文件这个,我不打算细说,粗略的介绍一下,用的时候去百度就好了,目前已知的配置文件
1.xml
2.properties
3.yml
这三个里面,我最喜欢的是yml,最不喜欢的是xml
举个例子,比如的的name是许嵩,age是32
yml的写法是这样的:(中间一定有个空格)
name: 许嵩
age:
而xml的写法是这样的。。。。。苍天啊。。。。
<name>许嵩</name>
<age></age>
书归正传,我们开始写了
首先,我们创建两个类,一个Person,一个Dog
package com.vae.springboot.study.bean; import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.stereotype.Component; import java.util.Date;
import java.util.List;
import java.util.Map; @Component
@ConfigurationProperties(prefix = "person")
public class Person { private String name;
private Integer age;
private Boolean boss;
private Date birth;
private Map<String,Object> maps;
private List<String> lists;
private Dog dog; @Override
public String toString() {
return "Person{" +
"name='" + name + '\'' +
", age=" + age +
", boss=" + boss +
", birth=" + birth +
", maps=" + maps +
", lists=" + lists +
", dog=" + dog +
'}';
} public Boolean getBoss() {
return boss;
} public void setBoss(Boolean boss) {
this.boss = boss;
} public Date getBirth() {
return birth;
} public void setBirth(Date birth) {
this.birth = birth;
} public Map<String, Object> getMaps() {
return maps;
} public void setMaps(Map<String, Object> maps) {
this.maps = maps;
} public List<String> getLists() {
return lists;
} public void setLists(List<String> lists) {
this.lists = lists;
} public Dog getDog() {
return dog;
} public void setDog(Dog dog) {
this.dog = dog;
} public String getName() {
return name;
} public void setName(String name) {
this.name = name;
} public Integer getAge() {
return age;
} public void setAge(Integer age) {
this.age = age;
}
}
package com.vae.springboot.study.bean;
public class Dog {
private String name;
private Integer age;
@Override
public String toString() {
return "Dog{" +
"name='" + name + '\'' +
", age=" + age +
'}';
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public Integer getAge() {
return age;
}
public void setAge(Integer age) {
this.age = age;
}
}
这里有一个非常重要的一点,一定要写ToString方法,我为了省事,没写这个,结果注入之后没有显示出来 一定要写!
OK,现在来讲一下
@Component 这个是加入到spring容器中
@ConfigurationProperties(prefix = "person") 这个是把类和我们的配置文件进行关联,找的是person
我们再新建一个yml文件,如图:

虽然上面有了一个properties,但是不管他,这俩是谁有谁起效,都有都一样的话properties起效,貌似是
看看我的yml里面写的啥
person:
age: 32
name: Vae
birth: 1985/05/14
boss: false
maps: {k1: v1,k2: 12}
lists:
- 许嵩
- 林俊杰
dog:
name: 格洛米
age: 3
看看测试里面

自动注入已经写完了,我再次重复一下两个特别重要的点
1.主程序是在study包下面,所有的类啊,Controller啊啥的,必须在study包下面,只有这样,主程序才能对他们起效

2.类,必须写Tostring方法................................
三、题外话
我上面采用的都是最方便的方式,这里把其它方式介绍一下,但是写,还是上面的那样写
首先,配置文件的事,我没讲properties,这个写中文的时候,会有乱码,需要去Idea里面设置一下编码格式为UTF-8
还有,我们的类和配置文件直接关联,我用的是ConfigurationProperties的方式,其实还有一个@Value的方式,这个很难用,但是我还是介绍一下
@Value("${person.name}")
private String name;
@Value("#{11*2}")
private Integer age;
@Value("false")
private Boolean boss;
这里举了三个例子,下面用一张图对比一下@ConfigurationProperties和@Value的区别

1.功能:这个不说了吧,一个写一次完事,一个@Value每一个字段都要加...
2.松散绑定:这个是什么意思呢?比如我的yml里面写 last-name,这个和lastName是一样的意思, - 后面跟着的字母默认是大写的,也就是 last-name=lastName
这个就是松散绑定,@ConfigurationProperties认识这种方式,支持。@Value不认识他。。。
3.SpEL:这个是啥呢就是我们上面写的数字计算的spring表达式语言 ,年龄age上的 @Value("#{11*2}") 这个是11*2=22岁,@Value可以计算这个,@ConfigurationProperties不支持,不能计算
4.JSR303数据校验,这个就是我们在字段上写一个@Email 表明这个字段必须符合邮箱的格式才行。这个@ConfigurationProperties是支持的,@Value不支持
5.复杂类型封装:就比如我们yml里面的map,这个就算复杂类型了,@Value依然不支持....
好了,讲到这里,已经清楚@Value实在是弱鸡,但是弱鸡有弱鸡的用处,假如我们只需要从yml里面读取一个值,那这个时候我们可以使用@Value,就一个,写起来还行。
Java Bean类还是乖乖的使用@ConfigurationProperties吧,这个例子告诉我们,天生我材必有用......
Spring Boot笔记二:快速创建以及yml文件自动注入的更多相关文章
- 转:spring boot log4j2配置(使用log4j2.yml文件)---YAML 语言教程
转:spring boot log4j2配置(使用log4j2.yml文件) - CSDN博客http://blog.csdn.net/ClementAD/article/details/514988 ...
- 用Spring Boot零配置快速创建web项目(1)
一.Spring Boot简介 Spring Boot是由Pivotal团队提供的全新框架,其设计目的是用来简化新Spring应用的初始搭建以及开发过程.该框架使用了特定的方式来进行配置,从而使开发人 ...
- Spring Boot中application.properties和application.yml文件
application.properties和application.yml文件可以放在一下四个位置: 外置,在相对于应用程序运行目录的/congfig子目录里. 外置,在应用程序运行的目录里 内置, ...
- Spring Boot笔记(二) springboot 集成 SMTP 发送邮件
个人博客网:https://wushaopei.github.io/ (你想要这里多有) 笔记:乘着项目迭代的间隙,把一些可复用的功能从项目中抽取出来,这是其中之一, 一.添加SMTP 及 MA ...
- Spring Boot笔记(一)
Spring Boot是由Pivotal团队提供的全新框架,其设计目的是用来简化新Spring应用的初始搭建以及开发过程.该框架使用了特定的方式来进行配置,从而使开发人员不再需要定义样板化的配置.通过 ...
- Spring Boot 2.x 快速入门(上)HelloWorld示例
本文重点 最近决定重新实践下Spring Boot的知识体系,因为在项目中遇到的总是根据业务需求走的知识点,并不能覆盖Spring Boot完整的知识体系,甚至没有一个完整的实践去实践某个知识点.最好 ...
- spring boot 笔记--第三章
spring boot 笔记 第三章,使用Spring boot 构建系统: 强烈建议支持依赖管理的构建系统,Maven或Gradle 依赖管理: Spring Boot的每版本都会提供它支持的依赖列 ...
- Spring Boot (二):模版引擎 Thymeleaf 渲染 Web 页面
Spring Boot (二):模版引擎 Thymeleaf 渲染 Web 页面 在<Spring Boot(一):快速开始>中介绍了如何使用 Spring Boot 构建一个工程,并且提 ...
- Spring Boot 2.0 快速集成整合消息中间件 Kafka
欢迎关注个人微信公众号: 小哈学Java, 每日推送 Java 领域干货文章,关注即免费无套路附送 100G 海量学习.面试资源哟!! 个人网站: https://www.exception.site ...
随机推荐
- java代码自动下载Spring Boot用户手册
本示例演示Spring Boot 1.5.9.RELEASE版本的用户手册下载 pom.xml <?xml version="1.0" encoding="UTF- ...
- kubernetes 编排详解 资源分配
########给pod 分配cpu和内存资源apiVersion: v1 kind: Pod metadata: name: frontend spec: containers: - name: d ...
- Android 根据版本号更新
1 读取android 版本号 具体文件位置: app下 build.gradle文件 versionCode和 versionName defaultConfig { versionCode 1 v ...
- Codeforces1065F Up and Down the Tree 【树形DP】
推荐一道联赛练习题. 题目分析: 你考虑进入一个子树就可能上不来了,如果上得来的话就把能上来的全捡完然后走一个上不来的,所以这就是个基本的DP套路. 代码: #include<bits/stdc ...
- luogu P4299 首都
题目描述 在X星球上有N个国家,每个国家占据着X星球的一座城市.由于国家之间是敌对关系,所以不同国家的两个城市是不会有公路相连的. X星球上战乱频发,如果A国打败了B国,那么B国将永远从这个星球消失, ...
- hdu2795(线段树)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2795 题目大意:有一个h*w的公告牌,要在其上贴公告.现在有n个公告,每个公告的尺寸为1*wi,即高度 ...
- dbForge Studio for MySQL V8.0 Enterprise
上篇文章:JetBrains全家桶破解思路(最新更新:2018-12-24) 最适合从SQLServer转向MySQL的人使用(用起来基本上差不多) 最适合Net开发人员的MySQL IDE (不装V ...
- Typescript学习笔记(三)变量声明及作用域
ts的变量声明有var,let和const,这尼玛完全跟es6一样嘛.就稍微介绍一下. 大多数js开发者对于var很熟悉了,原生js里没有块级作用域,只有函数作用域和全局作用域,还存在var的变量提升 ...
- 快速傅里叶变换(FFT)
扯 去北京学习的时候才系统的学习了一下卷积,当时整理了这个笔记的大部分.后来就一直放着忘了写完.直到今天都腊月二十八了,才想起来还有个FFT的笔记没整完呢.整理完这个我就假装今年的任务全都over了吧 ...
- [bzoj1692][队列变换]
题目链接 思路 首先肯定想到贪心,从队尾和队首取更小的那个. 但是如果遇到队尾和队首一样大的情况呢,总不能再挨个往前比较.所以就把整个字符串倒过来再挂到现在字符串的后面,也就是把当前字符串对称过去.然 ...