Spring Boot 成长之路(一) 快速上手
1.创建工程
利用IntelliJ IDEA新建一个Spring Boot项目的Web工程
2.查看初始化的spring boot项目
工程建好之后会出现如下的目录结构:
值得注意的第一件事是,整个项目结构遵循传统Maven项目的布局,即主要应用程序代码位于src/main/java目录里,资源都在src/main/resources目录里,测试代码则在src/test/java目录里。此刻还没有测试资源,但如果有的话,要放在src/test/resources里。
再进一步,你会看到项目里还有不少文件。
- pom.xml:Maven构建说明文件。
- SpringBootHelloworldApplication:应用程序的启动引导类(bootstrap class),也是主要的Spring配置类。
- application.properties:用于配置应用程序和Spring Boot的属性。
- SpringBootHelloworldApplicationTests:一个基本的集成测试类。
先让我们来看看SpringBootHelloworldApplication。
2.1 启动引导Spring
SpringBootHelloworldApplication在Spring Boot应用程序里有两个作用:配置和启动引导。首先,这是主要的Spring配置类。虽然Spring Boot的自动配置免除了很多Spring配置,但你还需要进行少量配置来启用自动配置。
package com.cloud; import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication; @SpringBootApplication
public class SpringBootHelloworldApplication { public static void main(String[] args) {
SpringApplication.run(SpringBootHelloworldApplication.class, args);
}
}
@SpringBootApplication开启了Spring的组件扫描和Spring Boot的自动配置功能。实际上,@SpringBootApplication将三个有用的注解组合在了一起。
- Spring的@Configuration:标明该类使用Spring基于Java的配置。虽然本书不会写太多配置,但我们会更倾向于使用基于Java而不是XML的配置。
- Spring的@ComponentScan:启用组件扫描,这样你写的Web控制器类和其他组件才能被自动发现并注册为Spring应用程序上下文里的Bean。本章稍后会写一个简单的Spring MVC控制器,使用@Controller进行注解,这样组件扫描才能找到它。
- Spring Boot 的@EnableAutoConfiguration : 这个不起眼的小注解也可以称为@Abracadabra,就是这一行配置开启了Spring Boot自动配置的魔力,让你不用再写成篇的配置了。
在Spring Boot的早期版本中,你需要在ReadingListApplication类上同时标上这三个注解,但从Spring Boot 1.2.0开始,有@SpringBootApplication就行了。
如我所说,SpringBootHelloworldApplication还是一个启动引导类。要运行Spring Boot应用程序有几种方式,其中包含传统的WAR文件部署。但这里的main()方法让你可以在命令行里把该应用程序当作一个可执行JAR文件来运行。这里向SpringApplication.run()传递了一个
SpringBootHelloworldApplication类的引用,还有命令行参数,通过这些东西启动应用程序。
实际上,就算一行代码也没写,此时你仍然可以构建应用程序尝尝鲜。
应用程序应该能正常运行,启动一个监听8080端口的Tomcat服务器。要是愿意,你可以用浏览器访问http://localhost:8080,但由于还没写控制器类,你只会收到一个HTTP 404(NOT FOUND)错误,看到错误页面。在本章结束前,这个URL将会提供一个阅读列表应用程序。
你几乎不需要修改SpringBootHelloworldApplication.java。如果你的应用程序需要Spring Boot自动配置以外的其他Spring配置,一般来说,最好把它写到一个单独的@Configuration标注的类里。(组件扫描会发现并使用这些类的。)极度简单的情况下,可以把自定义配置加入SpringBootHelloworldApplication.java。
2.2. 配置应用程序属性
Initializr为你生成的application.properties文件是一个空文件。实际上,这个文件完全是可选的,你大可以删掉它,这不会对应用程序有任何影响,但留着也没什么问题。
稍后,我们肯定有机会向application.properties里添加几个条目。但现在,如果你想小试牛刀,
可以加一行看看:
server.port=8000
加上这一行,嵌入式Tomcat的监听端口就变成了8000,而不是默认的8080。你可以重新运行应用程序,看看是不是这样。
这说明application.properties文件可以很方便地帮你细粒度地调整Spring Boot的自动配置。你还可以用它来指定应用程序代码所需的配置项。在第3章里我们会看到好几个例子,演示application.properties的这两种用法。
要注意的是,你完全不用告诉Spring Boot为你加载application.properties,只要它存在就会被加载,Spring和应用程序代码都能获取其中的属性。
我们差不多已经把初始化的项目介绍完了,还剩最后一样东西,让我们来看看Spring Boot应用程序是如何构建的。
3.创建pom.xml文件
3.1 设置spring boot的parent
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>1.5.7.RELEASE</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>
Spring boot的项目必须要将 parent设置为 spring boot的 parent,该 parent包含了大量默认的配置。
3.2 导入spring boot的web支持
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
3.3 添加spring boot插件
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
工程创建好了之后,会生成默认的pom.xml文件,如下所示:
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion> <groupId>com.cloud</groupId>
<artifactId>spring-boot-helloworld</artifactId>
<version>0.0.1-SNAPSHOT</version>
<packaging>jar</packaging> <name>spring-boot-helloworld</name>
<description>Demo project for Spring Boot</description> <parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>1.5.7.RELEASE</version>
<relativePath/> <!-- lookup parent from repository -->
</parent> <properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
<java.version>1.8</java.version>
</properties> <dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency> <dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
</dependencies> <build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
</project>
4.HelloWorld实战详解
4.1 Controller层
HelloWorldController的代码如下:
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController; /**
* Created by peter on 2017-10-09.
*/
@RestController
public class HelloWorldController {
@RequestMapping("/")
public String sayHello(){
return "Hello,World!";
}
}
@RestController和@RequestMapping注解是来自SpringMVC的注解,它们不是SpringBoot的特定部分。
(1). @RestController:提供实现了REST API,可以服务JSON,XML或者其他。这里是以String的形式渲染出结果。
(2). @RequestMapping:提供路由信息,"/“路径的HTTP Request都会被映射到sayHello方法进行处理。
4.2 启动应用类
和第一段描述一样,开箱即用。如下面Application类:
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication; @SpringBootApplication
public class SpringBootHelloworldApplication { public static void main(String[] args) {
SpringApplication.run(SpringBootHelloworldApplication.class, args);
}
}
(1). @SpringBootApplication:Spring Boot 应用的标识
(2). Application很简单,一个main函数作为主入口。SpringApplication引导应用,并将Application本身作为参数传递给run方法。具体run方法会启动嵌入式的Tomcat并初始化Spring环境及其各Spring组件。
4.3 Controller层测试类
一个好的程序,不能缺少好的UT。针对HelloWorldController的UT如下:
package com.cloud; import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.test.context.junit4.SpringRunner; import static org.junit.Assert.assertEquals; @RunWith(SpringRunner.class)
@SpringBootTest
public class SpringBootHelloworldApplicationTests { @Test
public void testSayHello() {
assertEquals("Hello,World!",new HelloWorldController().sayHello());
} }
4.4 运行
直接编译运行代码,然后访问 http://localhost:8080/ ,即可在页面中看到Spring Boot对你 say hello:
Hello,World!
Spring Boot 成长之路(一) 快速上手的更多相关文章
- Spring Boot(一):快速开始
Spring Boot(一):快速开始 本系列文章旨在使用最小依赖.最简单配置,帮助初学者快速掌握Spring Boot各组件使用,达到快速入门的目的.全部文章所使用示例代码均同步Github仓库和G ...
- Spring Boot 系列(一)快速入门
简介 Spring Boot是由Pivotal团队提供的全新框架,其设计目的是用来简化新Spring应用的初始搭建以及开发过程.该框架使用了特定的方式来进行配置,从而使开发人员不再需要定义样板化的配置 ...
- Spring Boot与Mybatis 借助Fastjson快速完成数据解析入库
通过Spring Boot可以快速搭建一个项目结构,在此基础上本文就通过一个简单的例子,说明如何结合Mybatis 和 Fastjson,快速的完成一个数据的入库基本操作. 添加相关的依赖 <d ...
- 集成 Spring Boot 常用组件的后台快速开发框架 spring-boot-plus 国
spring-boot-plus是一套集成spring boot常用开发组件的后台快速开发框架 Purpose 每个人都可以独立.快速.高效地开发项目! Everyone can develop pr ...
- 读懂这些spring boot的核心注解,快速配置完成项目搭建
在spring boot中,摒弃了spring以往项目中大量繁琐的配置,遵循约定大于配置的原则,通过自身默认配置,极大的降低了项目搭建的复杂度.同样在spring boot中,大量注解的使用,使得代码 ...
- Spring Boot 学习之路二 配置文件 application.yml
一.创建配置文件 如图所示,我们在resources文件夹中新建配置文件application.yml 结构图 二.一些基本配置 server: port: 8090 //配置端口 session ...
- 一、spring的成长之路——代理设计模式
java常用的设计模式详解: 1.代理模式(JDK的动态代理) [IDept.java] 这是一个简单的就接口,进行数据的更新 package com.itcloud.pattern.proxy; ...
- 好消息:Dubbo & Spring Boot要来了
Duboo和Spring Boot都是非常优秀的框架,现在它们要结合了.为了简化Dubbo开发集成,阿里Dubbo团队将发布基于Spring Boot的版本,可快速上手Dubbo的分布式开发,并提供了 ...
- 想要快速上手 Spring Boot?看这些教程就足够了!
1.项目名称:分布式敏捷开发系统架构 项目简介:基于 Spring + SpringMVC + Mybatis 分布式敏捷开发系统架构,提供整套公共微服务服务模块:集中权限管理(单点登录).内容管理. ...
随机推荐
- 前端 Java Python等资源合集大放送
如果需要学习视频,欢迎关注[JAVA乐园]微信公众号,回复[领取资源]菜单一键领取以下所有200G干货资源,获取更多有用技术干货.文档资料.所有文档会持续更新,欢迎关注一起成长! 1.vue全套 Vu ...
- 解决mac下,javac命令出现的乱码问题
今天突然检查我的jdk安装,发现出现了乱码 一,出现乱码
- eclipse 上Svn将项目从分支合并到主干的方法
eclipse svn 分支合并到主干 最近公司产品上线,整个系统架构包含有七八个子系统,并且子系统都是集群部署.所以每次升级维护都要确保尽可能不出问题.因为整个系统刚上线不久,意味着新系统不定期 ...
- BeautifulSoup 爬虫
一 安装BeautifulSoup 安装Python的包管理器pip 然后运行 $pip3 install beautifulsoup 在终端里导入它测试下是否安装成功 >>>fro ...
- AnalyticDB for PostgreSQL 6.0 新特性介绍
阿里云 AnalyticDB for PostgreSQL 为采用MPP架构的分布式集群数据库,完备支持SQL 2003,部分兼容Oracle语法,支持PL/SQL存储过程,触发器,支持标准数据库事务 ...
- javascript中内置函数
一.基本函数库 split():用于把一个字符串分割成字符串数组 toUpperCase(): substr(): 长度 length() 拼接(两种) + concat():合并多个字符串,并返回合 ...
- thinkphp 多语言支持
ThinkPHP内置多语言支持,如果你的应用涉及到国际化的支持,那么可以定义相关的语言包文件.任何字符串形式的输出,都可以定义语言常量. 要启用多语言功能,需要配置开启多语言行为,在应用的配置目录下面 ...
- thinkphp 动态配置
之前的方式都是通过预先定义配置文件的方式,而在具体的操作方法里面,我们仍然可以对某些参数进行动态配置(或者增加新的配置),主要是指那些还没有被使用的参数. 设置新的值: C('参数名称','新的参数值 ...
- 线段树区间离散化维护按秩合并并查集(可撤销)——牛客多校第八场E
模板题..去网上学了可撤销的并查集.. /* 给定一个无向图,边的属性为(u,v,l,r),表示<u,v>可以通过的size为[l,r] 求出有多少不同的size可以从1->n 把每 ...
- ueditor使用心得
UEditor使用手册 配置jdk 1.6+ Apache Tomcat6.0+ Ueditor官网下载 部署 安装好jdk和apache后,我们开始部署代码 我们在apache的安装目录下,找到we ...