Spring Boot是由Pivotal团队提供的全新框架,其设计目的是用来简化新Spring应用的初始搭建以及开发过程。该框架使用了特定的方式来进行配置,从而使开发人员不再需要定义样板化的配置。通过这种方式,Spring Boot致力于在蓬勃发展的快速应用开发领域(rapid application development)成为领导者。
SpringBoot基于Spring4.0设计,不仅继承了Spring框架原有的优秀特性,而且还通过简化配置来进一步简化了Spring应用的整个搭建和开发过程。另外SpringBoot通过集成大量的框架使得依赖包的版本冲突,以及引用的不稳定性等问题得到了很好的解决。
SpringBoot所具备的特征有:
(1)可以创建独立的Spring应用程序,并且基于其Maven或Gradle插件,可以创建可执行的JARs和WARs;
(2)内嵌Tomcat或Jetty等Servlet容器;
(3)提供自动配置的“starter”项目对象模型(POMS)以简化Maven配置;
(4)尽可能自动配置Spring容器;
(5)提供准备好的特性,如指标、健康检查和外部化配置;
(6)绝对没有代码生成,不需要XML配置。
在主类所在的包下创建controller包并在该包下创建一个HelloController类
package com.example.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//通过RestController注解让类中返回值变为json类型
public class HelloController {
@GetMapping("hello")//创建get请求路径为hello
public Map<String,Object> hello(){
Map<String, Object> map = new HashMap<>();
map.put("name","阿娇");
map.put("age",18);
return map;
}
}
pom.xml
SpringBoot框架封装好了很多依赖,统一了依赖的版本号,这样我们在引入依赖时不需添加版本号避免版本冲突问题
application.properties
#设置Tomcat端口号
server.port=6666
#设置工程上下文路径
server.servlet.context-path=/aaa
#设置Tomcat端口号
server:
port: 6666
#设置工程上下文路径
servlet:
context-path: /aaa
application.properties和application.yml都是公共的配置文件
application.properties:属性文件类型: 格式 key=value格式
application.yml:文件类型: 格式:
区别:
1.配置文件的书写格式不同,可以互相转换
2.application.properties优先级大于application.yml
#如果yml和properties都存在相同的配置,则以properties为主, 如果两个配置文件的内部不同。则合并。#不管是那种格式,他们的名称必须叫:application
比如:OSS文件上传。 需要: bucketName 密钥 id. 当时你们写死到类中。改为客户的。修改java源码。—交付的war文件。通过java代码读取配置文件里面的内容。
读取配置文件内容的方式:
第一种: @Value读取
@Value("${student.name}")//读取springBoot配置文件中Student.name内容
private String name;
@Value("${student.age}")
private Integer age;
@GetMapping("aaa")
public String aaa(){
return "姓名:"+ name + ";年龄:"+age;
}
第二种: @ConfigurationProperties(prefix=“前缀”) —类
package com.example.springboot.servlect;
import lombok.Data;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.stereotype.Component;
@Data//通过该注解获取get、set方法 可以给属性设置值
@ConfigurationProperties(prefix = "student")//读取配置文件中的开头为student
@Component//通过该注解交由spring容器进行反射
public class Student {
private String name;//属性名需要和文件名相同
private Integer age;
}
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
</dependency>
注意:第一种方式只能读取(基本类型和字符串类型) 第二种方式可以读取任意类型。
环境: (1)开发环境 (2)测试环境 (3)生产环境【线上环境】
由于环境的不同,可能它们的配置也会不同。
(1)application-dev.properties
#针对关于开发的配置内容
server.port=8001
(2) application-test.properties
#针对关于测试环境的配置内容
server.port=8002
(3)application-online.properties
#针对关于线上环境的配置内容---
server.port=8003
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
①注册servlet到springboot内置tomcat中
(1)创建一个servlet类
package com.example.springboot2.servlet;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
public class MyServlet extends HttpServlet {
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
System.out.println("get请求会输出我");
}
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
System.out.println("post请求会输出我");
}
}
(2)创建一个配置类
package com.example.springboot2.config;
import com.example.springboot2.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配置文件中 ServletRegistrationBean 该类用于注册servlet到tomcat容器中
public ServletRegistrationBean<HttpServlet> registrationBean(){
//创建ServletRegistrationBean对象
ServletRegistrationBean<HttpServlet> re = new ServletRegistrationBean<>();
//设值该对象的名字
re.setName("my");
//设置该对象的Servlet
re.setServlet(new MyServlet());
//设置该对象的访问路径
re.addUrlMappings("/my");
return re;
}
}
②注册过滤器到springboot内置tomcat中
(1)创建一个过滤器类
package com.example.springboot2.servlet;
import javax.servlet.*;
import java.io.IOException;
public class MyFilter implements Filter {//实现Filter接口(import javax.servlet.*;)
@Override//重写doFilter方法
public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException {
//检验是否登录 编码
System.out.println("经过了该过滤器");
//放行到下一个过滤器或者到达你的请求地址的controller
filterChain.doFilter(servletRequest,servletResponse);
}
}
package com.example.springboot2.config;
import com.example.springboot2.servlet.MyFilter;
import com.example.springboot2.servlet.MyServlet;
import org.springframework.boot.web.servlet.FilterRegistrationBean;
import org.springframework.boot.web.servlet.ServletRegistrationBean;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import javax.servlet.Filter;
import javax.servlet.http.HttpServlet;
@Configuration//等价于xml配置文件
public class Myconfig {
@Bean //等价于xml配置文件中 ServletRegistrationBean 该类用于注册servlet到tomcat容器中
public ServletRegistrationBean<HttpServlet> registrationBean(){
//创建ServletRegistrationBean对象
ServletRegistrationBean<HttpServlet> re = new ServletRegistrationBean<>();
//设值该Bean对象的名字
re.setName("my");
//设置该Bean对象的Servlet
re.setServlet(new MyServlet());
//设置该Bean对象的访问路径
re.addUrlMappings("/my");
return re;
}
@Bean//加载方法上 把该方法的返回结果交于springIOC容器管理 FilterRegistrationBean 该类用于注册过滤器到tomcat容器中
public FilterRegistrationBean<Filter> filterFilterRegistrationBean(){
//创建FilterRegistrationBean对象
FilterRegistrationBean<Filter> filterFilterRegistrationBean = new FilterRegistrationBean<>();
//设值该Bean对象的名字
filterFilterRegistrationBean.setName("myFilter");
//设置该Bean对象的过滤器
filterFilterRegistrationBean.setFilter(new MyFilter());
//设置该Bean对象的访问路径
filterFilterRegistrationBean.addUrlPatterns("/*");
return filterFilterRegistrationBean;
}
}