注意:本 Spring Boot 系列文章基于 Spring Boot 版本最新版 2.4.2 进行学习分析,版本不同可能会有细微差别。另外springboot-springcloud是实现微服务生态的一种,并不说明使用springboot就是实现了微服务。
根据上文学习微服务系列(一):认识微服务 的介绍相信大家对与微服务都有所了解了,也知晓微服务的作用以及微服务生态中涉及的技术和中间件。
相信大家对于Spring肯定不陌生,在JAVA这个技术圈中Spring占据着举足轻重的地位,SpringBoot是Spring项目中的一个子工程,与我们所熟知的Spring-framework 同属于spring的产品。
SpringBoot官网下的介绍咱们看一下:
用固定的方式来构建生产级别的spring应用。Spring Boot 推崇约定大于配置的方式以便于你能够尽可能快速的启动并运行程序。
我们之前使用的ssh乃至springMVC都需要一系列的xml配置。各种注入关系各种参数配置,一旦哪个配置漏下了服务就启动不了。SpringBoot的目的就是为了简化Spring 应用开发而生,我理解之所以叫SpringBoot这个Boot的含义就是快的意思,意思就是基于Spring但是非常快的意思。Spring Boot 可以在零配置情况下一键启动,跟我们平时启动运行一个JAVA类一样简洁而优雅。
总结:springboot简化了依赖,简化了配置,简化了部署,简化了监控,方便了研发。
那么使用 Spring Boot 进行开发需要掌握哪些知识呢?Spring Boot 非常好用,但是并不是 0 基础就可以直接上手的。我们需要具备:
现在我们已经了解了 Spring Boot 是什么,下面我们将使用 Spring Boot 开发一个入门案例,来体验 Spring Boot 开发是多么的优雅与迅速。 Spring Boot 官方已经为我们如何快速启动 Spring Boot 应用程序提供了多种方式。 Spring Boot 的服务构建非常简单,常用的有几种:
步骤和含义基本与从spring官网生成是一样的,此处就不赘述了,小伙伴可以自己去体验一下。接下来我就按照用idea生成好的服务来说明,看一下服务生成的结构:
咋样~~简单吧,一目了然。
到此刻为止,Spring Boot 项目也没啥新鲜的。都是之前了解过的东西,跟普通的 Maven 项目也没啥区别。我们需要什么依赖就去pom中增加对应的maven依赖。有的小伙伴不理解pom中有段代码是什么含义:
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
这段配置就是指定了一个插件,用来构建、运行、打包 Spring Boot 项目。
@SpringBootApplication
public class ComDemoproTestApplication {
public static void main(String[] args) {
SpringApplication.run(ComDemoproTestApplication.class, args);
}
@Bean
public CommandLineRunner commandLineRunner(ApplicationContext ctx) {
return args -> {
System.out.println("启动加载的bean对象");
String[] beanNames = ctx.getBeanDefinitionNames();
Arrays.sort(beanNames);
for (String beanName : beanNames) {
System.out.println(beanName);
}
};
}
}
这个类就是整个服务的启动类,我增加了一个CommandLineRunner方法主要是为输出一下当服务启动时spring帮我们实例化了多少bean对象。@SpringBootApplication注解是一个集合注解,包含了以下几个:
启动后从日志上我们能看到:
说明服务启动成功。这样就是一个springboot服务成功运行了,接下来我们就补充一下对应的目录结构,增加不同目录编写不同的业务类就好了。
这样写大家是不是就熟悉了,搞过springMVC的对于这个结构都会不陌生。我们写个controller测试一下:
通过访问http://localhost:8080/ 进入controller 将返回值返回给页面。我们同样可以在springboot服务中集成页面框架如thymeleaf等页面框架。或者用我们熟悉的jsp作为渲染页面也是可以的。我们做个整合jsp页面渲染的例子吧。
<!-- Server -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-tomcat</artifactId>
<!--<scope>provided</scope>-->
</dependency>
<dependency>
<groupId>org.apache.tomcat.embed</groupId>
<artifactId>tomcat-embed-jasper</artifactId>
<!--<scope>provided</scope>-->
</dependency>
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>jstl</artifactId>
</dependency>
#Server
server.port=8099
#MVC
spring.mvc.view.prefix=/WEB-INF/views/
spring.mvc.view.suffix=.jsp
spring.resources.static-locations=classpath:/static/