- 一.Spring Boot之Hello World
- 1.创建一个maven工程(jar)
- 2.导入spring boot依赖
- 3.编写一个主程序,并启动Spring Boot应用
- 4.编写相关的controller,service
- 5.启动主程序类的Main,进行测试
- 6.打包以及运行jar包
- 场景启动器
- 未完待续
- 二.快速创建Spring Boot项目
- **Server URL改成:**
- helloworld
- 接口被占用
- 3.配置文件
- yaml(yml)语法
- 1.JavaBean
- 1)在(com.chen)包下建bean包,在bean包中建立实体类
- 2.配置配置文件处理器(依赖)
- 3.yml
- 1)在配置文件application.yml中写相应配置
- 4.properties配置文件
- 2)或者用配置文件application.properties(一样要先导入配置文件处理器依赖)
- application.properties中文乱码问题
- properties测试
- properties配置文件优先级高于yml,也就是同时存在的情况下,优先执行properties文件
- 5.配置文件注入值数据校验(ConfigurationProperties支持)
- Value
- @PropertySource&@importResource&@Bean
- 1.@PropertySource加载指定配置文件
选择maven,写项目名,项目路径,结果如下
pom.xml
org.springframework.boot
spring-boot-starter-parent
2.5.5
org.springframework.boot
spring-boot-starter-web
3.编写一个主程序,并启动Spring Boot应用
package com.chen;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
@SpringBootApplication
public class HelloWorldMainApplication {
public static void main(String[] args) {
//Spring应用启动 参数1:主程序类.class 参数2:传入参数args
SpringApplication.run(HelloWorldMainApplication.class,args);
}
}
解释:
@SpringBootApplication内容如下:
@SpringBootConfiguration
@EnableAutoConfiguration
@ComponentScan(
excludeFilters = {@Filter(
type = FilterType.CUSTOM,
classes = {TypeExcludeFilter.class}
), @Filter(
type = FilterType.CUSTOM,
classes = {AutoConfigurationExcludeFilter.class}
)}
)
public @interface SpringBootApplication {
其中
@SpringBootConfiguration //Spring Boot的配置类;表示这是一个Spring Boot的配置类.含:
@Configuration配置类上标注这个注解,表示文件是配置类(配置文件)
配置类也是文件中的一个组件@Component
@EnableAutoConfiguration开启自动配置功能
以前配置的东西,SpringBoot会帮我们自动配置,;@EnableAutoConfiguration 告诉Spring Boot开启 自动 配置功能.自动配置生效含:
@AutoConfigurationPackage
@import({AutoConfigurationimportSelector.class})
public @interface EnableAutoConfiguration
@AutoConfigurationPackage:自动配置包,含
@import({Registrar.class})
**@AutoConfigurationPackage的作用是将主配置类(@SpringBootApplication标准的类)的所在包及包下所有子包里面的所有组件扫描到Spring容器;**
4.编写相关的controller,service
controller包含controller
controller
作用是把用户提交来的请求通过对URL的匹配,分配个不同的接收器,再进行处理,然后向用户返回结果。
重点就在于如何从HTTP请求中获得信息,提取参数,并分发给不同的处理服务。
package com.chen.controller;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
@Controller
public class HelloController {
@ResponseBody //会将return返回结果写给浏览器
@RequestMapping("/hello") //接收来自浏览器的hello请求
public String hello(){
return "Hello World!";
}
}
5.启动主程序类的Main,进行测试
根据运行结果:
Tomcat started on port(s): 8080 (http) with context path
在浏览器输入
http://localhost:8080/hello
以上是Hello World的开发
打包前将 下面代码放入pom.xml中
org.springframework.boot spring-boot-maven-plugin
打包步骤:
如果没有以上代码,运行jar包时会出现错误:
spring-boot-01-helloworld-1.0-SNAPSHOT.jar中没有主清单属性
运行jar包
java -jar 包名
补充: 场景启动器
Spring-boot-starter-XXX(要写的东西)
xxx场景启动器
https://start.aliyun.com
选择我们需要的模块,项目建立时会联网创建Spring Boot项目
上图取自
主程序类
controller
关闭端口
修改端口
访问
YAML入门
选择spring-web依赖,创建项目
其中
@Configuration 表示该类是容器的组件,只有这样容器才支持注解@ConfigurationProperties
@ConfigurationProperties(prefix = “person”) 该类与yml配置文件中的person一一映射
package com.chen.springboot.bean;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.context.annotation.Configuration;
import java.util.Date;
import java.util.List;
import java.util.Map;
@Configuration
@ConfigurationProperties(prefix = "person")
public class Person {
private String lastName;
private Integer age;
private Boolean boss;
private Date birth;
private Map maps;
private List
上方Person类用到Dog类:
在bean包下创建Dog
package com.chen.springboot.bean;
public class Dog {
private String name;
private Integer age;
@Override
public String toString() {
return "Dog{" +
"name='" + name + ''' +
", age=" + 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;
}
}
2.配置配置文件处理器(依赖)
我们可以导入配置文件处理器,以后编写yml配置就有提示了
org.springframework.boot spring-boot-configuration-processor true
配置文件分为2种:application.yml和application.properties
3.yml配置文件值注入
1)在配置文件application.yml中写相应配置**配置文件**
#又名:application.yaml
#端口 person与实体类Person对应
server:
port: 8081
person:
lastName: zhangsan
age: 18
boss: false
birth: 2017/12/12
maps: {k1: v1,k2: 12}
lists:
- lisi
- zhaoliu
dog:
name: 小狗
age: 2
4.properties配置文件
2)或者用配置文件application.properties(一样要先导入配置文件处理器依赖)
# 应用名称 spring.application.name=spring-boot-02-config # 应用服务 WEB 访问端口 server.port=8080 # 配置person person.last-name=李四 person.age=12 person.birth=2021/12/12 person.boss=false person.lists=a,b,c person.maps.k1=k1 person.maps.k2=k2 person.dog.name=zhangsandog person.dog.age=21application.properties中文乱码问题
(properties配置文件在idea中默认utf-8导致乱码)
File→setting,然后如下
@Value与ConfigurationProperties区别
@Component
@ConfigurationProperties(prefix = "person")
@Validated
public class Person {
//lastName必须是邮箱格式
@Email
//@Value("${person.last-name}")
private String lastName;
//@Value("#{11*2}")
private Integer age;
//@Value("true")
private Boolean boss;
private Date birth;
private Map maps;
private List lists;
private Dog dog;
Value
//赋值name="李四" 这是个定值
@Value("李四");
public String name;
//赋值name=类.属性 这是个不定值
@Value("${类.属性}");
public String name;
@PropertySource&@importResource&@Bean
1.@PropertySource加载指定配置文件
为了区别于:@ConfigurationProperties(prefix = “person”)默认从全局配置文件中获取值;
说明: 加载指定的配置文件:
用法: 例如加载Person类的配置文件
1)新建person.properties
2)将person的相关配置放到该文件中
3)将application.properties中的Person类的相关配置注释掉
4)回到java文件中的Person类加上 @PropertySource(“classpath:person.properties”)
@PropertySource(value = {"classpath:person.properties"})
@Component
@ConfigurationProperties(prefix = "person")
//@Validated
public class Person {
//lastName必须是邮箱格式
// @Email
//@Value("${person.last-name}")
private String lastName;
//@Value("#{11*2}")
private Integer age;
//@Value("true")
private Boolean boss;



