可持续自动化构建微服务(9)Spring Boot 快速入门

第九章 SpringBoot 快速入门

Spring 家族发展到今天,已经很庞大了。作为一个开发者,想使用这一系列的技术,需要一个一个的搞配置,然后还有个版本兼容性问题,其实挺麻烦的,偶尔也会出现小坑,影响着开发进度。

Spring Boot 提供可插拔的设计,就是各种 starter,把一些常用的基础框架组合起来,提供默认的配置,方便使用。开发者可以先不关心如何配置,快速启动开发,编写业务逻辑。

Spring Cloud 是一个基于 Spring Boot 实现的云应用开发工具,它为基于JVM 的云应用开发中的配置管理、服务发现、断路器、智能路由、微代理、控制总线、全局锁、决策竞选、分布式会话和集群状态管理等操作提供了一种简单的开发方式。
9Spring Boot 快速入门
9.1 搭建第一个 Spring Boot 程序
可以在 start.spring.io 上建项目,也可以用 Eclipse 构建。 这里采用 Eclipse。
9.1.1 创建父项目
打开 Eclipse,点击 File->New->Other,在弹出对话框中,选中 Maven Project。

点击 Next 按钮,出现下图,在弹出界面中选择“Create a simple project”

设置工程的参数,见下图

这样,我们按常规模版创建了一个 Maven 工程。因为,这是一个父项目,不需要有什么源码,那么,我们在 Eclipse 中将这个工程下的不用的目录都删除,仅留下 pom.xml 文件就行了。
9.1.2 创建子项目
选中刚建的父项目,在弹出菜单中点击 New -> Maven Module;

如图配置

使 用 默 认 的 Archetype ( 默 认 : GroupId:org.apache.maven.archetypes,ArtifactId:maven-archetype-quickstart)

完成工程配置,见下图

这样一个子项目就创建完成了,在文件系统中,子项目会建在父项目的目录中。在父目录中运行 mvn test 等命令,所有的子项目都会按顺序执行。细心一点的人,可能会发现,通过这个步骤创建子项目的同时,会修改父项目的 pom.xml,增加了类似下面的信息:

这个信息,就是标记有哪些子模块。重复创建子项目的步骤,可以创建多个子项目。
按上面步骤创建的子项目,在 pom.xml 中有个 parent 节点,所以,他可以继承父项目的相关信息。没错,父子项目中存在继承关系。在子项目的 pom.xml 中,子项目的 groupId 和 version 一般和父项目相同,那么可以把子项目的这两个参数删除,这样会自动继承父项目的取值。同样,如果其他的一些属性,所有子项目都是一样的,那么可以上移到父项
目 中 设 置 , 子 项 目 中 无 需 重 复 设 置 。 比 如 :<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>可以仅在父项目中设置一次。除了这种情况以外,还有一种情况,就是依赖和插件。依赖和插件的情况是这样,某一个依赖或插件可能会被大部分子项目所使用,但是也可能有些子项目不需要使用,这样使用上述的方式,简简单单地进行继承就不合适了。Manen 提供 dependencyManagement 和 pluginManagement 两个标签。使用这两个标签,可以在父项目中统一管理依赖和插件的配置参数,比如版本号啥的。而在子项目中,仅需列出需要使用的依赖和插件的 groupId 和artifactId 就可以了,其他信息会自动从父项目管理的信息里面获取。
9.1.3 编写 pom.xml
在 parent 部分使用 spring-boost-starter-parent。 spring-boost-starterparent 是重要的默认的父工程,它提供了 dependency-management 部分。

添加 spring-boot-starter-web 依赖
<dependencies>
<
dependency>
<
groupId>org.springframework.boot</groupId>
<
artifactId>spring-boot-starter-web</artifactId>
</
dependency>
</
dependencies>
完整 POM 文件如下:

9.1.4 更新 maven 项目
上述操作之后,项目有报错信息,按照提示,我们更新一下 maven 项目。在父项目上右击,选择 Maven->Update Project (如项目无报错,则不需要),在弹出界面选择 OK。

9.1.5 便捷配置
maven 是个项目管理工具,如果我们不告诉它我们的代码要使用什么样的jdk 版本编译的话,它就会用 maven-compiler-plugin 默认的 jdk 版本来进行处理,这样就容易出现版本不匹配的问题,以至于可能导致编译不通过的问题。
例如代码中要是使用上了 jdk1.7 的新特性,但是 maven 在编译的时候使用的是 jdk1.6 的版本,那这一段代码是完全不可能编译成.class 文件的。为了处理这一种情况的出现,在构建 maven 项目的时候,第一步就是配置 mavencompiler-plugin 插件。
compiler 插件能解决:

maven 2.1 默认用 jdk 1.3 来编译, maven 3 貌似是用 jdk 1.5,如果项目用的 jdk 1.6也会有问题, compiler 插件可以指定 JDK 版本为 1.6
windows 默认使用 GBK 编码, java 项目经常编码为 utf8,也需要在 compiler 插件中指出,否则中文乱码可能会出现编译错误。
pom 增加插件配置
<plugin>
<
groupId>org.apache.maven.plugins</groupId>
<
artifactId>maven-compiler-plugin</artifactId>
<
configuration>
<
source>1.8</source>
<
target>1.8</target>
<
encoding>UTF-8</encoding>
</
configuration>
</
plugin>
接下来就是配置 spring-boot-maven-plugin 插件。
Spring boot 加上这个插件,才可以使用 Java -jar 命令来启动 jar 包,并且有了这个插件,打的包里面才会有 maven 依赖的 jar 包和 spring boot 的启动类,而且 MANIFEST.MF 文件里面也会有启动类的信息。但是如果不加这个插件,则 打的包里面就只有 class 文件,没有依赖的 Jar 包,MANIFEST.MF 文件里面也没有启动类的信息,所以如果不加这个插件就不能独立启动。
注意:在用 Eclipse 调试的时候加不加插件都可以启动,看不出来不同,所以必须要独立启动 jar 包才可以看出来。而且如果用了 Spring Boot 但是不需要独立启动,就不要加这个插件,否则 Spring Boot 会因为找不到启动类而导致报错。
9.1.6 测试 Spring Boot 应用
在 zjs-service 子项目的 com.zjs 包下有一个 App 类,我们把它改造成启动类,编辑后如下:

接 下 来 , 我 们 再 添 加 一 个 com.zjs.controller 包 , 然 后 在 包 下 面 创 建TestController 类

启动程序,右键App.java文件,选择run as -> Java Application。
如果没有报错的话,在浏览器中输入: http://localhost:8080/test

9.2 单元测试
创建一个普通的Java类,在Junit4中不再需要继承TestCase类了。 因为我们是Web项目,所以在创建的Java类中添加注解:
@RunWith(SpringJUnit4ClassRunner.class)
@SpringBootTest(classes=App.class)
接下来就可以编写测试方法了,测试方法使用@Test注解标注即可。在该类中我们可以像平常开发一样,直接@Autowired注入要测试的类实例。下面是完整代码:

之后,我们来运行一下,选中AppTest.java,选择Run As->Junit Test,测试结果图如下:
Console面板:

Junit面板:

OK,我的第一个Spring Boot程序已经问世了!比起之前的Spring开发,是否简化了不少了?这里只是给出一个很简单的入门教程,Spring Boot的功能还是很强大的,值得慢慢研究!
9.3构建可执行 jar
右击项目,选择run as -> Maven Builder,在Goals处输:clean install命令打包,以我的项目工程为例:

开始run,

执行成功之后,刷新一下项目,jar包出现了

9.4 运行
Spring Boot里,很吸引人的一个特性是可以直接把应用打包成为一个jar/war,然后这个jar/war是可以直接启动的,不需要另外配置一个Web Server。单独的JAR包,然后通过java -jar <name>.jar命令运行。 以这个项目为例:
java –jar zjs-service-1.0.0.jar –server.port=8082

是否成功?在浏览器中访问“http://localhost:8082/springbootdemo/test”

当然也支持其他的方式运行,请自行研究。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值