搜索
首页后端开发php教程Spring Boot框架的知识点详解
Spring Boot框架的知识点详解Aug 16, 2017 am 09:37 AM
bootspring知识点


摘要:1、Spring Boot的属性配置文件1.1 Spring Boot的属性配置文件的第一种形式使用properties配置文件,如下两个属性的含义是更改访问端口为8081,并且加了一个contextPath,可以理解为在地址栏多加层地址。server.port= ...

1、Spring Boot的属性配置文件

        1.1 Spring Boot的属性配置文件的第一种形式

            使用properties配置文件,如下两个属性的含义是更改访问端口为8081,并且加了一个contextPath,可以理解为在地址栏多加层地址。

server.port=8081
server.context-path=/joyou

                右键点击DemoApplication.java ——》Run As ——》Spring Boot App启动程序

Spring Boot框架的知识点详解

            效果如下,首先从日志上看,端口已经变为8081

Spring Boot框架的知识点详解

            浏览器访问效果如下。

    Spring Boot框架的知识点详解

            补充:

            属性文件是最常见的管理配置属性的方式。Spring Boot 提供的 SpringApplication 类会搜索并加载 application.properties 文件来获取配置属性值。SpringApplication 类会在下面位置搜索该文件:

1.当前目录的/config子目录

2.当前目录

3.classpath 中的/config包

4.classpath

上面的顺序也表示了该位置上包含的属性文件的优先级。优先级按照从高到低的顺序排列。

可以通过spring.config.name这个key的配置属性来指定不同的属性文件名称。也可以通过spring.config.location来添加额外的属性文件的搜索路径

         1.2 Spring Boot的属性配置文件的第二种形式(推荐)

                    使用yml方式配置,在resources目录下建立application.yml文件。代码如下。

server:  port: 8082  context-path: /joyou

                效果与1.1相同。

                  补充:                   

                相对于属性文件来说,YAML 是一个更好的配置文件格式。当有前缀的情况下,使用.yml格式的配置文件更简单。

注意:使用.yml时,属性名的值和冒号中间必须有空格,如name: SpringBoot正确,SpringBoot就是错的。

YAML 在 Ruby on Rails 中得到了很好的应用。YAML是JSON的一个超集,也是一种方便的定义层次配置数据的格式。它的基本语法规则如下:

  • 大小写敏感

  • 使用缩进表示层级关系

  • 缩进时不允许使用Tab键,只允许使用空格。

  • 缩进的空格数目不重要,只要相同层级的元素左侧对齐即可

  • # 表示注释,从这个字符一直到行尾,都会被解析器忽略。

         1.3 application.properties里面到底有哪些key是可配置的?

        在SpringBoot官网文档给出了详尽的配置以及说明。在Appendix A. Common application properties中:http://docs.spring.io/spring-boot/docs/current-SNAPSHOT/reference/htmlsingle/#common-application-properties

            不完全统计,这个完整的application properties文件,有1183行。其中,属性key有950个。当你看到如此庞大的配置,你一定会被吓到。不过,在实际项目中,我们如果遵循Spring Boot的约定,通常不需要我们单独指定太多配置。

            1.4 关于配置的优先级

            Spring Boot提供了一种优先级配置读取的机制来帮助我们从这种困境中走出来。

            Spring Boot 所提供的配置优先级顺序比较复杂。按照优先级从高到低的顺序,具体的列表(从高到低)如下所示。

  •             1.命令行参数(优先级最高)。

  •             2.通过 System.getProperties() 获取的 Java 系统参数。

  •             3.操作系统环境变量。

  •             4.从 java:comp/env 得到的 JNDI 属性。

  •             5.通过 RandomValuePropertySource 生成的random.*属性。

  •             6.jar包外部的application-{profile}.properties或application.yml(带spring.profile)配置文件,通过spring.config.location参数指定

  •             7.jar包内部的application-{profile}.properties或application.yml(带spring.profile)配置文件

  •             8.jar包外部的application.properties或application.yml(不带spring.profile)配置文件

  •             9.jar包内部的application.properties或application.yml(不带spring.profile)配置文件

  •             10.应用 Java配置类,包含@Configuration注解的 Java 类,通过@PropertySource注解声明的属性文件。

  •             11.通过SpringApplication.setDefaultProperties声明的默认属性。

            如果Spring Boot在优先级更高的位置找到了配置,那么它就会忽略优先级低的配置。下面我们简单讲讲这些优先级。Spring Boot 的这个配置优先级看似复杂,其实是很合理的。命令行参数的优先级之所以被设置为最高,是因为可以方便我们在测试或生产环境中快速地修改配置参数值,而不需要重新打包和部署应用。

            SpringApplication 类默认会把以“--”开头的命令行参数转化成应用中可以使用的配置参数,如 “--name=Alex” 会设置配置参数 “name” 的值为 “Alex”。

            如果不需要这个功能,可以通过SpringApplication.setAddCommandLineProperties(false)

禁用解析命令行参数。

2、Spring Boot自定义属性

                2.1、 第一个自定义属性的例子  

                          在实际开发过程中,需要程序去配置文件中读取数据(如:URL,一些账号密码等),所以就需要我们来自定义属性,供程序读取。

                        首先在yml里自定一个属性,格式如下:

company: joyouemployee: 二十岁以后

                        在Java程序中取值,代码如下:

package com.example.demo;import org.springframework.beans.factory.annotation.Autowired;import org.springframework.beans.factory.annotation.Value;import org.springframework.web.bind.annotation.PathVariable;import org.springframework.web.bind.annotation.RequestMapping;import org.springframework.web.bind.annotation.RequestMethod;import org.springframework.web.bind.annotation.RequestParam;import org.springframework.web.bind.annotation.RestController;@RestControllerpublic class HelloSpringBoot {	
	@Value("${company}")
	private String company;	
	@Value("${employee}")
	private String employee;	

	@RequestMapping(value="/hello" , method = RequestMethod.GET)
	public String HelloSpring(){		
			return company+"====="+employee;
	}
}

                使用浏览器访问效果如下

Spring Boot框架的知识点详解

                2.2 在自定义属性中调用其他属性

                        yml文件中的配置               

company: joyouemployee: 二十岁以后   
All: "公司: ${company} , 员工: ${employee}"

                    在JAVA程序中注入All属性

package com.example.demo;import org.springframework.beans.factory.annotation.Autowired;import org.springframework.beans.factory.annotation.Value;import org.springframework.web.bind.annotation.PathVariable;import org.springframework.web.bind.annotation.RequestMapping;import org.springframework.web.bind.annotation.RequestMethod;import org.springframework.web.bind.annotation.RequestParam;import org.springframework.web.bind.annotation.RestController;@RestControllerpublic class HelloSpringBoot {	
	@Value("${All}")	private String All;	
	
	@RequestMapping(value="/hello" , method = RequestMethod.GET)	public String HelloSpring(){		
			return All;
	}
}

            效果如图所示:

Spring Boot框架的知识点详解

            2.3 对于多个属性如何一次调用

                    看了上面的例子后,会产生一个疑问,如果想一次调用10个、20个、50个属性值,难道我要在程序中注入50次值,使用50次注解吗? 为了解决这个疑问,Spring Boot 是这么解决的!

                    首先一个女孩,有身高、体重、罩杯等等属性,我们可以这样来写!

Girl: 
   High: 160CM   Weight: 80KG   CupSize: 30A

                    然后写一个类,这个类中提供Girl的属性,及Setter,Geter方法,需要使用两个注解:

  •                     @Component //如果没有这个注解,会报找不到Bean的错

  •                     @ConfigurationProperties(prefix="Girl") //找到以Girl开头的属性

Spring Boot框架的知识点详解 

                    然后在java程序中注入Gril类

package com.example.demo;@RestControllerpublic class HelloSpringBoot {	@Autowired
	private Girl girl;	
	
	@RequestMapping(value="/hello" , method = RequestMethod.GET)
	public String HelloSpring(){		
			return girl.toString();
	}
}

                启动程序,刷新浏览器,效果如下:

Spring Boot框架的知识点详解

3、多环境的属性配置

            3.1 生产与开发的不同场景

                    面对生产与开发的不同场景,对于一些属性的值可能不同,难道我要在开发环境写的属性值,到生产环境在一个一个改吗?既然都这么说了,那当然是不用的了。我们可以在开发时候就写好两套环境中对于属性值不同需求的yml文件,然后在调用需要的yml文件就好了。

                对于生产环境Girl的属性值如下:

Spring Boot框架的知识点详解

                对于开发环境Girl的属性值如下:

Spring Boot框架的知识点详解

                我只需要在application.yml中调用不同的文件就好了,dev这个值是我开发和生产环境不同yml文件的后缀名(注意看上面两个图文件的命名

Spring Boot框架的知识点详解

    浏览器对应的结果

Spring Boot框架的知识点详解

            第二种环境对应的配置

Spring Boot框架的知识点详解

        浏览器对应的结果

Spring Boot框架的知识点详解

补一张到目前为止的项目目录结构,帮助理解

Spring Boot框架的知识点详解

以上是Spring Boot框架的知识点详解的详细内容。更多信息请关注PHP中文网其他相关文章!

声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
Java Spring怎么实现定时任务Java Spring怎么实现定时任务May 24, 2023 pm 01:28 PM

java实现定时任务Jdk自带的库中,有两种方式可以实现定时任务,一种是Timer,另一种是ScheduledThreadPoolExecutor。Timer+TimerTask创建一个Timer就创建了一个线程,可以用来调度TimerTask任务Timer有四个构造方法,可以指定Timer线程的名字以及是否设置为为守护线程。默认名字Timer-编号,默认不是守护线程。主要有三个比较重要的方法:cancel():终止任务调度,取消当前调度的所有任务,正在运行的任务不受影响purge():从任务队

Java axios与spring前后端分离传参规范是什么Java axios与spring前后端分离传参规范是什么May 03, 2023 pm 09:55 PM

一、@RequestParam注解对应的axios传参方法以下面的这段Springjava代码为例,接口使用POST协议,需要接受的参数分别是tsCode、indexCols、table。针对这个Spring的HTTP接口,axios该如何传参?有几种方法?我们来一一介绍。@PostMapping("/line")publicList

Spring Boot与Spring Cloud的区别与联系Spring Boot与Spring Cloud的区别与联系Jun 22, 2023 pm 06:25 PM

SpringBoot和SpringCloud都是SpringFramework的扩展,它们可以帮助开发人员更快地构建和部署微服务应用程序,但它们各自有不同的用途和功能。SpringBoot是一个快速构建Java应用的框架,使得开发人员可以更快地创建和部署基于Spring的应用程序。它提供了一个简单、易于理解的方式来构建独立的、可执行的Spring应用

Spring 最常用的 7 大类注解,史上最强整理!Spring 最常用的 7 大类注解,史上最强整理!Jul 26, 2023 pm 04:38 PM

随着技术的更新迭代,Java5.0开始支持注解。而作为java中的领军框架spring,自从更新了2.5版本之后也开始慢慢舍弃xml配置,更多使用注解来控制spring框架。

从零开始学Spring Cloud从零开始学Spring CloudJun 22, 2023 am 08:11 AM

作为一名Java开发者,学习和使用Spring框架已经是一项必不可少的技能。而随着云计算和微服务的盛行,学习和使用SpringCloud成为了另一个必须要掌握的技能。SpringCloud是一个基于SpringBoot的用于快速构建分布式系统的开发工具集。它为开发者提供了一系列的组件,包括服务注册与发现、配置中心、负载均衡和断路器等,使得开发者在构建微

Java Spring框架创建项目与Bean的存储与读取实例分析Java Spring框架创建项目与Bean的存储与读取实例分析May 12, 2023 am 08:40 AM

1.Spring项目的创建1.1创建Maven项目第一步,创建Maven项目,Spring也是基于Maven的。1.2添加spring依赖第二步,在Maven项目中添加Spring的支持(spring-context,spring-beans)在pom.xml文件添加依赖项。org.springframeworkspring-context5.2.3.RELEASEorg.springframeworkspring-beans5.2.3.RELEASE刷新等待加载完成。1.3创建启动类第三步,创

Java Spring Bean生命周期管理的示例分析Java Spring Bean生命周期管理的示例分析Apr 18, 2023 am 09:13 AM

SpringBean的生命周期管理一、SpringBean的生命周期通过以下方式来指定Bean的初始化和销毁方法,当Bean为单例时,Bean归Spring容器管理,Spring容器关闭,就会调用Bean的销毁方法当Bean为多例时,Bean不归Spring容器管理,Spring容器关闭,不会调用Bean的销毁方法二、通过@Bean的参数(initMethod,destroyMethod)指定Bean的初始化和销毁方法1、项目结构2、PersonpublicclassPerson{publicP

spring设计模式有哪些spring设计模式有哪些Dec 29, 2023 pm 03:42 PM

spring设计模式有:1、依赖注入和控制反转;2、工厂模式;3、模板模式;4、观察者模式;5、装饰者模式;6、单例模式;7、策略模式和适配器模式等。详细介绍:1、依赖注入和控制反转: 这两个设计模式是Spring框架的核心。通过依赖注入,Spring负责管理和注入组件之间的依赖关系,降低了组件之间的耦合度。控制反转则是指将对象的创建和依赖关系的管理交给Spring容器等等。

See all articles

热AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover

AI Clothes Remover

用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool

Undress AI Tool

免费脱衣服图片

Clothoff.io

Clothoff.io

AI脱衣机

AI Hentai Generator

AI Hentai Generator

免费生成ai无尽的。

热门文章

R.E.P.O.能量晶体解释及其做什么(黄色晶体)
3 周前By尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.最佳图形设置
3 周前By尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.如果您听不到任何人,如何修复音频
3 周前By尊渡假赌尊渡假赌尊渡假赌

热工具

Dreamweaver Mac版

Dreamweaver Mac版

视觉化网页开发工具

DVWA

DVWA

Damn Vulnerable Web App (DVWA) 是一个PHP/MySQL的Web应用程序,非常容易受到攻击。它的主要目标是成为安全专业人员在合法环境中测试自己的技能和工具的辅助工具,帮助Web开发人员更好地理解保护Web应用程序的过程,并帮助教师/学生在课堂环境中教授/学习Web应用程序安全。DVWA的目标是通过简单直接的界面练习一些最常见的Web漏洞,难度各不相同。请注意,该软件中

Dreamweaver CS6

Dreamweaver CS6

视觉化网页开发工具

EditPlus 中文破解版

EditPlus 中文破解版

体积小,语法高亮,不支持代码提示功能

SublimeText3 Linux新版

SublimeText3 Linux新版

SublimeText3 Linux最新版