SpringBoot入门教程(一) SpringBoot入门

一、SpringBoot简介

  SpringBoot是整个Spring技术栈的整合,来简化Spring应用开发,约定大于配置,去繁从简,just run 就能创建一个独立的,产品级别的应用。

  背景:

    J2EE笨重的开发、繁多的配置、底下的开发效率、复杂的部署流程、第三方技术集成难度大。

  解决:

    "Spring全家桶"时代。

    Spring Boot ——> J2EE一站式解决方案

    Spring Cloud ——>分布式整体解决问题

  优点:

    • 快速创建独立运行的Spring项目以及与主流框架集成
    • 嵌入的Tomcat,无需打包成WAR包
    • starters自动依赖与版本控制
    • 大量自动配置,简化开发,也可修改默认值
    • 无需配置xml,无代码生成,开箱即用
    • 准生产环境的运行时应用监控
    • 与云计算天然集成

二、微服务

  2014年,martin fowler

  微服务:一种架构风格。一个应用应该是一组小型服务,可以通过HTTP的方式进行互通;每一个功能元素最终都是一个可替换和独立升级的软件单元

  单体应用:All in one

 

 

 

 

 

 

 

三、环境配置

  环境约束:

  -jdk1.8:Spring Boot 建议jdk1.7以上;java -version   java version "1.8.0_131"

  -maven3.x:maven3.3以上版本;Apache Maven 3.6.1

  查询方法:

 

 

 

 

 

 

  -IDEA

  -SpringBoot 1.5.9版本(稳定版本)

 

一、IDEA配置

 

 

 

 

 

 

 四、SpringBoot HelloWorld

  一个功能:浏览器发送hello请求,服务器接收请求并相应,响应Hello World 字符串;

1、创建一个maven工程;(jar)

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

2、导入依赖springboot相关的依赖

 

 

 

 

 

 

 

 

 <!-- Inherit defaults from Spring Boot -->
    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.1.13.RELEASE</version>
    </parent>

    <!-- Add typical dependencies for a web application -->
    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
    </dependencies>

3、编写一个主程序,启动springboot应用

 

 

 

 

 

 

类中代码如下:

package com.ge;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;

/**
 * @SpringBootApplication 来标注一个主程序类,说明这是一个Spring Boot应用
 */
@SpringBootApplication
public class HelloWorldMainApplication {
    //快捷键是psvm + Tab键
    public static void main(String[] args) {
        //spring应用启动起来
        SpringApplication.run(HelloWorldMainApplication.class,args);
    }
}

4、编写相关的Controller、Service

 

 该类中代码如下

package com.ge.controller;

import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;

/**
 * @Controller 处理请求
 */
@Controller
public class HelloController {
    /**
     * 接收来自浏览器的hello请求
     * @return
     */
    @ResponseBody
    @RequestMapping("/hello")
    public String hello(){
        return "HelloWorld!";
    }
}

 

5、运行主程序测试

 

 

 

 

 

6、简化项目部署

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

可以复制到我的虚拟机里,然后运行测试:(关于连接问题,可以查看这篇博客https://blog.csdn.net/qq_43054210/article/details/100942898

 

 

 

 

 

 五、项目探究

1、POM文件

    <!-- Inherit defaults from Spring Boot -->
    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.1.13.RELEASE</version>
    </parent>

2、导入的依赖

<!-- Add typical dependencies for a web application -->
    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
    </dependencies>
spring-boot-starter-web

spring-boot-starter:spring-boot场景启动器;帮我们导入了web模块正常运行所依赖的组件

  Spring Boot 将所有的功能场景都抽取出来,做成一个个的starter(启动器),只需要在项目里面引入这些starter相关场景的所有依赖都会导入进来。

要什么功能就导入什么场景启动器

 2、主程序类,主入口类

/**
 * @SpringBootApplication 来标注一个主程序类,说明这是一个Spring Boot应用
 */
@SpringBootApplication
public class HelloWorldMainApplication {
    //快捷键是psvm + Tab键
    public static void main(String[] args) {
        //spring应用启动起来
        SpringApplication.run(HelloWorldMainApplication.class,args);
    }
}




@java.lang.annotation.Target({java.lang.annotation.ElementType.TYPE})
@java.lang.annotation.Retention(java.lang.annotation.RetentionPolicy.RUNTIME)
@java.lang.annotation.Documented
@java.lang.annotation.Inherited
@org.springframework.boot.SpringBootConfiguration
@org.springframework.boot.autoconfigure.EnableAutoConfiguration
@org.springframework.context.annotation.ComponentScan(excludeFilters = {@org.springframework.context.annotation.ComponentScan.Filter(type = org.springframework.context.annotation.FilterType.CUSTOM, classes = {org.springframework.boot.context.TypeExcludeFilter.class}), @org.springframework.context.annotation.ComponentScan.Filter(type = org.springframework.context.annotation.FilterType.CUSTOM, classes = {org.springframework.boot.autoconfigure.AutoConfigurationExcludeFilter.class})})
public @interface SpringBootApplication {
@org.springframework.core.annotation.AliasFor(annotation = org.springframework.boot.autoconfigure.EnableAutoConfiguration.class)
java.lang.Class<?>[] exclude() default {};

@org.springframework.core.annotation.AliasFor(annotation = org.springframework.boot.autoconfigure.EnableAutoConfiguration.class)
java.lang.String[] excludeName() default {};

@org.springframework.core.annotation.AliasFor(annotation = org.springframework.context.annotation.ComponentScan.class, attribute = "basePackages")
java.lang.String[] scanBasePackages() default {};

@org.springframework.core.annotation.AliasFor(annotation = org.springframework.context.annotation.ComponentScan.class, attribute = "basePackageClasses")
java.lang.Class<?>[] scanBasePackageClasses() default {};
 

 

@SpringBootApplication:SpringBoot应用标注在某个类上,说明这个类时SpringBoot的主配置类,SpringBoot就应该运行这个类的main方法来启动SpringBoot应用

   @SpringBootConfiguration:Spring Boot得配置类;

    标注在某个类上,表示这是一个Spring Boot的配置类;

   @Configuration:配置类上来注解这个配置

     配置类 ----- 配置文件;配置类也是容器的一个组件;@Component

 

   @EnableAutoConfiguration:开启自动配置功能;以前我们要配置的东西,Spring Boot帮我们自动配置; @EnableAutoConfiguration

告诉SpingBoot开启自动配置功能;这样自动配置才能生效

@org.springframework.boot.autoconfigure.AutoConfigurationPackage
@org.springframework.context.annotation.Import({org.springframework.boot.autoconfigure.AutoConfigurationImportSelector.class})
public @interface EnableAutoConfiguration {

  @AutoConfigurationPackage:自动配置包

     @org.springframework.context.annotation.Import({org.springframework.boot.autoconfigure.AutoConfigurationPackages.Registrar.class}):spring的底层注解

     @import给容器中导入一个组件;导入的组件由AutoConfigurationPackages.Registrar.class指定

 

 六、使用Spring Initializer 快速创建Spring Boot项目 

 IDEA都支持使用Spring的项目创建向导快速创建一个Spring Boot项目;

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 默认生成的Spring Boot项目的特点:

  • 主程序已经生成好了,只需要编写自己的业务逻辑就好了
  • resources文件夹目录结构
    • static:保存所有的静态资源;js css img
    • templates:保存所有的模板页面;(Spring Boot 默认jar 包使用嵌入式的Tomcat,默认不支持JSP页面);可以使用模板引擎(freemaker,thymeleaf);
    • application.properties:Spring Boot应用的配置文件;可以修改默认配置

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

posted @ 2020-03-26 22:54  ZSJ-白  阅读(7221)  评论(0编辑  收藏  举报