码迷,mamicode.com
首页 > 编程语言 > 详细

Spring Boot --- 认识Spring Boot

时间:2020-02-02 19:52:23      阅读:93      评论:0      收藏:0      [点我收藏+]

标签:特点   教程   分布式配置中心   http服务器   static   链路   author   服务治理   cti   

在前面我们已经学习过Srping MVC框架,我们需要配置web.xml、spring mvc配置文件,tomcat,是不是感觉配置较为繁琐。那我们今天不妨来试试使用Spring Boot,Spring Boot让我们的Spring应用变的更轻量化。比如:你可以仅仅依靠一个Java类来运行一个Spring引用。你也可以打包你的应用为jar并通过使用java -jar来运行你的Spring Web应用。

一 Spring Boot简介

1、Spring Boot特点

  • 开箱即用,提供各种默认配置来简化项目配置;
  • 内嵌式容器简化Web项目;
  • 没有冗余代码生成和XML配置的要求;

2、Spring Boot和Spring MVC区别

Spring Boot 是一个快速开发的框架,能够快速的整合第三方常用框架(Maven继承方式),简化XML配置,全部采用注解形式,Spring Boot项目中没有web.xml,内置Http服务器(Tomcat、Jetty),默认嵌入Tomcat服务器,最终是以Java应用程序运行。Spring Boot的Web组件默认集成的是Spring MVC框架,Spring MVC是控制层。

注意:Spring Boot使用注解方式启动Spring MVC,详情参考博客:Spring MVC -- 基于注解的控制器

3、Spring Boot和Spring Cloud区别

Spring Cloud依赖Spring Boot组件,使用Spring MVC编写Http协议接口,Spring Cloud是一套目前完整的微服务框架,功能非常强大。注册中心、客户端调用工具、服务治理(负载均衡、断路器、分布式配置中心、网关、服务链路、消息总线等)。

二、创建第一个Spring Boot项目

环境要求:Java1.8及以上、Spring Framework 4.1.5及以上。

开发工具:IDEA 2019。

1、新建项目

点击File->New Project->选择Maven,点击Next,填写如下信息:

技术图片

2、pom文件引入依赖

<!--  spring-boot-starter-parent  整合第三方常用框架依赖信息(各种引来信息)-->
    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.2.2.RELEASE</version>
    </parent>

    <!--  spring-boot-starter-web 是Spring Boot整合Spring MVC Web  -->
    <!--  相当于把第三方常用Maven依赖信息,在parent项目中封装好了,使用Spring Boot提供依赖信息关联整合的Jar包 -->
    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
            <!--  为什么不需要版本号,在parent里面已经封装好了版本号 -->
        </dependency>
    </dependencies>

spring-boot-starter-parent作用:在pom.xml中引入spring-boot-starter-parent,spring官方的解释叫什么stater poms,它可以提供dependency management,也就是说依赖管理,引入以后在申明其它dependency的时候就不需要version了;
spring-boot-starter-web作用:Spring Web 核心组件;
spring-boot-maven-plugin作用:如果我们要直接Main启动spring,那么以下plugin必须要添加,否则是无法启动的。如果使用maven 的spring-boot:run的话是不需要此配置的;

3、简单demo

创建一个包 com.goldwind.member.controller,新增MemberController.java代码:

package com.goldwind.member.controller;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.EnableAutoConfiguration;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

/**
 * @Author: zy
 * @Description: Spring Boot2.0第一个案例
 * @Date: 2020-2-2
 */
@RestController
@EnableAutoConfiguration
public class MemberController {
    //@RestController注解表示该类中所有方法返回json格式  等价于@Controller+@ReponseBody
    //Spring Boot启动原理:Spring MVC注解方式启动,不需要web.xml文件 默认内置tomcat服务器
    @RequestMapping("/memberIndex")
    public String memberIndex(){
        return "Spring Boot2.0全新版本教程!";
    }


    public static void main(String[] args){
        //整个程序入口 启动Spring Boot项目
        SpringApplication.run(MemberController.class,args);
    }
}

在上面代码中,我们使用到了如下注解:

  • @RestController:表示修饰该Controller所有的方法返回JSON格式,直接可以编写Restful接口;

  • @EnableAutoConfiguration注解:作用在于让 Spring Boot 根据应用所声明的依赖来对 Spring 框架进行自动配置,这个注解告诉Spring Boot根据pom中添加的jar依赖猜测你想如何配置Spring。由于spring-boot-starter-web添加了Tomcat和Spring MVC,所以auto-configuration将假定你正在开发一个web应用并相应地对Spring进行设置。

启动主程序,打开浏览器访问http://localhost:8080//memberIndex,可以看到页面输出Spring Boot2.0全新版本教程!

技术图片

4、其它启动方式

小节3中的启动方式,默认只扫描当前包,如果存在多个控制器,是无法扫描到的,我们可以通过@ComponentScan实现,修改MemberController.java文件如下:

package com.goldwind.member.controller;

import org.springframework.boot.autoconfigure.EnableAutoConfiguration;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

/**
 * @Author: zy
 * @Description: Spring Boot2.0第一个案例
 * @Date: 2020-2-2
 */
@EnableAutoConfiguration
@RestController
public class MemberController {
    //@RestController注解表示该类中所有方法返回json格式  等价于@Controller+@ReponseBody
    //Spring Boot启动原理:Spring MVC注解方式启动,不需要web.xml文件 默认内置tomcat服务器
    @RequestMapping("/memberIndex")
    public String memberIndex(){
        return "Spring Boot2.0全新版本教程!";
    }
}

创建启动文件App.java:

package com.goldwind.member.controller;

import org.springframework.boot.SpringApplication;
import org.springframework.context.annotation.ComponentScan;

/**
 * @Author: zy
 * @Description: 启动代码
 * @Date: 2020-2-2
 */
@ComponentScan("com.goldwind.member.controller")
public class App {
    public static void main(String[] args){
        //整个程序入口 启动Spring Boot项目
        SpringApplication.run(MemberController.class,args);
    }
}

5、SpringBootApplication注解使用

如果我们此时再创建一个包 com.goldwind.order.controller,新增OrderController.java代码:

package com.goldwind.order.controller;

import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

/**
 * @Author: zy
 * @Description:
 * @Date: 2020-2-2
 */
@RestController
public class OrderController {
    @RequestMapping("/orderIndex")
    public  String orderIndex(){
        return "orderIndex";
    }
}

此时需要修改扫包范围:

@ComponentScan(basePackages = {"com.goldwind.member.controller","com.goldwind.order.controller"})

当包很多的时候,这种写法无疑是麻烦的,此时我们可以使用@SpringBootApplication。

@SpringBootApplication 被 @Configuration、@EnableAutoConfiguration、@ComponentScan 注解所修饰,换言之 Springboot 提供了统一的注解来替代以上三个注解。

扫包范围:在启动类上加上@SpringBootApplication注解,当前包下或者子包下所有的类都可以扫到。

由于App.Java文件位于包 com.goldwind.member.controller,因此使用@SpringBootApplication注解无法扫描到包 com.goldwind.order.controller,需要将App.java文件移动到包 com.goldwind中,并修改其代码如下:

package com.goldwind;

import org.springframework.boot.SpringApplication;import org.springframework.boot.autoconfigure.SpringBootApplication;/**
 * @Author: zy
 * @Description: 启动代码
 * @Date: 2020-2-2
 */

@SpringBootApplication
public class App {
    public static void main(String[] args){
        //整个程序入口 启动Spring Boot项目
        SpringApplication.run(App.class,args);
    }
}

 

Spring Boot --- 认识Spring Boot

标签:特点   教程   分布式配置中心   http服务器   static   链路   author   服务治理   cti   

原文地址:https://www.cnblogs.com/zyly/p/12251179.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!