今天一起说说微服务,之前写docker多服务部署的时候也说微服务,一起说说Spring boot快速开始及核心功能介绍。
一般的框架出现主要是为了解决问题的。微服务和springboot出现,是一个非常重大的更新,spring已经没落了很久的(也可以说整个java),自从springboot出现spring二次发育第二春。吐糟:java开发起来非常的笨重,没有动态语言go,python,nodejs轻。每次搞java的spring配置一坨一坨的,用技术也需要配置很多,管理很多的配置,开发效率低下。
spring的微架构落地的实现springboot。
核心功能
https://start.spring.io/
springboot的一个搭建的向导。
点击Generate Project
下载的springboot-first解压,只用idea打开
idea导入完毕
新建立包com.idig8.springboot.controller
新建立controller
编写HelloController
package com.idig8.springboot.controller; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.ResponseBody; /** * @program: springboot-first * @description: controller文件编写 * @author: LiMing * @create: 2019-06-04 22:09 **/ @Controller public class HelloController { @RequestMapping("/") @ResponseBody public String index(){ return "Hello world!"; } }
修改SpringbootFirstApplication,增加扫描包
package com.idig8.springboot.springbootfirst; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.context.annotation.ComponentScan; @SpringBootApplication @ComponentScan(basePackages = {"com.idig8.springboot.controller"}) public class SpringbootFirstApplication { public static void main(String[] args) { SpringApplication.run(SpringbootFirstApplication.class, args); } }
进入SpringbootFirstApplication如下图选择运行
springboot 已经成功启动,端口8080
扫描到了对应/ 对应的HelloController的index方法
启动时间2秒就启动就可以了。
访问:http://127.0.0.1:8080
从上边的看,是不是感觉做个web开发很简单,1分钟搞定。
新建一个普通的maven工程
【注意:Spring boot是web工程,但是我们这里只需要建立quickstart即可,因为spring boot内嵌了servlert容器】
查看官方文档:https://projects.spring.io/spring-boot/
点击learn-选择版本1.5.10.RELEASE。建议:生产环境中选择稳定的版本
拷贝依赖的父pom到自己的工程pom文件中
<parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>1.5.10.RELEASE</version> </parent> <dependencies> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> </dependencies>
从上面的第一个boot项目的pom中拷贝项目构建的内容到当前工程中(以下内容为每个maven项目都必须要的)
<properties> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding> <java.version>1.8</java.version> </properties> <build> <plugins> <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> </plugin> </plugins> </build>
官方文档的例子,尝试启动springboot
import org.springframework.boot.*; import org.springframework.boot.autoconfigure.*; import org.springframework.stereotype.*; import org.springframework.web.bind.annotation.*; @RestController @EnableAutoConfiguration public class Example { @RequestMapping("/") String home() { return "Hello World!"; } public static void main(String[] args) throws Exception { SpringApplication.run(Example.class, args); } }
运行结果
1.Spring boot由大量starter组成,每个starter就是一个pom文件,里面包含必要的jar依赖,所以Starter主要是用来简化依赖
2.Spring boot支持需要引入其提供的父POM
<parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>1.5.10.RELEASE</version> </parent>
父POM中主要做了两件事情
1.所有jar包的版本统一管理。
2.所有jar的依赖管理,其中包含springboot 给我们提供的很多的starter启动器。
PS:pom中引入的parent中的spring-boot-starter-parent,进入仓库可以看到对应的里面没有jar包,只有一个pom文件,这个pom文件中有个属性dependencyManagement 这是实现定义好的依赖jar包进行版本管理的管理器。实现都定义好了需要依赖的jar。