Spring Boot学习篇(一)

Spring Boot学习篇(一)

1 Spring、SpringBoot、SpringCloud有什么区别?

spring一般指Spring框架(SpringFramework),它是一个开源、轻量级的Java应用开发框架。其核心是控制反转IOC和面向切面编程AOP。Spring提供了很多包括ORM、事务管理、WebMVC等非常有用的模块构建Java应用。
SpringBoot则是在Spring基础之上,用于快速构建Spring应用的一个框架,它并不是要取代Spring,而是基于Spring的。
SpringCloud是一个分布式微服务系统的开发框架,SpringBoot则是SpringCloud的基础设施。三者之间都不是取代的关系,而是一种倒三角的依赖关系,顶层是SpringCloud,中间层是SpringBoot,底层是Spring。
简单来说是就是现有Spring,再有SpringBoot,最后才有SpringCloud

2.创建并配置一个简单的springboot项目

2.1 创建一个maven方式的module

2.1.1 new➡module

Spring Boot学习篇(一)_第1张图片

2.1.2 选择maven和jdk版本为1.8后,点击next按钮

Spring Boot学习篇(一)_第2张图片

2.1.3 parent部分改为none写上合适的项目名(在空工程下面),然后点击next按钮

Spring Boot学习篇(一)_第3张图片

2.2 配置pom.xml

2.2.1 继承spring-boot项目

 
   <parent>
       <artifactId>spring-boot-starter-parentartifactId>
       <groupId>org.springframework.bootgroupId>
       <version>2.7.2version>
   parent>

2.2.2 导入依赖

a 导入springboot所需要的依赖
 
<dependency>
            <groupId>org.springframework.bootgroupId>
            <artifactId>spring-boot-starter-webartifactId>
dependency>
b 导入热部署依赖
 
 <dependency>
            <groupId>org.springframework.bootgroupId>
            <artifactId>spring-boot-devtoolsartifactId>
  dependency>

2.3 创建spring-boot启动类(java文件夹下面)

2.3.1 在java文件家下面创建com.zlz包

Spring Boot学习篇(一)_第4张图片

2.3.2 在zlz包下面创建start01类

a start类书写的内容如下所示
package com.zlz;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
//① 加上@SpringBootApplication注解
@SpringBootApplication
public class Start01 {
    //②通过main快捷键生成main方法
    public static void main(String[] args) {
        //③通过SpringApplication.run去启动它
        SpringApplication.run(Start.class);
    }
}
b 核心要点
@SpringBootApplication 是springboot启动注解,是spring boot的核心注解
它所在的类启动时,会扫描该类所在的目录以及目录下的所有子目录都能被扫描到
这个注解扫描的是spring相关的注解
如类位于com.zlz包下面 那么com.zking包下面的所有文件都能扫描到,com.zlz.abc包下面的所有文件也能被扫描到

2.4在com.zlz.controller包下面创建TestController类

2.4.1 在com.zlz包下面创建controller包,其目录结构如下图所示:

Spring Boot学习篇(一)_第5张图片

2.4.2 在controller包下面创建TestController类

package com.controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
//让该类的所有方法都返回json格式的字符串
@RestController
public class TestController {
    //给show方法加上一个访问地址
    @RequestMapping("show")
    public String show(){
        return "spring boot的第一次自行测试";
    }
}

2.5 启动spring boot项目,当出现下图所示的spring图形时,代表启动成功(配置没问题)

Spring Boot学习篇(一)_第6张图片

2.6 访问TestController类,测试controller包的位置是否放对了

Spring Boot学习篇(一)_第7张图片

2.6 @SpringBootApplication底层

重要的有以下三大注解
@SpringBootConfiguration 这是一个配置类 xml文件
@EnableAutoConfiguration  根据导入的依赖 自动配置环境 加了依赖一定需要做相应的配置(如导入了通用mapper时)
@ComponentScan 组件扫描 本包及其子目录

3 把spring boot项目打包

3.0 准备工作:在pom.xml文件中加入如下代码

 
    <properties>
        
        <skipTests>trueskipTests>
    properties>

    <build>
        
        <plugins>
            <plugin>
                <groupId>org.springframework.bootgroupId>
                <artifactId>spring-boot-maven-pluginartifactId>
                
                <configuration>
                    
                    <mainClass>com.zlz.Start01mainClass>
                configuration>
            plugin>
        plugins>


    build>

3.1 两种方式

3.1.1通过命令

a 进入到项目src文件夹的所在的目录

Spring Boot学习篇(一)_第8张图片

b 地址栏输入cmd并回车

Spring Boot学习篇(一)_第9张图片

c 在cmd窗口输入如下指令并回车执行
mvn clean package

Spring Boot学习篇(一)_第10张图片

d 打包好后的效果如下所示

Spring Boot学习篇(一)_第11张图片

e 启动打包好的jar包程序
e1.进入jar包所在的文件夹

Spring Boot学习篇(一)_第12张图片

e2 输入java -jar jar包名指令回车就行

Spring Boot学习篇(一)_第13张图片

e3 测试之前的控制器地址是否还能访问

Spring Boot学习篇(一)_第14张图片

3.1.2 通过idea工具

a 找到需要打包的项目➡双击clean按钮

Spring Boot学习篇(一)_第15张图片

b 此时target文件夹被删除掉了

Spring Boot学习篇(一)_第16张图片

c 双击package按钮

Spring Boot学习篇(一)_第17张图片

d 项目目录下生成了target文件夹,并且target文件夹下有已经打包好的jar包,此时代表打包成功

Spring Boot学习篇(一)_第18张图片

4 spring boot下的过滤器(filter)

4.1 在com包.zlz包下面创建filter包,其目录结构如下所示

Spring Boot学习篇(一)_第19张图片

4.2 在filter包下面创建MyFilter文件

package com.zlz.filter;

public class MyFilter {
}

4.3 实现过滤器的两种方式

4.3.1 使用@WebFilter方式

a 书写过滤器类MyFilter
package com.zlz.filter;

import javax.servlet.*;
import javax.servlet.annotation.WebFilter;
import java.io.IOException;

//①加上WebFilter注解并配上过滤的地址
@WebFilter("/*")
//② 实现filter接口并重写doFilter方法,该接口是javax包下面的
public class MyFilter implements Filter {
    @Override
    public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException {
        //③ 在doFilter方法里面书写代码逻辑
        System.out.println("webfilter的方式进行过滤");
        //④ 放行
        filterChain.doFilter(servletRequest, servletResponse);
    }
}
b 在配置类里面加上@ServletComponentScan注解(springboot的启动类也是一个配置类)
b.1 加的语法
@ServletComponentScan(filter包的全限定名)
//此注解是可以扫描servlet、监听器、webfilter注解的
b.2 start01完整代码
package com.zlz;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.web.servlet.ServletComponentScan;

//① 加上@SpringBootApplication注解
@SpringBootApplication
//springboot的启动类也是一个配置类
@ServletComponentScan("com.zlz.filter")
public class Start01 {
    //②通过main快捷键生成main方法
    public static void main(String[] args) {
        //③通过SpringApplication.run去启动它
        SpringApplication.run(Start01.class);
    }
}

c 访问网址,看控制台是否打印输出了
c.1 启动Start01类的main方法并访问一个网址

Spring Boot学习篇(一)_第20张图片

c.2 控制台输出结果(代表了过滤器配置成功了)

在这里插入图片描述

4.3.2 使用配置类的形式(一般采用这种)

a 在com包.zlz包下面创建config包,其目录结构如下所示

Spring Boot学习篇(一)_第21张图片

b 在filter类下面创建实现filter接口的类(过滤之后的逻辑写这里)
package com.zlz.filter;
import javax.servlet.*;
import java.io.IOException;
//这里就是一个普通的类,不用写webFilter注解,过滤地址在配置类里面写
public class MyFilter implements Filter {
    @Override
    public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException {
        //① 在doFilter方法里面书写代码逻辑
        System.out.println("spring boot配置类的方式进行过滤");
        //② 放行
        filterChain.doFilter(servletRequest, servletResponse);
    }
}
c 创建过滤器配置类FilterConfig
package com.zlz.config;

import com.zlz.filter.MyFilter;
import org.springframework.boot.web.servlet.FilterRegistrationBean;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
@Configuration//①加Configuration注解,表示这是一个配置类
//这个随便加在哪个配置类(被@Configuration修饰的类)都是可以的
//@ServletComponentScan("com.zlz.filter")
public class FilterConfig {
    @Bean //在IOC容器中创建组件 等同xml中的bean标签
    //② 创建返回值类型为FilterRegistrationBean的方法
    public FilterRegistrationBean<MyFilter> te(){
        //③ 建立 FilterRegistrationBean对象
        FilterRegistrationBean fr=new FilterRegistrationBean();
        //④设置过滤器类,直接new Filter接口的实现类进去就行
        fr.setFilter(new MyFilter());
        //⑤ 设置要过滤的地址,等同于之前学的@webFilter注解
        fr.addUrlPatterns("/*");
        //⑥ 设置过滤器执行顺序,数字越小,越先执行
        fr.setOrder(1);
        return fr;
    }

}
d 测试环节
d.1 启动Start01类的main方法并访问一个地址

Spring Boot学习篇(一)_第22张图片

d.2 查看控制台输出结果

Spring Boot学习篇(一)_第23张图片

你可能感兴趣的:(spring,boot学习篇,spring,boot,简易启动,项目打包方式,过滤器filter)