提及spring boot,咱们不得不说一下“微服务”一词的兴起,微服务一词最先起源于2014年,martin fowler发表的一篇文章Microservices,martin fowler在文中这样描述了微服务的概念。java
In short, the microservice architectural style [1] is an approach to developing a single application as a suite of small services, each running in its own process and communicating with lightweight mechanisms, often an HTTP resource API.web
简而言之,微服务就是一种架构风格,即服务微化,一个服务应该是一组小型服务;服务之间经过HTTP的方式进行互通,相较于传统的ALL IN ONE单体架构方式,微服务将每个功能元素最终都是一个可独立替换和独立升级的软件单元。spring
Spring Boot是由Pivotal团队提供的全新框架,其设计目的是用来简化新Spring应用的初始搭建以及开发过程。该框架使用了特定的方式来进行配置,从而使开发人员再也不须要定义样板化的配置。经过这种方式,Spring Boot致力于在蓬勃发展的快速应用开发领域(rapid application development)成为领导者 ——百度百科shell
众所周知,最流行的、最受Java开发者喜爱的框架当属Spring,Spring也成为了在Java EE开发中真正意义上的标准,可是随着新技术的发展随着新技术的发展,在这个脚本语言大行其道的时代(Node JS,Ruby,Groovy,Scala等),Java EE使用Spring逐渐变得笨重起来,大量的XML文件存在于项目中,繁琐的整合配置,复杂的监控,低下的开发效率和部署效率等等问题。spring boot的出现解决了上述的问题,让咱们更加高效快速的使用spring框架。api
给maven 的settings.xml配置文件的profiles标签添加指定jdk版本数组
<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>
建立一个maven工程(jar工程)浏览器
pom.xml中导入spring boot的依赖,根据官方文档的快速开始,引入一下依赖:springboot
<parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>1.5.10.RELEASE</version> </parent> <!-- Additional lines to be added here... --> <!-- (you don't need this if you are using a .RELEASE version) --> <repositories> <repository> <id>spring-snapshots</id> <url>https://repo.spring.io/snapshot</url> <snapshots><enabled>true</enabled></snapshots> </repository> <repository> <id>spring-milestones</id> <url>https://repo.spring.io/milestone</url> </repository> </repositories> <pluginRepositories> <pluginRepository> <id>spring-snapshots</id> <url>https://repo.spring.io/snapshot</url> </pluginRepository> <pluginRepository> <id>spring-milestones</id> <url>https://repo.spring.io/milestone</url> </pluginRepository> </pluginRepositories>
Spring Boot提供了许多“Starters”,能够将jar添加到类路径中,spring-boot-starter-parent
是一个特殊的启动器,提供有用的Maven默认值,其余“Starters”提供了在开发特定类型的应用程序时可能须要的依赖项。因为咱们正在开发Web应用程序,所以咱们添加了 spring-boot-starter-web
依赖项。在此以前,咱们能够经过运行如下命令来查看当前的内容服务器
$ mvn dependency:tree [INFO] com.example:myproject:jar:0.0.1-SNAPSHOT
也能够在idea中 使用ctrl+alt+shift+u 查看依赖图以下:
能够看到它spring-boot-starter-parent
自己不提供依赖关系。要添加必要的依赖项,请编辑pom.xml
并spring-boot-starter-web
在该parent
部分的正下方添加 依赖项:
<dependencies> <dependency> <groupId> org.springframework.boot </ groupId> <artifactId> spring-boot-starter-web </ artifactId> </ dependency> </ dependencies>
再次查看依赖图:以下
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; /** * @program: springboot-01-HelloWorrld * * @description: springboot主程序类 * * @author: cxw * * @create: 2018-09-07 14:34 **/ //springmvc的注解,提供web服务,接收浏览器请求并,向浏览器响应等同 @controller和@responseBody注解 @RestController @EnableAutoConfiguration public class Application { public static void main(String[] args) { SpringApplication.run(Application.class, args); } }
@RestController
和@requestmapping
注解是Spring MVC注解。(它们不是特定于Spring引导的。)有关更多细节, 请参阅Spring参考文档中的MVC部分。@EnableAutoConfiguration
,这个注解告诉springboot,让它猜想你想基于你添加的jar依赖去如何配置spring,因为Spring boot-starer-web添加了Tomcat和Spring MVC,因此自动配置会假设您正在开发一个web应用程序并帮您相应地设置Spring。/** * home方法 向浏览器响应 Hello World */ @RequestMapping("/hello") public String home(){ return "Hello World"; }
浏览器访问localhost:8080/hello
能够看到,咱们第一个spring boot项目已经启动了。另外咱们看到,这里Applicationjava被配置为自动配置的控制器,并且对于@EnableAutoConfiguration
注解咱们使用不熟悉,很容易忘记在控制层添加注解,其实spring boot 是可使用一个主程序启动spring bot项目,而后咱们按照咱们传统的controller,service,dao三层编写咱们的程序,咱们改进一下项目以下:
首先springboot的主程序入口:
//@SpringBootApplication 来标注一个主程序类, //说明这是一个Spring Boot应用 @SpringBootApplication public class Application { public static void main(String[] args) { SpringApplication.run(Application.class, args); } }
咱们定义两个Controller控制层HelloController和HomeController,按照springmvc的方式,接收请求,返回响应。
package cn.news.chen.controller;/** * Project springboot-01-HelloWorrld * User cxw * Date 2018/9/7 * Time 16:08 * Description: */ import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.ResponseBody; /** * @program: springboot-01-HelloWorrld * * @description: springboot控制层 * * @author: cxw * * @create: 2018-09-07 16:08 **/ @Controller @RequestMapping("/a") public class HomeController { @RequestMapping("/b") @ResponseBody public String hello(){ return "这是个人第一个spring boot应用"; } }
HelloController.java
package cn.news.chen.controller;/** * Project springboot-01-HelloWorrld * User cxw * Date 2018/9/7 * Time 16:39 * Description: */ import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.ResponseBody; /** * @program: springboot-01-HelloWorrld * * @description: 控制层HelloController * * @author: cxw * * @create: 2018-09-07 16:39 **/ //@RestController和这个注解都是类级别的,使用@RestController说明该类下的全部方法都是向浏览器 //响应 @Controller public class HelloController { /** * home方法 向浏览器响应 Hello World */ @RequestMapping("/hello") @ResponseBody public String home(){ return "Hello World"; } }
启动访问:
注意:若是按照`@SpringBootApplication`主程序的方式使用springboot,类Application.java 要在须要控制的springboot 组件的顶级包或者同一级的包下,才能使用主程序类启动spring boot程序,springboot建议的目录结构以下: com +- myproject +- demo +- Application.java | +- domain | +- User.java | +- UserRepository.java | +- service | +- UserService.java | +- controller | +- UserController.java | 一、Application.java 建议放到根目录下面,主要用于作一些框架配置。 二、domain目录主要用于实体(Entity)与数据访问层(Repository)。 三、service 层主要是业务逻辑层。 四、controller 负责页面访问控制。
首先,咱们要在pom.xml文件中添加spring boot的打包(jar)插件,官网文档中,给咱们指出了使用的依赖,如图:
pom.xml添加以下内容:
<build> <plugins> <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> </plugin> </plugins> </build>
而后,咱们使用maven将咱们的spring boot项目打包
能够看到在咱们项目的target目录下,已经打包成功了。咱们使用jar包启动的方式,启动一下咱们的springboot项目。
使用java -jar 的方式依然能够启动咱们的springboot项目,而且能够正常访问,由此能够看到咱们的springboot 使用嵌入式的Servlet容器,应用无需打成WAR包, starters自动依赖与版本控制,大量的自动配置,简化开发,真正作到了 J2EE一站式解决方案。