Spring Boot学习(一)-CSDN博客一、配置文件1.Springboot的热部署spring为开发者提供了一个名为spring-boot-devtools的模块来使Spring Boot应用支持热部署提高开发者的开发效率无需手动重启Spring Boot应用。引入依赖dependency groupIdorg.springframework.boot/groupId artifactIdspring-boot-devtools/artifactId optionaltrue/optional /dependency修改java代码或者配置文件模板后可以通过ctrlf9来实施热部署。2.配置文件SpringBoot使用一个全局的配置文件配置文件名是固定的•application.properties•application.yml配置文件的作用修改SpringBoot自动配置的默认值SpringBoot在底层都给我们自动配置好YAMLYAML Aint Markup LanguageYAML A Markup Language是一个标记语言YAML isnt Markup Language不是一个标记语言标记语言以前的配置文件大多都使用的是xxxx.xml文件YAML以数据为中心比json、xml等更适合做配置文件3.YAML语法基本语法k:(空格)v表示一对键值对空格必须有以空格的缩进来控制层级关系只要是左对齐的一列数据都是同一个层级的4.值的写法4.1字面量普通的值数字字符串布尔k: v字面直接来写1.字符串默认不用加上单引号或者双引号2.双引号不会转义字符串里面的特殊字符特殊字符会作为本身想表示的意思name: zhangsan \n lisi输出zhangsan换行lisi3.单引号会转义特殊字符特殊字符最终只是一个普通的字符串数据name: ‘zhangsan \n lisi’输出zhangsan \n lisi4.2对象、Map属性和值键值对k: v在下一行来写对象的属性和值的关系注意缩进对象还是k: v的方式4.3数组List、Set用-值表示数组中的一个元素行内写法二、配置文件值注入1.Value获取值配置文件server: port: 8088 person: # name: zhangsan \n lisi name: zhangsan \n lisi age: 18javaBeanimport org.springframework.beans.factory.annotation.Value; import org.springframework.stereotype.Component; Component(value person) public class Person { Value(${person.name}) private String name; Value(${person.age}) private Integer 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; } Override public String toString() { return Person{ name name \ , age age }; } }2.ConfigurationProperties获取值将配置文件中配置的每一个属性的值映射到这个组件中ConfigurationProperties告诉SpringBoot将本类中的所有属性和配置文件中相关的配置进行绑定prefix person配置文件中哪个下面的所有属性进行一一映射只有这个组件是容器中的组件才能容器提供的ConfigurationProperties功能ConfigurationProperties(prefix person)默认从全局配置文件中获取值配置文件server: port: 8088 person: name: 张三 age: 18 boss: false birth: 2017/10/12 maps: {k1: v1,k2: v2} lists: - lisi - zhaoliu dog: name: 小狗 age: 12javaBeanimport org.springframework.boot.context.properties.ConfigurationProperties; import org.springframework.context.annotation.PropertySource; 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 MapString,Object maps; private ListObject lists; private 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; } public boolean isBoss() { return boss; } public void setBoss(boolean boss) { this.boss boss; } public Date getBirth() { return birth; } public void setBirth(Date birth) { this.birth birth; } public MapString, Object getMaps() { return maps; } public void setMaps(MapString, Object maps) { this.maps maps; } public ListObject getLists() { return lists; } public void setLists(ListObject lists) { this.lists lists; } public Dog getDog() { return dog; } public void setDog(Dog dog) { this.dog dog; } Override public String toString() { return Person{ name name \ , age age , boss boss , birth birth , maps maps , lists lists , dog dog }; } }3.Value获取值和ConfigurationProperties获取值比较配置文件yml还是properties他们都能获取到值如果说我们只是在某个业务逻辑中需要获取一下配置文件中的某项值使用Value如果说我们专门编写了一个javaBean来和配置文件进行映射我们就直接使用ConfigurationProperties4.PropertySourceImportResourceBean4.1PropertySource加载指定的配置文件import org.springframework.boot.context.properties.ConfigurationProperties; import org.springframework.context.annotation.PropertySource; import org.springframework.stereotype.Component; import java.util.Date; import java.util.List; import java.util.Map; Component PropertySource(value {classpath:person.properties}) ConfigurationProperties(prefix person) public class Person { private String name; private Integer age; private boolean boss; private Date birth; private MapString,Object maps; private ListObject lists; private 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; } public boolean isBoss() { return boss; } public void setBoss(boolean boss) { this.boss boss; } public Date getBirth() { return birth; } public void setBirth(Date birth) { this.birth birth; } public MapString, Object getMaps() { return maps; } public void setMaps(MapString, Object maps) { this.maps maps; } public ListObject getLists() { return lists; } public void setLists(ListObject lists) { this.lists lists; } public Dog getDog() { return dog; } public void setDog(Dog dog) { this.dog dog; } Override public String toString() { return Person{ name name \ , age age , boss boss , birth birth , maps maps , lists lists , dog dog }; } }4.2ImportResource导入Spring的配置文件让配置文件里面的内容生效Spring Boot里面没有Spring的配置文件我们自己编写的配置文件也不能自动识别想让Spring的配置文件生效加载进来ImportResource标注在一个配置类上编写spring配置文件?xml version1.0 encodingUTF-8? beans xmlnshttp://www.springframework.org/schema/beans xmlns:xsihttp://www.w3.org/2001/XMLSchema-instance xsi:schemaLocationhttp://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd bean idhelloService classcom.qcby.service.HelloService/ /beansimport org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.context.annotation.ImportResource; SpringBootApplication ImportResource(locations {classpath:spring.xml}) public class SpringBoot { public static void main(String[] args){ SpringApplication.run(SpringBoot.class,args);} }4.3SpringBoot推荐给容器中添加组件的方式推荐使用全注解的方式配置类Configuration------Spring配置文件使用Bean给容器中添加组件import com.qcby.service.HelloService; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; Configuration public class MyAppConfig { //将方法的返回值添加到容器中容器中这个组件默认的id就是方法名 Bean public HelloService helloService(){ System.out.println(配置类Bean给容器中添加组件了...); return new HelloService(); } }