SpringBoot学习---概要及入门

目录

Spring Boot 概要

Spring Boot 介绍

Spring Boot 优点

Spring Boot 入门开发

环境要求

修改Maven配置文件

IntelliJ IDEA 设置

快速构建 Spring Boot 项目

创建 Maven工程

修改pom.xml

创建一个控制器Controller

创建一个引导类

运行一下

项目打包

分析pom文件及启动过程

pom文件

引导类



Spring Boot 概要

Spring Boot 介绍

     随着动态语言的流行( Ruby Scala Node.js , Java 的开发显得格外的笨重;繁多的配置、低下的开发效率、复杂的部署流程以及第三方技术整合难度大。
    在上述环境下, Spring Boot 由此诞生,它的设计是为了使您能够尽可能快地启动和运行。它使用 习惯优于 配置” (项目中存在大量的配置,而 Spring Boot 内置一个习惯性的配置,让你无须手动进行配置)的理念让 你的项目快速运行起来。使用 Spring Boot 很容易创建一个独立运行(运行 jar ,内嵌 Servlet 容器)、准生产 强力的基于 Spring 框架的项目,使用 Spring Boot 你可以不用或者只需要很少的 Spring 配置。提供了 J2EE开发的一站式解决方案。
   其实,说白了就是我们之前做项目,需要用到各种各样的jar包,那么当我们需要使用一个框架场景的时候(比如spring或者mybatis等等)我们要导的包不止一个,各个jar包之间有依赖关系,少了不行,版本不匹配不行,调来调去环境还搭不好你烦不烦,效率低下得很。还有搭好了环境,还需要各种配置文件,web.xml,springmvc.xml,mybatis.xml,巴拉巴拉。那么以上的问题如何解决呢,假如,您现在想开发一个简单的web项目,如果有人提前把你开发需要的jar包全部给你打包好了,你只需要一把拿来用就好,再也不需要想需要什么包,版本匹配不匹配的问题了,甚至别人把大部分的配置都给你配好了,你只需要随便改点小东西就好,你的项目就可以开始业务代码了,是不是很开心。那么这时候,springboot就出来了,以上的事情springboot都帮您做好了,这很符合人类一直以来解放双手的思想。也很符合程序设计的一贯思想,重复的东西,就把它抽出来。

Spring Boot 优点

  • 快速构建独立运行的Spring项目;
  • 无须依赖外部Servlet容器,应用无需打成WAR包;项目可以打成jar包独自运行;
  • 提供 一系列 starter pom 来简化 Maven 的依赖加载;
  • 大量的自动配置,对主流开发框架的无配置集成;
  • 无须配置XML,开箱即用,简化开发,同时也可以修改默认值来满足特定的需求;
  • Spring Boot 并不是对 Spring 功能上的增强,而是提供了一种快速使用 Spring 的方式;
  • 极大提高了开发、部署效率。

Spring Boot 入门开发

您需要:

  • 熟练 Spring 框架的使用
  • 熟练 Maven 依赖管理与项目构建
  • 熟练使用 Eclipse IDEA等编译器

环境要求

jdk1.8 (Spring Boot 推荐 jdk1.8 及以上 ) java version "1.8.0_151"
Maven 3.x (maven 3.2 以上版本 ) Apache Maven 3.3.9
IntelliJ IDEA IntelliJ IDEA 2018.2.2 x64
SpringBoot 使用稳定版本
 

修改Maven配置文件

Maven 安装目录下的 settings.xml 配置文件中, 添加如下配置:

#自己的maven本地仓库
<localRepository>D:\JAVA\maven-repository</localRepository>

<mirrors>
    <mirror>
	    <id>alimaven</id>
		<mirrorOf>central</mirrorOf>
		<name>aliyun maven</name>
		<url>http://maven.aliyun.com/nexus/content/groups/public/</url>
	</mirror>
</mirrors>
<profiles>
    <profile>
		<id>jdk-1.8</id>
		<activation>
			<activeByDefault>true</activeByDefault>
			<jdk>1.8</jdk>
		</activation>
		<properties>
			<maven.compiler.source>1.8</maven.compiler.source>
			<maven.compiler.target>1.8</maven.compiler.target>
			<maven.compiler.compilerVersion>1.8</maven.compiler.compilerVersion>
		</properties>
    </profile>
</profiles>

IntelliJ IDEA 设置

打开setting

快速构建 Spring Boot 项目

需求:浏览器发送 /hello 请求,服务器接受请求并处理,响应 Hello World 字符串
分析 :构建 Spring Boot 项目,事实上建立的就是一个 Maven 项目

创建 Maven工程

IDEA 上新建一个空的 jar 类型 的 maven 工程

修改pom.xml

<!--
    spring-boot-starter-parent : 是当前项目的父依赖
    spring-boot-starter-parent 继承 spring-boot-dependencies
    spring-boot-dependencies 里面定义了很多组件版本号,我们引用对应依赖时,不需要写<version>标签
    -->
    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.0.6.RELEASE</version>
    </parent>


    <!--spring-boot-starter-web
    spring-boot-starter-web
    spring-boot-starter : 它是SpringBoot的场景启动器,它针对不同场景定义了很多不同的场景启动器,
      你的项目需要使用哪些场景启动器,则直接依赖对应的启动器就可以了.

    -->
    <!--spring-boot-starter-web 构建WEb项目, 比如:tomcat springmvc-->
    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
    </dependencies>

可以发现我们的项目中多了很多的jar包

创建一个控制器Controller

package com.haogenmin.controller;

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

@Controller
public class HelloController {


    @ResponseBody
    @RequestMapping("/hello")
    public String hello() {
        return "hello,World!";
    }
}

创建一个引导类

引导类是启动springboot项目的入口,其实就是main函数。

package com.haogenmin;

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

@SpringBootApplication
public class HelloAppliation {

    public static void main(String[] args) {
        SpringApplication.run(HelloAppliation.class, args);
    }

}

运行一下

项目打包

pom.xml 添加如下插件后, 将这个工程打成 jar 包后,可直接通过 java -jar 的命令运行
    <!--可以将当前项目打成一个jar包进行运行-->
    <build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
            </plugin>
        </plugins>
    </build>

 

再次访问,运行正常。

分析pom文件及启动过程

pom文件

  • spring-boot-starter-parent 是当前项目的父级依赖
	<parent>
		<groupId>org.springframework.boot</groupId>
		<artifactId>spring-boot-starter-parent</artifactId>
		<version>2.3.0.RELEASE</version>
		<relativePath/> <!-- lookup parent from repository -->
	</parent>
spring-boot-starter : Spring Boot 场景启动器, Spring Boot 将所有的功能场景抽取出来,做成一个个的
starters 启动器 ),只需项目里引入相关场景的 starter , 就会将它所有依赖导入进来。要用什么功能
就导入什么场景的启动器。(各种启动器可参见官方文档 starter
 
比如这里是web开发的启动器,里面就包含了web开发的依赖。
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-web</artifactId>
</dependency>

我们进入这个启动器看一看,发现里面有这些依赖,这也就明白了为什么加一个启动器就可以使用springmvc,使用json,使用tomcat了。全部已经打包好了。

<dependencies>
    <dependency>
      <groupId>org.springframework.boot</groupId>
      <artifactId>spring-boot-starter</artifactId>
      <version>2.3.0.RELEASE</version>
      <scope>compile</scope>
    </dependency>
    <dependency>
      <groupId>org.springframework.boot</groupId>
      <artifactId>spring-boot-starter-json</artifactId>
      <version>2.3.0.RELEASE</version>
      <scope>compile</scope>
    </dependency>
    <dependency>
      <groupId>org.springframework.boot</groupId>
      <artifactId>spring-boot-starter-tomcat</artifactId>
      <version>2.3.0.RELEASE</version>
      <scope>compile</scope>
    </dependency>
    <dependency>
      <groupId>org.springframework</groupId>
      <artifactId>spring-web</artifactId>
      <scope>compile</scope>
    </dependency>
    <dependency>
      <groupId>org.springframework</groupId>
      <artifactId>spring-webmvc</artifactId>
      <scope>compile</scope>
    </dependency>
  </dependencies>
spring-boot-starter-parent :它父依赖 spring-boot-dependencies ,参见下面:
可以发现spring-boot-dependencies里面有很多的版本号,这是为了解决自己导入依赖的时候,版本不匹配的问题,springboot把相互匹配的版本号全部设定好了,完全不需要开发人员去关心。 当前没有在 dependencies 面管理的依赖自然需要声明版本号。
 
 

引导类

package com.haogenmin.springboot;

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

@SpringBootApplication
public class SpringbootHelloApplication {

	public static void main(String[] args) {
		SpringApplication.run(SpringbootHelloApplication.class, args);
	}

}
通常有一个名为 *Application 的入口 类,里面定义一个 main 方法,使用 SpringApplication.run(HelloMailAppliation.class, args); 来启动 SpringBoot 应用项目。
 
@SpringBootApplication 注解主要组合了 @SpringBootConfifiguration @EnableAutoConfifiguration 、 @ComponentScan
如下:
 
@SpringBootApplication 注解说明:
标注在某个类上, 说明这个类是 Spring Boot 的引导类, Spring Boot 就应该运行这个类的 main 方法来
启动 SpringBoot 应用;
 
@SpringBootApplication 包含的三个注解解析:
  • @SpringBootConfifiguration:用于定义一个Spring Boot的配置类( 配置类 等同 配置文件)
  1. 引用了 @Confifiguration 注解,是Spring底层的一个注解,用于定义 Spring 的配置类。
  2. 配置类也是容器中的一个组件 @Component。
  • @EnableAutoConfifiguration
    告诉 Spring Boot 开启自动配置功能,这样 Spring Boot 会自动根据你导入的依赖jar包来自动配置项目。

1、@AutoConfifigurationPackage包含@Import(AutoConfigurationPackages.Registrar.class)

这个注解的作用是会将引导类(@SpringBootApplication标注的类)所在的包及下面所有子包里面的所有组件扫描到Spring容器;

2、@Import(AutoConfigurationImportSelector.class)

这个注解的作用是

(1)将所有需要导入的组件以全类名的方式返回; 这些组件就会被添加到容器中。

(2)会给容器导入非常多的自动配置类(xxxxAutoConfifiguration),就是导入并配置好当前项目中所需要的组件,省去我们手动编写配

置去注入组件。

我们进去看一看源码:

我们点进去看一看加载的到底是哪一些自动配置类:

OK,那我们就找到加载路径了,我们打开瞅一眼(由于换了一台电脑,这里用的是Eclipse编译器)右边就是加载的配置类。

 

Spring Boot 在启动的时候从 ( spring-boot-autocon?gure-2.0.6.RELEASE.jar ) 类路径下的 META-INF/spring.factories中获取 EnableAutoCon?guration 指定的值,将这些值作为自动配置类导入到容器中,自动配置类就生效,帮我们进行自动配置工作; 以前我们需要自己配置的文件,自动配置类都帮我们完成了;
 
@ComponentScan :该注解标识的类 , 会被 Spring 自动扫描并且装入 bean 容器。
 
 
 
 
如果您觉得对您的学习有帮助,那就点个赞,感谢~
 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值