Java之Spring Boot入门到精通【IDEA版】,附答案+考点

server:

port: 8080

address: 127.0.0.1

name: abc

(3)YAML:数据格式

对象(map):键值对的集合。 注意冒号后的空格

person:

name: zhangsan

#行内写法

person: {name: zhangsan}

数组:一组按次序排列的值

address:

  • beijing

  • shanghai

#行内写法

address: [beijing,shanghai]

纯量:单个的、不可再分的值

msg1: ‘hello \n world’ # 单引忽略转义字符

msg2: “hello \n world” # 双引识别转义字符

YAML:参数引用

name: lisi

person:

name: ${name} # 引用上边定义的name值

(4)YAML:使用方式
1)yml

创建application.yml

在这里插入图片描述

在这里插入图片描述

server:

port: 8082

  • 将application.properties当中的内容注释掉

在这里插入图片描述

  • 运行测试

在这里插入图片描述

在这里插入图片描述

http://localhost:8082/hello

在这里插入图片描述

2)yaml

创建application.yaml

在这里插入图片描述

在这里插入图片描述

server:

port: 8083

将application.yml当中的内容注释掉

在这里插入图片描述

  • 重新运行并测试

在这里插入图片描述

在这里插入图片描述

http://localhost:8083/hello

在这里插入图片描述

将三个配置文件当中的配置都打开

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

重新运行

在这里插入图片描述

在这里插入图片描述

上述证明application.properties的优先顺序高于application.yaml和application.yml

  • 再测试application.yaml和application.yml,将application.properties当中的内容注释掉

在这里插入图片描述

运行测试

在这里插入图片描述

在这里插入图片描述

证明application.yml 要高于application.yaml优先级别

3、三种配置文件的优先加载顺序

优先级:application.properties高于application.yml 要高于application.yaml

六、读取配置文件当中的内容


1) @Value

1、在application.yml当中准备一些数据

在这里插入图片描述

server:

port: 8082

name: abc

对象

person:

name: 张三

age: 20

对象行内写法

person2: {name: 李四, age : 30}

数组

address:

  • beijing

  • shanghai

纯量

msg1: ‘hello \n world’ #不会识别转义字符,会原样输出

msg2: “hello \n world” #会识别转义字符,输出换行

2、HelloController当中通过@Value读取对应的值

在这里插入图片描述

package cn.itbluebox.springbootinit.cn.itbluebox.controller;

import org.springframework.beans.factory.annotation.Value;

import org.springframework.web.bind.annotation.RequestMapping;

import org.springframework.web.bind.annotation.RestController;

@RestController //设置当前类是一个Rest风格的Controller

public class HelloController {

@Value(" n a m e " ) / / {name}")// name")//{}当中的内容必须和配置文件当中的键的值所对应

private String name;

@RequestMapping(“/hello2”) //设置当前的方法的映射路径

public String hello2(){

System.out.println(name);

return “hello Spring Boot init ! 我的第二个SpringBoot项目 name的值为:”+name;

}

@RequestMapping(“/hello”) //设置当前的方法的映射路径

public String hello(){

return “hello Spring Boot init ! 我的第二个SpringBoot项目”;

}

}

运行测试

在这里插入图片描述

http://localhost:8082/hello2

在这里插入图片描述

在这里插入图片描述

3、获取对象的值

在这里插入图片描述

package cn.itbluebox.springbootinit.cn.itbluebox.controller;

import org.springframework.beans.factory.annotation.Value;

import org.springframework.web.bind.annotation.RequestMapping;

import org.springframework.web.bind.annotation.RestController;

@RestController //设置当前类是一个Rest风格的Controller

public class HelloController {

@Value(" n a m e " ) / / {name}")// name")//{}当中的内容必须和配置文件当中的键的值所对应

private String name;

@Value(" p e r s o n . n a m e " ) / / {person.name}")// person.name")//{}当中的内容必须和配置文件当中的键的值所对应

private String name2;

@Value(" p e r s o n . a g e " ) / / {person.age}")// person.age")//{}当中的内容必须和配置文件当中的键的值所对应

private int age;

@RequestMapping(“/hello2”) //设置当前的方法的映射路径

public String hello2(){

System.out.println(name);

System.out.println(name2);

System.out.println(age);

return “hello Spring Boot init ! 我的第二个SpringBoot项目 name的值为:”+name +" name2:“+name2+” age:"+age;

}

@RequestMapping(“/hello”) //设置当前的方法的映射路径

public String hello(){

return “hello Spring Boot init ! 我的第二个SpringBoot项目”;

}

}

重新运行并测试

在这里插入图片描述

http://localhost:8082/hello2

在这里插入图片描述

在这里插入图片描述

-参数注入

修改application.yml

在这里插入图片描述

server:

port: 8082

name: abc

对象

person:

name: ${name}

age: 20

对象行内写法

person2: {name: 李四, age : 30}

数组

address:

  • beijing

  • shanghai

纯量

msg1: ‘hello \n world’ #不会识别转义字符,会原样输出

msg2: “hello \n world” #会识别转义字符,输出换行

重新运行并测试

在这里插入图片描述

http://localhost:8082/hello2

在这里插入图片描述

在这里插入图片描述

4、获取数组的值

在这里插入图片描述

package cn.itbluebox.springbootinit.cn.itbluebox.controller;

import org.springframework.beans.factory.annotation.Value;

import org.springframework.web.bind.annotation.RequestMapping;

import org.springframework.web.bind.annotation.RestController;

@RestController //设置当前类是一个Rest风格的Controller

public class HelloController {

@Value(" n a m e " ) / / {name}")// name")//{}当中的内容必须和配置文件当中的键的值所对应

private String name;

@Value(" p e r s o n . n a m e " ) / / {person.name}")// person.name")//{}当中的内容必须和配置文件当中的键的值所对应

private String name2;

@Value(" p e r s o n . a g e " ) / / {person.age}")// person.age")//{}当中的内容必须和配置文件当中的键的值所对应

private int age;

@Value(" a d d r e s s [ 0 ] " ) / / {address[0]}")// address[0]")//{}当中的内容必须和配置文件当中的键的值所对应

private String address;

@RequestMapping(“/hello2”) //设置当前的方法的映射路径

public String hello2(){

System.out.println(name);

System.out.println(name2);

System.out.println(age);

System.out.println(address);

return “hello Spring Boot init ! 我的第二个SpringBoot项目 name的值为:”

+name +" name2:“+name2+” age:"+age

+" address:"+address

;

}

@RequestMapping(“/hello”) //设置当前的方法的映射路径

public String hello(){

return “hello Spring Boot init ! 我的第二个SpringBoot项目”;

}

}

重新运行并测试

在这里插入图片描述

http://localhost:8082/hello2

在这里插入图片描述

在这里插入图片描述

5、纯量的值

在这里插入图片描述

package cn.itbluebox.springbootinit.cn.itbluebox.controller;

import org.springframework.beans.factory.annotation.Value;

import org.springframework.web.bind.annotation.RequestMapping;

import org.springframework.web.bind.annotation.RestController;

@RestController //设置当前类是一个Rest风格的Controller

public class HelloController {

@Value(" n a m e " ) / / {name}")// name")//{}当中的内容必须和配置文件当中的键的值所对应

private String name;

@Value(" p e r s o n . n a m e " ) / / {person.name}")// person.name")//{}当中的内容必须和配置文件当中的键的值所对应

private String name2;

@Value(" p e r s o n . a g e " ) / / {person.age}")// person.age")//{}当中的内容必须和配置文件当中的键的值所对应

private int age;

@Value(" a d d r e s s [ 0 ] " ) / / {address[0]}")// address[0]")//{}当中的内容必须和配置文件当中的键的值所对应

private String address;

@Value(" m s g 1 " ) / / {msg1}")// msg1")//{}当中的内容必须和配置文件当中的键的值所对应

private String msg1;

@Value(" m s g 2 " ) / / {msg2}")// msg2")//{}当中的内容必须和配置文件当中的键的值所对应

private String msg2;

@RequestMapping(“/hello2”) //设置当前的方法的映射路径

public String hello2(){

System.out.println(name);

System.out.println(name2);

System.out.println(age);

System.out.println(address);

System.out.println(msg1);

System.out.println(msg2);

return “hello Spring Boot init ! 我的第二个SpringBoot项目 name的值为:”

+name +" name2:“+name2+” age:"+age

+" address:"+address

+" msg1:"+msg1

+" msg2:"+msg2;

}

@RequestMapping(“/hello”) //设置当前的方法的映射路径

public String hello(){

return “hello Spring Boot init ! 我的第二个SpringBoot项目”;

}

}

重新运行并测试

在这里插入图片描述

http://localhost:8082/hello2

在这里插入图片描述

在这里插入图片描述

2) Environment

获取对应的值

在这里插入图片描述

在这里插入图片描述

package cn.itbluebox.springbootinit.cn.itbluebox.controller;

import org.springframework.beans.factory.annotation.Autowired;

import org.springframework.beans.factory.annotation.Value;

import org.springframework.core.env.Environment;

import org.springframework.web.bind.annotation.RequestMapping;

import org.springframework.web.bind.annotation.RestController;

@RestController //设置当前类是一个Rest风格的Controller

public class HelloController {

@Value(" n a m e " ) / / {name}")// name")//{}当中的内容必须和配置文件当中的键的值所对应

private String name;

@Value(" p e r s o n . n a m e " ) / / {person.name}")// person.name")//{}当中的内容必须和配置文件当中的键的值所对应

private String name2;

@Value(" p e r s o n . a g e " ) / / {person.age}")// person.age")//{}当中的内容必须和配置文件当中的键的值所对应

private int age;

@Value(" a d d r e s s [ 0 ] " ) / / {address[0]}")// address[0]")//{}当中的内容必须和配置文件当中的键的值所对应

private String address;

@Value(" m s g 1 " ) / / {msg1}")// msg1")//{}当中的内容必须和配置文件当中的键的值所对应

private String msg1;

@Value(" m s g 2 " ) / / {msg2}")// msg2")//{}当中的内容必须和配置文件当中的键的值所对应

private String msg2;

@Autowired

private Environment env;//SpringBoot启动的时候会在Spring容器当中初始化Environment对象

@RequestMapping(“/hello2”) //设置当前的方法的映射路径

public String hello2(){

System.out.println(name);

System.out.println(name2);

System.out.println(age);

System.out.println(address);

System.out.println(msg1);

System.out.println(msg2);

System.out.println(“-----------------”);

System.out.println(env.getProperty(“name”));

System.out.println(env.getProperty(“person.name”));

System.out.println(env.getProperty(“person.age”));

System.out.println(env.getProperty(“address[0]”));

System.out.println(env.getProperty(“msg1”));

System.out.println(env.getProperty(“msg2”));

return “hello Spring Boot init ! 我的第二个SpringBoot项目 name的值为:”

+name +" name2:“+name2+” age:"+age

+" address:"+address

+" msg1:"+msg1

+" msg2:"+msg2

+"
env.getProperty(“name)=”+env.getProperty(“name”)

+" env.getProperty(“person.name”)="+env.getProperty(“person.name”)

+" env.getProperty(“person.age”)="+env.getProperty(“person.age”)

+" env.getProperty(“address[0]”)="+env.getProperty(“address[0]”)

+" env.getProperty(“msg1”)="+env.getProperty(“msg1”)

+" env.getProperty(“msg2”)="+env.getProperty(“msg2”)

;

}

@RequestMapping(“/hello”) //设置当前的方法的映射路径

public String hello(){

return “hello Spring Boot init ! 我的第二个SpringBoot项目”;

}

}

运行测试

重新运行并测试

在这里插入图片描述

http://localhost:8082/hello2

在这里插入图片描述

在这里插入图片描述

3) @ConfigurationProperties

01)默认读取的注入
  • 创建Person对象

在这里插入图片描述

在这里插入图片描述

package cn.itbluebox.springbootinit;

import org.springframework.boot.context.properties.ConfigurationProperties;

import org.springframework.stereotype.Component;

@Component //将Person 容器当中

@ConfigurationProperties

public class Person {

private String name;

private int age;

public Person() {

}

public Person(String name, int age) {

this.name = name;

this.age = age;

}

public String getName() {

return name;

}

public void setName(String name) {

this.name = name;

}

public int getAge() {

return age;

}

public void setAge(int age) {

this.age = age;

}

@Override

public String toString() {

return “Person{” +

“name='” + name + ‘’’ +

“, age=” + age +

‘}’;

}

}

  • 完善HelloController注入Person

在这里插入图片描述

在这里插入图片描述

package cn.itbluebox.springbootinit;

import org.springframework.beans.factory.annotation.Autowired;

import org.springframework.beans.factory.annotation.Value;

import org.springframework.core.env.Environment;

import org.springframework.web.bind.annotation.RequestMapping;

import org.springframework.web.bind.annotation.RestController;

@RestController //设置当前类是一个Rest风格的Controller

public class HelloController {

@Value(" n a m e " ) / / {name}")// name")//{}当中的内容必须和配置文件当中的键的值所对应

private String name;

@Value(" p e r s o n . n a m e " ) / / {person.name}")// person.name")//{}当中的内容必须和配置文件当中的键的值所对应

private String name2;

@Value(" p e r s o n . a g e " ) / / {person.age}")// person.age")//{}当中的内容必须和配置文件当中的键的值所对应

private int age;

@Value(" a d d r e s s [ 0 ] " ) / / {address[0]}")// address[0]")//{}当中的内容必须和配置文件当中的键的值所对应

private String address;

@Value(" m s g 1 " ) / / {msg1}")// msg1")//{}当中的内容必须和配置文件当中的键的值所对应

private String msg1;

@Value(" m s g 2 " ) / / {msg2}")// msg2")//{}当中的内容必须和配置文件当中的键的值所对应

private String msg2;

@Autowired

private Environment env;//SpringBoot启动的时候会在Spring容器当中初始化Environment对象

@Autowired

private Person person;

@RequestMapping(“/hello2”) //设置当前的方法的映射路径

public String hello2(){

System.out.println(name);

System.out.println(name2);

System.out.println(age);

System.out.println(address);

System.out.println(msg1);

System.out.println(msg2);

System.out.println(“-----------------”);

System.out.println(env.getProperty(“name”));

System.out.println(env.getProperty(“person.name”));

System.out.println(env.getProperty(“person.age”));

System.out.println(env.getProperty(“address[0]”));

System.out.println(env.getProperty(“msg1”));

System.out.println(env.getProperty(“msg2”));

System.out.println(“------------------”);

System.out.println(“person”+person);

return “hello Spring Boot init ! 我的第二个SpringBoot项目 name的值为:”

+name +" name2:“+name2+” age:"+age

+" address:"+address

+" msg1:"+msg1

+" msg2:"+msg2

+"
env.getProperty(“name)=”+env.getProperty(“name”)

+" env.getProperty(“person.name”)="+env.getProperty(“person.name”)

+" env.getProperty(“person.age”)="+env.getProperty(“person.age”)

+" env.getProperty(“address[0]”)="+env.getProperty(“address[0]”)

+" env.getProperty(“msg1”)="+env.getProperty(“msg1”)

+" env.getProperty(“msg2”)="+env.getProperty(“msg2”)

+" person = "+person

;

}

@RequestMapping(“/hello”) //设置当前的方法的映射路径

public String hello(){

return “hello Spring Boot init ! 我的第二个SpringBoot项目”;

}

}

运行测试

重新运行并测试

在这里插入图片描述

http://localhost:8082/hello2

在这里插入图片描述

在这里插入图片描述

@Component //将Person 容器当中

@ConfigurationProperties

public class Person {

上面默认读取的是

在这里插入图片描述

02)设置注入前缀

在这里插入图片描述

@ConfigurationProperties(prefix = “person”)

运行测试

重新运行并测试

在这里插入图片描述

http://localhost:8082/hello2

得到Person对应的值

在这里插入图片描述

在这里插入图片描述

得到对应配置文件的值

在这里插入图片描述

03)设置对象当中有数组注入
  • 修改application.yml

在这里插入图片描述

对象

person:

name: ${name}

age: 20

address:

  • beijing

  • shanghai

  • 修改Person

在这里插入图片描述

package cn.itbluebox.springbootinit;

import org.springframework.boot.context.properties.ConfigurationProperties;

import org.springframework.stereotype.Component;

import java.util.Arrays;

@Component //将Person 容器当中

@ConfigurationProperties(prefix = “person”)

public class Person {

private String name;

private int age;

private String[] address;

public Person() {

}

public Person(String name, int age, String[] address) {

this.name = name;

this.age = age;

this.address = address;

}

public String getName() {

return name;

}

public void setName(String name) {

this.name = name;

}

public int getAge() {

return age;

}

public void setAge(int age) {

this.age = age;

}

public String[] getAddress() {

return address;

}

public void setAddress(String[] address) {

this.address = address;

}

@Override

public String toString() {

return “Person{” +

“name='” + name + ‘’’ +

“, age=” + age +

“, address=” + Arrays.toString(address) +

‘}’;

}

}

运行测试

重新运行并测试

在这里插入图片描述

http://localhost:8082/hello2

在这里插入图片描述

在这里插入图片描述

04)解决Person类上对应的红色警告(设置编写配置文件的时候自动提示)

在这里插入图片描述

点击后跳转到网页提示(添加如下的配置依赖)

在这里插入图片描述

在这里插入图片描述

org.springframework.boot

spring-boot-configuration-processor

true

点击

在这里插入图片描述

Person显示正常

在这里插入图片描述

同时在application.yml编写配置的时候会有一些提示信息

小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。

深知大多数初中级Java工程师,想要提升技能,往往是自己摸索成长,但自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!

因此收集整理了一份《2024年最新Java开发全套学习资料》送给大家,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。
img
img
img

由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频

如果你觉得这些内容对你有帮助,可以添加下面V无偿领取!(备注Java)
img

复习的面试资料

这些面试全部出自大厂面试真题和面试合集当中,小编已经为大家整理完毕(PDF版)

  • 第一部分:Java基础-中级-高级

image

  • 第二部分:开源框架(SSM:Spring+SpringMVC+MyBatis)

image

  • 第三部分:性能调优(JVM+MySQL+Tomcat)

image

  • 第四部分:分布式(限流:ZK+Nginx;缓存:Redis+MongoDB+Memcached;通讯:MQ+kafka)

image

  • 第五部分:微服务(SpringBoot+SpringCloud+Dubbo)

image

  • 第六部分:其他:并发编程+设计模式+数据结构与算法+网络

image

进阶学习笔记pdf

  • Java架构进阶之架构筑基篇(Java基础+并发编程+JVM+MySQL+Tomcat+网络+数据结构与算法

image

  • Java架构进阶之开源框架篇(设计模式+Spring+SpringMVC+MyBatis

image

image

image

  • Java架构进阶之分布式架构篇 (限流(ZK/Nginx)+缓存(Redis/MongoDB/Memcached)+通讯(MQ/kafka)

image

image

image

  • Java架构进阶之微服务架构篇(RPC+SpringBoot+SpringCloud+Dubbo+K8s)

image

image

何学起的朋友,同时减轻大家的负担。**
[外链图片转存中…(img-fhPi2v4m-1711139138261)]
[外链图片转存中…(img-RQkSxljM-1711139138262)]
[外链图片转存中…(img-5DGeHkF4-1711139138262)]

由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频

如果你觉得这些内容对你有帮助,可以添加下面V无偿领取!(备注Java)
[外链图片转存中…(img-4Z0WWnZG-1711139138262)]

复习的面试资料

这些面试全部出自大厂面试真题和面试合集当中,小编已经为大家整理完毕(PDF版)

  • 第一部分:Java基础-中级-高级

[外链图片转存中…(img-8hE8oGlE-1711139138263)]

  • 第二部分:开源框架(SSM:Spring+SpringMVC+MyBatis)

[外链图片转存中…(img-mQnZ78hE-1711139138263)]

  • 第三部分:性能调优(JVM+MySQL+Tomcat)

[外链图片转存中…(img-yWh792di-1711139138264)]

  • 第四部分:分布式(限流:ZK+Nginx;缓存:Redis+MongoDB+Memcached;通讯:MQ+kafka)

[外链图片转存中…(img-lZkB38Yy-1711139138266)]

  • 第五部分:微服务(SpringBoot+SpringCloud+Dubbo)

[外链图片转存中…(img-7HrIbnyA-1711139138266)]

  • 第六部分:其他:并发编程+设计模式+数据结构与算法+网络

[外链图片转存中…(img-KeMb28S9-1711139138266)]

进阶学习笔记pdf

  • Java架构进阶之架构筑基篇(Java基础+并发编程+JVM+MySQL+Tomcat+网络+数据结构与算法

[外链图片转存中…(img-zbEUSUwM-1711139138267)]

  • Java架构进阶之开源框架篇(设计模式+Spring+SpringMVC+MyBatis

[外链图片转存中…(img-4suUANtQ-1711139138267)]

[外链图片转存中…(img-Q9LSEEQq-1711139138267)]

[外链图片转存中…(img-Cq1bdZul-1711139138268)]

  • Java架构进阶之分布式架构篇 (限流(ZK/Nginx)+缓存(Redis/MongoDB/Memcached)+通讯(MQ/kafka)

[外链图片转存中…(img-9e1V7vNM-1711139138268)]

[外链图片转存中…(img-HtnNknR0-1711139138268)]

[外链图片转存中…(img-JfojyJqv-1711139138269)]

  • Java架构进阶之微服务架构篇(RPC+SpringBoot+SpringCloud+Dubbo+K8s)

[外链图片转存中…(img-XqqqcxOi-1711139138269)]

[外链图片转存中…(img-HfZ7kIUB-1711139138269)]

本文已被CODING开源项目:【一线大厂Java面试题解析+核心总结学习笔记+最新讲解视频+实战项目源码】收录

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值