微服务框架(1)----基于SpringBoot2.0版本框架-引入&Web开发组件

SpringBoot简介

  • SpringBoot让我们的Spring应用更加的轻量化;比如:我们可以靠一个Java类来运行一个Spring的引用。也可以通过运行jar包的方式java -jar 来运行自己的Spring Web应用。
  • Spring Boot的优点:
    (1)为所有Spring开发者更快的入门
    (2)开箱即用,提供各种默认配置来简化项目配置
    (3)内嵌式容器简化Web项目
    (4)没有冗余代码生成和XML配置的要求
  • SpringBoot是一个快速开发的框架,能够快速的整合第三方框架,简化XML配置,全部采用注解的形式,内置Web容器,帮助开发者能够快速开发,SpringBoot的Web组件默认集成SpringMVC框架,SpringMVC是控制层
  • SpringBoot通过maven的继承原理实现了版本的统一管理
  • SpringBoot的Web环境启动默认使用Tomcat且端口号是8080

SpringBoot和SpringMVC的区别

  • SpringBoot是一个快速开发的框架,能够整合第三方框架,简化XML配置,全部采用注解的形式,内置Web容器,帮助开发者能够快速开发,SpringBoot的Web组件默认集成是SpringMVC框架
  • SpringMVC是控制层的框架

SpringBoot 和 SpringCloud的区别

  • SpringBoot是一个快速开发的框架,能够整合第三方框架,简化XML配置,全部采用注解的形式,内置Web容器,帮助开发者能够快速开发,SpringBoot的Web组件默认集成是SpringMVC框架
  • Spring Cloud依赖与SpringBoot的组件,使用SpringMVC编写Http协议接口,同时SpringCloud是一套完整的微服务解决框架,通信协议是Http+Json格式
  • 如果需要做微服务的话,就要用SpringCloud整合SpringBoot,如果项目中不使用SpringCloud,可能就是不需要实现微服务
  • SpringBoot不是一个微服务框架只是一个快速开发的框架

系统要求

  • Java1.8以及以上
  • Spring Framework 4.1.5 以及以上

创建SpringBoot工程

  • 步骤:
    (1)创建一个Maven工程(这里不用脚手架的方式创建)
    在这里插入图片描述
    (2)创建的时候项目类型是jar类型,即使是web项目
    (3)引入SpringBoot的maven依赖
    <parent>
		<groupId>org.springframework.boot</groupId>
		<artifactId>spring-boot-starter-parent</artifactId>
		<version>2.0.0.RELEASE</version>
	</parent>
	<dependencies>
		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter-web</artifactId>
		</dependency>
	</dependencies> 

  • maven的< parent>标签的作用是聚合工程,指明该pom文件的父类,有继承关系
  • 其中重点介绍几个maven依赖的作用:

(1)spring-boot-starter-parent

  • 在pom.xml中引入spring-boot-starter-parent,spring官方的解释叫做starter poms,他可以提供给dependency management,也就是说依赖管理,引入之后再申明其他dependency的时候就不需要写版本号,进行了统一版本的管理

(2)spring-boot-starter-web

  • springBoot提供的web组件的核心,整合了SpringMVC,把传统方式的SpringMVC的依赖的jar包全部下载下来,整合好所有相关的依赖jar包,原理就是利用了maven的依赖传递,spring-boot-starter-web里面依赖了相关的SpringMVCjar包

(3)spring-boot-maven-plugin

  • 如果我们要直接通过Main函数启动Spring,该plugin一定要添加,否则是无法启动的,如果我们使用maven的spring-boot:run的方式启动,则该组件不需要配置(我试验了下加不加都可以,反正别人都加上了,那就加上吧,可以使用maven相关插件

常用注解介绍:

  • @RestController
    该注解的意思相当于是@Controlelr+@ResponseBody(对象->json,返回的是json对象。@RequestBody和其正好相反,穿传来的是json将其转为对象),一般该注解放在class类上,如果做微服务的时候,一般都要在类上加上该注解
    @RestController修饰的类下的所有方法,全部都是返回json格式,这样的话就不用在每个方法上加@ResponseBody了

  • @EnableAutoConfiguration
    作用就是开启自动装配,自动加载jar包,作用在于让SpringBoot根据应用所声明的依赖来对Spring框架进行自动装配。该注解告知SpringBoot根据添加的jar依赖猜测你想如何配置Spring。由于spring-boot-starter-web添加了Tomcat和SpringMVC,所以@EnableAutoConfiguration将假定你在开发一个web应用,并相应的对Spring进行设置。

  • @ComponentScan
    扫包的范围,如果我们不加扫包,我们启动SpringBoot的时候,只能识别到当前类的注解。

例如定义了两个Controller,A和B,main函数在 A 中,没有配置@Compenent,这时候我们启动之后,只能访问到A中的映射,B中的访问不到。因为我们没有配置自动扫包只能加载到main函数所在类的注解

SpringBoot的三种启动方式

(1)直接使用@EnableAutoConfiguration来进行,只能识别当前的类上的注解

package com.xiyou.myspringboot.controller;

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

/**
 * 第一种SpringBoot的启动方式
 * 使用@EnableAutoConfiguration,开启自动注入,只能识别本类的注解,因为没有配置@Component
 */
@RestController
@EnableAutoConfiguration
public class HelloController {

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

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

}

(2)利用@ComponentScan和@EnableAutoConfiguration进行扫描

  • HelloController
package com.xiyou.myspringboot.controller;

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

@RestController
public class HelloController {

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

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

}

  • HiController
package com.xiyou.myspringboot.controller;

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

/**
 * 第二个Controller
 */
@RestController
public class HiController {

    @GetMapping("/hi")
    public String sayHi(){
        return "hi~";
    }
}

  • App.java
package com.xiyou.myspringboot;

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

@ComponentScan(basePackages = "com.xiyou.myspringboot.controller")
@EnableAutoConfiguration
public class App {
    public static void main(String[] args) {
        SpringApplication.run(App.class, args);
    }
}

  • 架构图:
    在这里插入图片描述
    (3)利用@SpringBootApplication(常用
  • 架构:
    在这里插入图片描述
  • HiController
package com.xiyou.myspringboot.controller;

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

/**
 * 第二个Controller
 */
@RestController
public class HiController {

    @GetMapping("/hi")
    public String sayHi(){
        return "hi~";
    }
}

  • HelloController
package com.xiyou.myspringboot.controller;

import org.springframework.boot.SpringApplication;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;

@RestController
public class HelloController {

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

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

}

  • MySpringbootApplication
package com.xiyou.myspringboot;

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

@SpringBootApplication
public class MySpringbootApplication {

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

}

SpringBoot的静态资源访问

  • 如果在类上加载了@RestController,则不会跳转到页面,就是前后端分离,返回的都是JSON数据,而不是跳转到某一个页面。

  • 动态页面静态化(SEO技术,就是做搜索引擎优化)
    就是相当于将动态页面转换成伪HTML页面

  • 在我们开发Web应用的时候,需要引入大量的JS,CSS,图片等静态资源。

  • 重要:Spring Boot中默认提供了静态资源目录位置需要置于classpath下,也就是说我们在resource目录下需要建立目录名满足以下要求:
    (1)/static
    (2)/public
    (3)/resources
    (4)/META-INF/resources
    在这里插入图片描述
    举例说明:我们在src/main/resources/目录下创建static目录,在该位置上放置一个图片文件,启动程序后,尝试访问http://localhost:8080/D.jpg。如果显示图片,配置成功

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值