02月08, 2021

1、SpringBoot 快速开始

SpringBoot快速开始

一、什么是Spring Boot

Spring Boot 是由 Pivotal 团队提供的全新框架,其设计目的是用来简化新 Spring 应用的初始搭建以及开发过程。该框架使用了特定的方式来进行配置,从而使开发人员不再需要定义样板化的配置。用我的话来理解,就是 Spring Boot 其实不是什么新的框架,它默认配置了很多框架的使用方式,就像 Maven 整合了所有的 Jar 包,Spring Boot 整合了所有的框架。

二、使用 Spring Boot有什么好处

其实就是简单、快速、方便!平时如果我们需要搭建一个 Spring Web 项目的时候需要怎么做呢?

  1. 配置 web.xml,加载 Spring 和 Spring mvc
  2. 配置数据库连接、配置 Spring 事务
  3. 配置加载配置文件的读取,开启注解
  4. 配置日志文件 ... 配置完成之后部署 Tomcat 调试 ...

三、使用IDEA创建Spring Boot工程

1、创建

-w858

默认使用 https://start.spring.io/ 这个网址创建工程,其实一次就是网站已经选择性的帮你配置好Spring工程的所需的基本配置了,当然,这个网址有时候访问速度太慢,可以使用下面我们给出的阿里云的网址https://start.aliyun.com/一样可以创建

2、项目基本信息

-w858

3、选择版本和依赖

-w923

右上角选择SpringBoot版本,以及Springboot工程的依赖,其实无非就是maven工程帮我们导入的jar包,这里其他我们暂时都不需要,后面有需要自己到POM.xml文件导入就行了,这里为了演示需要,直接导入Spring web相关jar包

4、工程名

-w923

5、基本结构

下面就是springboot工程创建好之后的基本结构 -w434

其实和maven工程的结构基本一致

注意: 这里文件的存放位置,SpringBoot相当的方便,但是这种方便肯定是有代价的,那就是"约定大于配置",在不改动SpringBoot默认配置的情况下,Spring Boot里面每种类型文件存放的位置是有默认的约定的,如果你不按照约定去存放,那肯定就有问题

一般情况下,后台java代码,我们默认按照下面的路径去存放比较合适(包名是自定义的):

com
 +- example
     +- myproject
         +- Application.java
         |
         +- bean
         |   +- Customer.java
         |   +- CustomerRepository.java
         |
         +- service
         |   +- CustomerService.java
         |
         +- controller
             +- CustomerController.java

最关键的点,就是Application启动类,一定要在其他类的上一级目录

那这样,我们已经开始写代码了,比如创建一个最简单的Hello World

@RestController
public class HelloController {
    @GetMapping("/hello")
    public String index(){
        return "Hello World";
    }
}

@RestController的意思就是controller里面的方法都以json格式输出,不用再写什么jackjson配置的了!

启动主程序,打开浏览器访问http://localhost:8080/hello,就可以看到效果了,有木有很简单!

四、一些怀旧的设置

1、整合Servlet、Filter与Listener

只需要两个步骤: 1)、和以前一样编写Servlet、Filter或者Listener

Servlet

@WebServlet(name = "HelloFirstServlet",urlPatterns = "/helloFirst")
public class HelloFirstServlet extends HttpServlet {
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        doGet(request,response);
    }

    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        System.out.println("HelloFirstServlet.doGet");
    }
}

Filter

@WebFilter(filterName = "HelloFirstFilter",urlPatterns = "/*")
public class HelloFirstFilter implements Filter {
    public void destroy() {
    }
    public void doFilter(ServletRequest req, ServletResponse resp, FilterChain chain) throws ServletException, IOException {
        System.out.println("====进入 HelloFirstFilter.doFilter====");
        chain.doFilter(req, resp);
        System.out.println("====离开 HelloFirstFilter.doFilter====");
    }

    public void init(FilterConfig config) throws ServletException {
        System.out.println("====初始化 HelloFirstFilter.init====");
    }
}

Listener


2)、在启动类中加入Servlet扫描@ServletComponentScan

@SpringBootApplication
@ServletComponentScan
public class SpringbootdemoApplication {
    public static void main(String[] args) {
        SpringApplication.run(SpringbootdemoApplication.class, args);
    }
}

五、加入热部署

spring为开发者提供了一个名为spring-boot-devtools的模块来使Spring Boot应用支持热部署,提高开发者的开发效率,无需手动重启Spring Boot应用。

devtools的原理

深层原理是使用了两个ClassLoader,一个Classloader加载那些不会改变的类(第三方Jar包),另一个ClassLoader加载会更改的类,称为restart ClassLoader,这样在有代码更改的时候,原来的restart ClassLoader 被丢弃,重新创建一个restart ClassLoader,由于需要加载的类相比较少,所以实现了较快的重启时间。

使用需要添加以下的配置:

<dependencies>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-devtools</artifactId>
        <optional>true</optional>
    </dependency>
    <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>
            <configuration>
                <fork>true</fork>
            </configuration>
        </plugin>
    </plugins>
</build>

IDEA配置

当我们修改了Java类后,IDEA默认是不自动编译的,而spring-boot-devtools又是监测classpath下的文件发生变化才会重启应用,所以需要设置IDEA的自动编译:

(1)File-Settings-Compiler-Build Project automatically

-w1196

(2)ctrl + shift + alt + /,选择Registry,勾上 Compiler autoMake allow when app running

-w375 -w986

本文链接:http://www.yanhongzhi.com/post/springboot-1.html

-- EOF --

Comments