上个笔记写了如何自己去创建Spring boot,以及如何去打jar包,其实,还是有些麻烦的,我们还自己新建了几个文件夹不是。

  Idea可以让我们快速的去创建Spring boot应用,来看

一、快速创建Spring boot

 

没啥讲的了,点击完成之后,我们需要等待几分钟,Idea会帮我们下载配置一些东西。

二、yml文件和自动注入

配置文件这个,我不打算细说,粗略的介绍一下,用的时候去百度就好了,目前已知的配置文件

1.xml

2.properties

3.yml

这三个里面,我最喜欢的是yml,最不喜欢的是xml

举个例子,比如的的name是许嵩,age是32

yml的写法是这样的:(中间一定有个空格)

  1. name: 许嵩
  2. age:

而xml的写法是这样的。。。。。苍天啊。。。。

  1. <name>许嵩</name>
  2. <age></age>

书归正传,我们开始写了

首先,我们创建两个类,一个Person,一个Dog

  1. package com.vae.springboot.study.bean;
  2.  
  3. import org.springframework.boot.context.properties.ConfigurationProperties;
  4. import org.springframework.stereotype.Component;
  5.  
  6. import java.util.Date;
  7. import java.util.List;
  8. import java.util.Map;
  9.  
  10. @Component
  11. @ConfigurationProperties(prefix = "person")
  12. public class Person {
  13.  
  14. private String name;
  15. private Integer age;
  16. private Boolean boss;
  17. private Date birth;
  18. private Map<String,Object> maps;
  19. private List<String> lists;
  20. private Dog dog;
  21.  
  22. @Override
  23. public String toString() {
  24. return "Person{" +
  25. "name='" + name + '\'' +
  26. ", age=" + age +
  27. ", boss=" + boss +
  28. ", birth=" + birth +
  29. ", maps=" + maps +
  30. ", lists=" + lists +
  31. ", dog=" + dog +
  32. '}';
  33. }
  34.  
  35. public Boolean getBoss() {
  36. return boss;
  37. }
  38.  
  39. public void setBoss(Boolean boss) {
  40. this.boss = boss;
  41. }
  42.  
  43. public Date getBirth() {
  44. return birth;
  45. }
  46.  
  47. public void setBirth(Date birth) {
  48. this.birth = birth;
  49. }
  50.  
  51. public Map<String, Object> getMaps() {
  52. return maps;
  53. }
  54.  
  55. public void setMaps(Map<String, Object> maps) {
  56. this.maps = maps;
  57. }
  58.  
  59. public List<String> getLists() {
  60. return lists;
  61. }
  62.  
  63. public void setLists(List<String> lists) {
  64. this.lists = lists;
  65. }
  66.  
  67. public Dog getDog() {
  68. return dog;
  69. }
  70.  
  71. public void setDog(Dog dog) {
  72. this.dog = dog;
  73. }
  74.  
  75. public String getName() {
  76. return name;
  77. }
  78.  
  79. public void setName(String name) {
  80. this.name = name;
  81. }
  82.  
  83. public Integer getAge() {
  84. return age;
  85. }
  86.  
  87. public void setAge(Integer age) {
  88. this.age = age;
  89. }
  90. }
  1. package com.vae.springboot.study.bean;
  2.  
  3. public class Dog {
  4. private String name;
  5. private Integer age;
  6.  
  7. @Override
  8. public String toString() {
  9. return "Dog{" +
  10. "name='" + name + '\'' +
  11. ", age=" + age +
  12. '}';
  13. }
  14.  
  15. public String getName() {
  16. return name;
  17. }
  18.  
  19. public void setName(String name) {
  20. this.name = name;
  21. }
  22.  
  23. public Integer getAge() {
  24. return age;
  25. }
  26.  
  27. public void setAge(Integer age) {
  28. this.age = age;
  29. }
  30. }

这里有一个非常重要的一点,一定要写ToString方法,我为了省事,没写这个,结果注入之后没有显示出来 一定要写!

OK,现在来讲一下

  1. @Component 这个是加入到spring容器中
  2. @ConfigurationProperties(prefix = "person") 这个是把类和我们的配置文件进行关联,找的是person

我们再新建一个yml文件,如图:

虽然上面有了一个properties,但是不管他,这俩是谁有谁起效,都有都一样的话properties起效,貌似是

看看我的yml里面写的啥

  1. person:
  2. age: 32
  3. name: Vae
  4. birth: 1985/05/14
  5. boss: false
  6. maps: {k1: v1,k2: 12}
  7. lists:
  8. - 许嵩
  9. - 林俊杰
  10. dog:
  11. name: 格洛米
  12. age: 3

看看测试里面

自动注入已经写完了,我再次重复一下两个特别重要的点

1.主程序是在study包下面,所有的类啊,Controller啊啥的,必须在study包下面,只有这样,主程序才能对他们起效

2.类,必须写Tostring方法................................

三、题外话

我上面采用的都是最方便的方式,这里把其它方式介绍一下,但是写,还是上面的那样写

首先,配置文件的事,我没讲properties,这个写中文的时候,会有乱码,需要去Idea里面设置一下编码格式为UTF-8

还有,我们的类和配置文件直接关联,我用的是ConfigurationProperties的方式,其实还有一个@Value的方式,这个很难用,但是我还是介绍一下

  1. @Value("${person.name}")
  2. private String name;
  3. @Value("#{11*2}")
  4. private Integer age;
  5. @Value("false")
  6. 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文件自动注入的更多相关文章

  1. 转:spring boot log4j2配置(使用log4j2.yml文件)---YAML 语言教程

    转:spring boot log4j2配置(使用log4j2.yml文件) - CSDN博客http://blog.csdn.net/ClementAD/article/details/514988 ...

  2. 用Spring Boot零配置快速创建web项目(1)

    一.Spring Boot简介 Spring Boot是由Pivotal团队提供的全新框架,其设计目的是用来简化新Spring应用的初始搭建以及开发过程.该框架使用了特定的方式来进行配置,从而使开发人 ...

  3. Spring Boot中application.properties和application.yml文件

    application.properties和application.yml文件可以放在一下四个位置: 外置,在相对于应用程序运行目录的/congfig子目录里. 外置,在应用程序运行的目录里 内置, ...

  4. Spring Boot笔记(二) springboot 集成 SMTP 发送邮件

    个人博客网:https://wushaopei.github.io/    (你想要这里多有) 笔记:乘着项目迭代的间隙,把一些可复用的功能从项目中抽取出来,这是其中之一, 一.添加SMTP 及 MA ...

  5. Spring Boot笔记(一)

    Spring Boot是由Pivotal团队提供的全新框架,其设计目的是用来简化新Spring应用的初始搭建以及开发过程.该框架使用了特定的方式来进行配置,从而使开发人员不再需要定义样板化的配置.通过 ...

  6. Spring Boot 2.x 快速入门(上)HelloWorld示例

    本文重点 最近决定重新实践下Spring Boot的知识体系,因为在项目中遇到的总是根据业务需求走的知识点,并不能覆盖Spring Boot完整的知识体系,甚至没有一个完整的实践去实践某个知识点.最好 ...

  7. spring boot 笔记--第三章

    spring boot 笔记 第三章,使用Spring boot 构建系统: 强烈建议支持依赖管理的构建系统,Maven或Gradle 依赖管理: Spring Boot的每版本都会提供它支持的依赖列 ...

  8. Spring Boot (二):模版引擎 Thymeleaf 渲染 Web 页面

    Spring Boot (二):模版引擎 Thymeleaf 渲染 Web 页面 在<Spring Boot(一):快速开始>中介绍了如何使用 Spring Boot 构建一个工程,并且提 ...

  9. Spring Boot 2.0 快速集成整合消息中间件 Kafka

    欢迎关注个人微信公众号: 小哈学Java, 每日推送 Java 领域干货文章,关注即免费无套路附送 100G 海量学习.面试资源哟!! 个人网站: https://www.exception.site ...

随机推荐

  1. POJ3013-Big Christmas Tree-最短路

    题意:给出一个图,每个节点都有权值,每条边也有费用.要求建立一颗树,使总花费最小.树上每连一条边的花费定义为孩子节点权值和×此边费用. 做法:分析可知,最终的答案为所有节点的权值×到根节点的距离.可以 ...

  2. haar的简单应用(1)

    又双叒叕出现问题了,还是重置系统的原因,弄半天终于弄好了,就不说这个了 直接记录一下该做的 如下教程中的文件我倒是都找到了(但是这些文件在目前的代码中都用不到..) 在这里 令我无语的他只用了一个.x ...

  3. Java 类设计技巧

    摘自<Java核心技术>卷I:基础知识 p140 第4章对象与类 - 类设计技巧 1)一定将数据设计为私有. 最重要的是:绝对不要破坏封装性.有时候,需要编写一个访问器方法或更改器方法,但 ...

  4. 关于Autosar中DCM(14229UDS)模块的理解

    阅读本篇文章希望达到的目的是: UDS是干什么的, ISO14229是如何定义规则的, 希望接下来的阅读让你不虚此行. 1. UDS是干什么的?UDS全称是Unified Diagnostic Ser ...

  5. HDU6280 From Tree to Graph

    下午打了湘潭邀请赛,好像缓解了一下北京网络赛超强的自闭感.补一下这个图论题.(补了很久) 题意:给你一颗n节点的树,有m个操作,每次向xi和lca(xi,yi)连边,然后每次zi就是对于新的图在删除每 ...

  6. 【翻译】七个习惯提高Python程序的性能

    原文链接:https://www.tutorialdocs.com/article/7-habits-to-improve-python-programs.html 掌握一些技巧,可尽量提高Pytho ...

  7. 如何在jsp中引入bootstrap

    如何在jsp中引入bootstrap包: 1.首先在http://getbootstrap.com/上下载Bootstrap的最新版. 您会看到两个按钮: Download Bootstrap:下载 ...

  8. servlet 会话技术

    一.控制器: 1.如何去确定需要一个新的控制器? 原则:一类事务请求需要一个控制器. 二.会话: 用户开一个浏览器,访问一个网站,只要该浏览器不关闭浏览器,不管该用户点击了多少个超链接,访问了多少个资 ...

  9. css 蒙层

    蒙层 利用z-index: .mui-backdrop-other { position: fixed; top: 44px; right:; bottom:; left:; z-index:; ba ...

  10. 【洛谷P1507 NASA的食物计划】

    题目背景 NASA(美国航空航天局)因为航天飞机的隔热瓦等其他安全技术问题一直大伤脑筋,因此在各方压力下终止了航天飞机的历史,但是此类事情会不会在以后发生,谁也无法保证,在遇到这类航天问题时,解决方法 ...