1.什么是SpringBoot以及特点
SpringBoot基于Spring4.0设计,不仅继承了Spring框架原有的优秀特性[IOC AOP DI],而且还通过简化配置来进一步简化了Spring应用的整个搭建和开发过程。另外SpringBoot通过集成大量的框架使得依赖包的版本冲突,以及引用的不稳定性等问题得到了很好的解决。
特点:
(2)内嵌Tomcat或Jetty等Servlet容器;
(4)尽可能自动配置Spring容器;
(5)提供准备好的特性,如指标、健康检查和外部化配置;
(6)绝对没有代码生成,不需要XML配置。
springboot:----为了简化spring工程的初始化搭建和开发过程。
2.SpringBoot的快速入门
2.1创建一个新的项目
注意:第一次在下载安装springboot时间比较慢,取决于电脑的网速,等待安装就行了。
2.2在主类所在的包下创建controller包,并在该包下创建一个HelloController类文件
package com.hmq.springboot.controller;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;
import java.util.HashMap;
import java.util.Map;
@RestController //标记该类为controller并且该类中所有方法的返回值为json格式
public class HelloController {
@GetMapping("hello")
public Map<String,Object> hello(){
Map<String,Object> map = new HashMap<>();
map.put("name","霍大帅");
map.put("age",18);
map.put("sex","男");
return map;
}
}
2.3在主函数Application.java中测试
package com.hmq.springboot;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
@SpringBootApplication
public class Application {
public static void main(String[] args) {
SpringApplication.run(Application.class, args);
}
}
2.4浏览器访问相应路径,HelloController下的路径
controller service包必须在主类所在包以及子包下
3.了解pom.xml以及配置文件
3.1pom.xml
<?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 https://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<!--parent:继承 该父工程包含jar包的版本号管理-->
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.7.12</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>
<groupId>com.hmq</groupId>
<artifactId>SpringBoot</artifactId>
<version>0.0.1-SNAPSHOT</version>
<name>SpringBoot</name>
<description>SpringBoot</description>
<!--properties:定义版本号,同一版本-->
<properties>
<java.version>1.8</java.version>
</properties>
<dependencies>
<!--web启动依赖:该依赖jar中包含了springweb所需的所有依赖-->
<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>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
</project>
3.2 application.properties
#Tomcat端口号[自定义的端口号,默认8080,6666的端口号不能使用]
server.port=8081
#设置工程的上下文路径[浏览器搜素HelloController的路径]
server.servlet.context-path=/hmq
3.3SpringBoot的配置文件种类
properties:属性文件类型:格式 key=value 格式
#Tomcat端口号[自定义的端口号,默认8080,6666的端口号不能使用]
server.port=8081
#设置工程的上下文路径[浏览器搜素HelloController的路径]
server.servlet.context-path=/hmq
yml:文件类型: 格式:key:
key:value
server:
port: 8081
servlet:
context-path: /hmq
如果yml和properties都存在相同的配置,则以properties为主,如果两个配置文件的内部不同,则合并。不论那种格式,名字必须为 application
4.java读取springboot配置文件的内容
比如:OSS文件上传。 需要: bucketName 密钥 id. 当时你们写死到类中。改为客户的。修改java源码。---交付的war文件。通过java代码读取配置文件里面的内容
读取配置文件内容的方式:
第一种: @Value读取
properties: student.name=zhangsan student.age=18 student.loc=zhengzhou @Value("${student.name}") //读取springboot配置文件中student.name对应的内容 private String name; @Value("${student.age}") private Integer age; @Value("${student.loc}") private String loc; @GetMapping("index") public String index(){ return "姓名:"+name+";年龄:"+age+";地址:"+loc; }
第二种: @ConfigurationProperties(prefix="前缀") ---类
student.name=zhangsan student.age=18 student.loc=zhengzhou #游泳 student.hobby[0]=swing #吃饭 student.hobby[1]=eating #睡觉 student.hobby[2]=sleeping student.map.k1=a1 student.map.k2=a2 student.map.k3=a3 package com.hmq.springboot.vo; import lombok.Data; import org.springframework.boot.context.properties.ConfigurationProperties; import org.springframework.stereotype.Component; import java.util.List; import java.util.Map; @ConfigurationProperties(prefix = "student") //配置文件以student开头 @Data @Component //有spring容器帮助创建该类的对象,并把读取到配置文件中以student开头的内容配置给相应的属性 public class Student { private String name; private Integer age; private String loc;//属性名要和配置文件中的名称相同 private List<String> hobby; private Map<String, Object> map; }
注意:第一种方式只能读取(基本类型和字符串类型) 第二种方式可以读取任意类型
在yml的格式:
server:
servlet:
context-path: /bbb
student:
name: lisi
age: 28
address: zhengzhou
hobby: # yml结构中数组类使用-表示一个元素
- swing
- eating
- sleeping
map:
k1: v1
k2: v2
k3: v3
在线yaml转properties-在线properties转yaml-ToYaml.com
5.springboot多环境开发配置
环境: (1)开发环境 (2)测试环境 (3)生产环境【线上环境】
由于环境的不同,可能它们的配置也会不同
1)application-dev.properties
#针对关于开发的配置内容 server.port=8001
2) application-test.properties
#针对关于测试环境的配置内容 server.port=8002
3)application-online.properties
#针对关于线上环境的配置内容--- server.port=8003
4)application.properties
# 不同环境公共配置可以写在application student.name=zhangsan student.age=18 student.address=beijing student.hobby[0]=swing student.hobby[1]=eating student.hobby[2]=sleeping student.map.k1=v1 student.map.k2=v2 student.map.k3=v3 #激活相应的环境配置---每个环境的文件配置名必须:application-xxx.properties spring.profiles.active=dev
6.springboot注册web三大组件
web中的三大组件. servlet filter过滤器 Listener监听器
由于springboot没有web.xml文件了,有时我们需要把第三方的servlet注册到springboot中。讲解shiro安全框架
6.1 注册servlet到springboot内置tomcat中
6.1.1创建一个servlet类
public class MyServlet extends HttpServlet {
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
System.out.println("~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~");
}
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
System.out.println("**************************************");
}
}
6.1.2创建一个配置类
package com.hmq.springboot.config;
import com.hmq.springboot.servlet.MyServlet;
import org.springframework.boot.web.servlet.ServletRegistrationBean;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import javax.servlet.http.HttpServlet;
@Configuration //等价于xml配置文件
public class MyConfig {
@Bean //等价于xml配置文件<bean/> ServletRegistrationBean该类用于注册servlet到tomcat容器中
public ServletRegistrationBean<HttpServlet> registrationBean(){
ServletRegistrationBean<HttpServlet> registrationBean=new ServletRegistrationBean<>();
registrationBean.setName("my");
registrationBean.setServlet(new MyServlet());
registrationBean.addUrlMappings("/my");
return registrationBean;
}
}