快速创建一个SpringBoot的项目
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.1.3.RELEASE</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>
<groupId>com.slc</groupId>
<artifactId>spring-boot-01-helloworld-quick</artifactId>
<version>0.0.1-SNAPSHOT</version>
<name>spring-boot-01-helloworld-quick</name>
<description>Demo project for Spring Boot</description>
<properties>
<java.version>1.8</java.version>
</properties>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
<!--导入配置文件的处理器,在导入文件的时候就会有提示-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-configuration-processor</artifactId>
<optional>true</optional>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
</project>
也可以利用idea进行创建
yml的格式与语法
yml是用来表示配置文件的一种格式,非常人性化
(1)基本的语法:
- 大小写敏感
- 使用缩进表示层级关系
- 缩进时不允许使用Tab键,只允许使用空格。
- 缩进的空格数目不重要,只要相同层级的元素左侧对齐即可
(2)支持数据结构主要有三种
-
对象:键值对的集合,又称为映射(mapping)/ 哈希(hashes) / 字典(dictionary)
-
数组:一组按次序排列的值,又称为序列(sequence) / 列表(list)
-
纯量(scalars):单个的、不可再分的值
SpringBoot中的@ConfigurationProperties和@value
@value:单个进行绑定,不支持松散绑定,支持SPEL,不支持JRS303数据校验,不支持复杂类型例如Map。
@ConfigurationProperties:批量的注入属性,支持松散绑定(lastName 或last_name),不支持,支持JRS303数据校验(例如@Email),支持复杂类型的赋值。
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.stereotype.Component;
import org.springframework.validation.annotation.Validated;
import javax.validation.constraints.Email;
import java.util.Date;
import java.util.List;
import java.util.Map;
/**
* @author kiosk 用来与yml进行绑定
*/
@Component
@ConfigurationProperties(prefix = "person")
@Validated
public class Person {
// @Value("${person.name}")
@Email
private String name;
// @Value("#{10*20}")
private Integer age;
private boolean boss;
private Date birthday;
private Map<String,Object> map;
private List<Object> list;
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 getBirthday() {
return birthday;
}
public void setBirthday(Date birthday) {
this.birthday = birthday;
}
public Map<String, Object> getMap() {
return map;
}
public void setMap(Map<String, Object> map) {
this.map = map;
}
public List<Object> getList() {
return list;
}
public void setList(List<Object> list) {
this.list = list;
}
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 +
", birthday=" + birthday +
", map=" + map +
", list=" + list +
", dog=" + dog +
'}';
}
}
server.port=9090
person.name=张三
person.birthday=2019/2/24
person.boss=true
person.dog.name=С¹·
person.list=a,b,c
person.map.id=20
person.map.id2=30
SpringBoot实现热部署的方式
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<configuration>
<fork>true</fork>
</configuration>
</plugin>
</plugins>
</build>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-devtools</artifactId>
<optional>true</optional>
</dependency>
application.properties
spring.thymeleaf.cache=false
# 设置开启热部署
spring.devtools.restart.enabled=true
# 页面不加载缓存,修改时生效
spring.freemarker.cache=false
@PropertiesSource与@ImportResource
@PropertiesSource :可以不用使用全局的配置文件
例如:
person.name=张三
person.birthday=2019/3/10
person.boss=true
person.dog.name=000000000000
person.list=a,b,c
person.map.id=20
person.map.id2=30
然后再相应的配置的类上写以下的注解
@Component
@PropertySource(value = {"classpath:person.properties"})
@Validated
//@ConfigurationProperties(prefix = "person")
public class Person {
// @Value("${person.name}")
// @Email
private String name;
// @Value("#{10*20}")
private Integer age;
private boolean boss;
private Date birthday;
private Map<String,Object> map;
private List<Object> list;
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 getBirthday() {
return birthday;
}
public void setBirthday(Date birthday) {
this.birthday = birthday;
}
public Map<String, Object> getMap() {
return map;
}
public void setMap(Map<String, Object> map) {
this.map = map;
}
public List<Object> getList() {
return list;
}
public void setList(List<Object> list) {
this.list = list;
}
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 +
", birthday=" + birthday +
", map=" + map +
", list=" + list +
", dog=" + dog +
'}';
}
}
@ImportResource的使用的方法
(1)编写一个xml的文件
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd">
<bean id="service" class="com.slc.springboot01helloworldquick.service.HelloService">
</bean>
</beans>
添加注解
@ImportResource(locations = {"classpath:beans.xml"})
@SpringBootApplication
public class SpringBoot01HelloworldQuickApplication {
public static void main(String[] args) {
SpringApplication.run(SpringBoot01HelloworldQuickApplication.class, args);
}
}
(2)SpringBoot推荐的是使用注解的方式
写一个利用注解进行配置的类
import com.slc.springboot01helloworldquick.service.HelloService;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
/**
* 指名当前类为一个配置类
*/
@Configuration
public class MyappConfig {
/**
* 将方法的返回值添加在容器中
* 容器中的组件默认的id为方法名
* @return
*/
@Bean
public HelloService helloService(){
System.out.println("配置类@Bean给容器添加组件了");
return new HelloService();
}
}