SpringBoot项目快速入门

一、什么是SpringBoot

Spring Boot是由Pivotal团队提供的全新框架,其设计目的是用来简化新Spring应用的初始搭建以及开发过程。该框架使用了特定的方式来进行配置,从而使开发人员不再需要定义样板化的配置。通过这种方式,Spring Boot致力于在蓬勃发展的快速应用开发领域(rapid application development)成为领导者。

SpringBoot的特点

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配置。

二、使用SpringBoot

1.快速搭建SpringBoot工程

2022版ider
SpringBoot项目快速入门_第1张图片

SpringBoot项目快速入门_第2张图片
SpringBoot项目快速入门_第3张图片

2. SpringBoot初体验

在主类所在的包下创建controller包并在该包下创建一个HelloController类
SpringBoot项目快速入门_第4张图片

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;
    }
}

启动主函数
SpringBoot项目快速入门_第5张图片
运行结果
SpringBoot项目快速入门_第6张图片

3. 了解pom.xml以及配置文件

pom.xml
SpringBoot项目快速入门_第7张图片
SpringBoot框架封装好了很多依赖,统一了依赖的版本号,这样我们在引入依赖时不需添加版本号避免版本冲突问题
SpringBoot项目快速入门_第8张图片
SpringBoot项目快速入门_第9张图片
application.properties
SpringBoot项目快速入门_第10张图片

#设置Tomcat端口号
server.port=6666
#设置工程上下文路径
server.servlet.context-path=/aaa

application.yml
SpringBoot项目快速入门_第11张图片

#设置Tomcat端口号
server:
  port: 6666
  #设置工程上下文路径
  servlet:
    context-path: /aaa

4.springboot的配置文件种类

application.properties和application.yml都是公共的配置文件

application.properties:属性文件类型: 格式 key=value格式
application.yml:文件类型: 格式:

区别:
1.配置文件的书写格式不同,可以互相转换
2.application.properties优先级大于application.yml

#如果yml和properties都存在相同的配置,则以properties为主, 如果两个配置文件的内部不同。则合并。#不管是那种格式,他们的名称必须叫:application

SpringBoot项目快速入门_第12张图片

5.java读取springboot配置文件的内容

比如: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;
}

@Data注解需要引入依赖
SpringBoot项目快速入门_第13张图片

<dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
        </dependency>

注意:第一种方式只能读取(基本类型和字符串类型) 第二种方式可以读取任意类型。

6.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

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

7.springboot注册web三大组件

①注册servlet到springboot内置tomcat中
(1)创建一个servlet类
SpringBoot项目快速入门_第14张图片

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)创建一个配置类

SpringBoot项目快速入门_第15张图片

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;
    }
}

(3)测试
在这里插入图片描述
SpringBoot项目快速入门_第16张图片

②注册过滤器到springboot内置tomcat中
(1)创建一个过滤器类
SpringBoot项目快速入门_第17张图片

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);
    }
}

(2)配置类
SpringBoot项目快速入门_第18张图片

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;
    }
}

你可能感兴趣的:(spring,boot,java,spring)