标签:特点 教程 分布式配置中心 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 是一个快速开发的框架,能够快速的整合第三方常用框架(Maven继承方式),简化XML配置,全部采用注解形式,Spring Boot项目中没有web.xml,内置Http服务器(Tomcat、Jetty),默认嵌入Tomcat服务器,最终是以Java应用程序运行。Spring Boot的Web组件默认集成的是Spring MVC框架,Spring MVC是控制层。
注意:Spring Boot使用注解方式启动Spring MVC,详情参考博客:Spring MVC -- 基于注解的控制器。
Spring Cloud依赖Spring Boot组件,使用Spring MVC编写Http协议接口,Spring Cloud是一套目前完整的微服务框架,功能非常强大。注册中心、客户端调用工具、服务治理(负载均衡、断路器、分布式配置中心、网关、服务链路、消息总线等)。
环境要求:Java1.8及以上、Spring Framework 4.1.5及以上。
开发工具:IDEA 2019。
点击File->New Project->选择Maven,点击Next,填写如下信息:
<!-- 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的话是不需要此配置的;
创建一个包 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全新版本教程!
小节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);
}
}
如果我们此时再创建一个包 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); } }
标签:特点 教程 分布式配置中心 http服务器 static 链路 author 服务治理 cti
原文地址:https://www.cnblogs.com/zyly/p/12251179.html