Spring Boot
- Spring Boot 简介
SpringBoot的理念是:用最少的配置,做更多的事情。
开发Spring Boot的主要动机是简化配置和部署spring应用程序的过程(Spring Boot严格意义上讲,不是一个框架,应该是一个企业级项目的解决方案)。Spring Boot不需要Spring和Spring mvc的maven包,它自己自带对应Spring驱动和web服务。可以创建独立运行的spring项目工程,直接嵌入web服务器如tomcat,无需再部署工程到web服务器中,严格意义上来讲,Spring Boot并不是一个框架,而是一个用来简化部署甚至零部署的方式来开发、打包、部署我们的项目。但是Spring Boot的核心还是Spring框架,按照Spring团队的说明,后面的Spring Boot项目不会有任何XML配置作为它的一部分(官方指定使用注解模式),一切都将由Spring Boot来负责处理。
Spring Boot的限制:将现有或传统的Spring Framework项目转换为Spring Boot应用程序是一个非常困难和耗时的过程。官方建议大家在使用SpringBoot的时候基于全新的Spring项目来开发。
需要注意的是SpringBoot1.4~2.0之前版本的时候还可以对JDK1.7的支持
最新的SpringBoot2.0之后的版本(包括2.0版本)依赖的JDK版本为1.8及以上
官方建议JDK版本尽可能使用Java8+。(JSE JEE 原来的称呼叫做J2SE J2EE)
PS:这里需要注意,idea目前版本对于springboot的支持不够完善,经常会提示找不到文件的错误,特别是在生成jar并执行jar的时候,所以如果出现此问题,首先检查文件中所有的类和配置文件是否正确,如果都正确的情况,最简单的办法是新建一个工程,导入所有的代码再生成一次
- SOA与微服务(MicroServices)
SOA是一种面向服务的架构,应用程序的不同组件通过网络上的通信协议向其他组件提供服务。微服务架构在某种程度上是面向服务的架构SOA的迭代升级,微服务的整体设计与SOA架构非常类似,但是也有部分区别,下面列出对应的比较:
如果想要在异构环境中使用不同协议来集成多个系统,则优先选择使用SOA。如果所有服务都可以通过相同的远程访问协议访问,那么微服务会是更好的一个选择,目前大部分后台服务系统已经都统一为Java语言开发,所以微服务越来越火也是这个原因。
-
SpringBoot官方文档
https://spring.io/projects/spring-boot/#learn
-
加入阿里国内的镜像仓库
找到idea安装路径中maven的地址,如下:
D:\IntelliJ IDEA 2018.1.2\plugins\maven\lib\maven3\conf
路径根据自己安装时候所对应的路径,然后打开settings.xml文件,找到父标签,在里面添加如下的内容:
<mirror>
<id>alimaven</id>
<name>aliyun maven</name>
<url>http://maven.aliyun.com/nexus/content/groups/public/</url>
<mirrorOf>central</mirrorOf>
</mirror>
这样每次maven就会到阿里服务器上抓取内容了,阿里服务器和maven官网的内容是一一对应的,所以不用担心找不到的情况
- Maven Spring Boot搭建
首先在pom文件中添加两个maven包
<!-- 在maven工程中加入SpringBoot 内核支持 -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.3.8.RELEASE</version>
<type>pom</type>
</dependency>
<!-- 在maven工程中加入SpringBoot web工程的支持 -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
<version>2.3.8.RELEASE</version>
</dependency>
然后创建一个java类
@Controller
@EnableAutoConfiguration
public class MyController {
@RequestMapping("/")
@ResponseBody
String home() {
return "Hello World!";
}
public static void main(String[] args) throws Exception {
SpringApplication.run(MyController.class, args);
}
}
执行这个main方法,查看springboot是否运行成功,接着在浏览器中直接访问localhost:8080,就可以看到helloworld的字符串内容了。
PS:一定要注意,根据官方的建议,应该把控制器放置在根目录下,而不应该放置某一个目录中,例如下面的效果:
这样的作用是当使用@SpringBootApplication自动扫描功能时,会扫描整个cn.th目录
- Maven Spring Boot parent
在官方文档中,要求我们把springboot的核心支持放入到parent标签中,而不应该放置在dependencies标签中,这样保证后续的springboot分支maven包,都基于parent标签中核心来延展,所以我们需要修改下上一节讲述的内容,把spring-boot-starter-parent放置在parent标签中,如下:
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.3.8.RELEASE</version>
</parent>
这个时候,idea工具应该可以辨识出对应的顺序,展示对应的图标(新版idea工程中可能不会再出现此图标,只要运行并且访问成功就算完成):
最后记得移除上一节配置的parent maven包
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.0.2.RELEASE</version>
<type>pom</type>
</dependency>
然后,我们继续运行测试代码是否执行成功
- Idea Spring Initializr标准搭建
idea会自动创建springboot环境,特别是在创建jar包时,可以避免很多不必要的错误。