1、 环境准备
环境约束
jdk1.8:Spring Boot 推荐jdk1.7及以上;本人使用了java version "jdk1.8.0_101"
maven3.x:maven 3.2以上版本;本人使用了apache-maven-3.5.4
IntelliJIDEA2017
Spring Boot 1.5.14.RELEASE
1、maven设置
给maven 的settings.xml配置文件的profiles标签添加如下配置进行设置maven项目的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>
proxies标签添加如下配置进行设置公司内部代理进行联网下载jar包
<proxy>
<id>my-proxy</id>
<active>true</active>
<protocol>http</protocol>
<username>F1317***</username>
<password>TeWR***</password>
<host>10.191.**.**</host>
<port>3128</port>
</proxy>
2、IDEA配置
整合本地maven到IDEA2、Springboot第一个程序
功能实现:
浏览器发送hello请求,服务器接收请求并处理,响应hello, world字符串
1、创建Maven工程
File -> new -> Project, 选择Maven:2、pom.xml中引入Starter jar包
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>1.5.14.RELEASE</version>
</parent>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
</dependencies>
3、创建Springboot主程序
/**
* Created by Zenghai on 2018/7/4
* @SpringBootApplication 标注这是一个主程序,说明这是一个springboot类
*/
@SpringBootApplication
public class HelloWorldMainApplication {
public static void main(String[] args) {
// springboot启动起来
SpringApplication.run(HelloWorldMainApplication.class, args);
}
}
4、编写相关Controller
/**
* Created by Zenghai on 2018/7/4
*/
@RestController
public class HelloWorldController {
@RequestMapping("/hello")
public String hello(){
return "hello";
}
}
5、运行主程序测试
6、Springboot简化部署
在pom.xml添加依赖包
<!-- 这个插件,可以将应用打包成一个可执行的jar包;-->
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
将这个应用打成jar包在cmd控制台运行java -jar springboot01maven-1.0-SNAPSHOT.jar后,在浏览器输入localhost:8080/hello
3、Springboot简单程序探究
1、POM文件
1、父项目
在Spring boot 项目的POM文件中,我们可以通过在POM文件中继承 Spring-boot-starter-parent来引用Srping boot默认依赖的jar包,如下:
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>1.5.14.RELEASE</version>
<!-- 在该依赖上指定Spring Boot版本,如果导入其他的starters,可以省略版本号-->
</parent>
<!-- 查看spring-boot-starter-parent源码,发现spring-boot-starter-parent的父项目为以下
该父项目真正的管理了springboot应用的所有依赖版本
-->
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-dependencies</artifactId>
<version>1.5.14.RELEASE</version>
<relativePath>../../spring-boot-dependencies</relativePath>
</parent>
但是,通过上面的parent继承的方法,只能继承一个 spring-boot-start-parent。实际开发中,用户很可能需要继承自己公司的标准parent配置,这个时候可以使用 scope=import 来实现多继承。
<dependencyManagement>
<dependencies>
<dependency>
<!-- Import dependency management from Spring Boot -->
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-dependencies</artifactId>
<version>1.5.14.RELEASE</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>
通过上面方式,就可以获取spring-boot-dependencies.1.5.14.BUILD-SNAPSHOT.pom文件中dependencyManagement配置的jar包依赖。其作用和继承 Spring-boot-starter-parent一样,
如果要继承多个,可以继续在dependencyManagement中添加,该设置不允许您使用属性覆盖单个依赖项。例如,要升级到另一个Spring Data版本系列,您需要在spring-boot-dependencies条目之前在项目的dependencyManagement中添加一个条目。需要将以下内容添加到pom.xml中。如:
<dependencyManagement>
<dependencies>
<!-- 多继承:可以再次继承一个父类来升级Spring Data版本,只能在spring-boot-dependencies之前-->
<!-- Override Spring Data release train provided by Spring Boot -->
<dependency>
<groupId>org.springframework.data</groupId>
<artifactId>spring-data-releasetrain</artifactId>
<version>Fowler-SR2</version>
<type>pom</type>
<scope>import</scope>
</dependency>
<dependency>
<!-- Import dependency management from Spring Boot -->
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-dependencies</artifactId>
<version>1.5.14.RELEASE</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>
2、启动器
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
</dependencies>
spring-boot-starter:
spring-boot-starter:所有官方starters遵循相似的命名模式:spring-boot-starter-*
,在这里*
是一种特殊的应用程序类型,如spring-boot-starter-web、spring-boot-starter-test。第三方starters不应该以spring-boot
开头,因为它跟Spring Boot官方artifacts冲突,如acme的第三方starter命名为acme-spring-boot-starter
。
spring-boot-starter-web:
用于使用Spring MVC构建web应用,包括RESTful。Tomcat是默认的内嵌容器。
Spring Boot将所有的功能依赖都抽取出来,做成一个个的starters(启动器),只需要在项目里面引入这些starter相关所有依赖都会导入进来。要用什么功能就导入什么启动器,例如,如果你想使用Spring和JPA进行数据库访问,只需要在项目中包含
spring-boot-starter-data-jpa
依赖,然后你就可以开始使用了。
2、主程序类
Springboot官方文档建议将应用的main类放到其他类所在包的顶层(root package),其典型结构如下:
com
+- example
+- myproject
+- Application.java
|
+- domain
| +- Customer.java
| +- CustomerRepository.java
|
+- service
| +- CustomerService.java
|
+- web
+- CustomerController.java
采用root package方式,你就可以使用@ComponentScan
注解而不需要指定basePackage
属性:
/**
* Created by Zenghai on 2018/7/4
*/
@Configuration
@EnableAutoConfiguration
@ComponentScan
public class Application {
public static void main(String[] args) {
SpringApplication.run(Application.class, args);
}
}
在之前版本中,很多Spring Boot开发者经常使用@Configuration
,@EnableAutoConfiguration
,@ComponentScan
注解他们的main类,由于这些注解如此频繁地一块使用,Spring Boot就提供了一个方便的@SpringBootApplication
注解作为代替。
@SpringBootApplication
注解等价于以默认属性使用@Configuration
,@EnableAutoConfiguration
和@ComponentScan
如:
/**
* Created by Zenghai on 2018/7/4
* @SpringBootApplication 标注这是一个主程序,说明这是一个springboot类
*/
@SpringBootApplication
public class HelloWorldMainApplication {
public static void main(String[] args) {
// springboot启动起来
SpringApplication.run(HelloWorldMainApplication.class, args);
}
}
4、使用Spring Initializer快速创建Spring Boot项目
1、IDEA:使用 Spring Initializer快速创建项目
Spring initializr 是Spring 官方提供的一个很好的工具,用来初始化一个Spring boot 的项目。Spring initializr 已经默认集成到Idea中了,直接 File->New->Project, 在左侧就能看到Spring initializr, 点击Next 就可以选择组件
选择我们需要的模块;向导会联网创建Spring Boot项目;
默认生成的Spring Boot项目;
- 主程序已经生成好了,我们只需要我们自己的逻辑
- resources文件夹中目录结构
- static:保存所有的静态资源; js css images;
- templates:保存所有的模板页面;(Spring Boot默认jar包使用嵌入式的Tomcat,默认不支持JSP页面);可以使用模板引擎(freemarker、thymeleaf);
- application.properties:Spring Boot应用的配置文件;可以修改一些默认设置;