1.本人这里使用myeclipse工具搭建,具体创建maven不作详细说明
2.搭建的maven项目目录结构如下:
(1)在src/main/java文件夹下:创建开发所需的包
<1>entity,dao,mapping,service,serviceimpl,controller,springbootApplication
<2>其中springbootApplication为程序的入口
(2)在src/main/resources文件夹下:创建项目所需要的所有资源配置
<1>statics 静态资源
<2>templates 模板资源
<3>application.* 配置文件(分为properties文件和yml文件两种格式)
(3)pom.xml文件为基本的依赖管理文件
3.主要讲解基于springboot的pox.xml配置注意事项
对于配置pom.xml文件我们要做三步操作:
(1)设置spring boot的parent(继承父包):在pom.xml中引入spring-boot-starter-parent
<1>它可以提供dependency management,也就是依赖管理
<2>Spring Boot的版本仲裁中心,控制了所有依赖的版本号
<3>好处:引入以后在声明其它dependency的时候就不需要version了
<!-- 1、springboot核心配置:设置Spring boot的parent -->
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>1.5.6.RELEASE</version>
</parent>
(2)导入spring boot的web支持:需要在pom.xml中引入spring-boot-starter-web,包含了web开发的许多特性:
<1>spring-webmvc、spring-web、jackson、validation、tomcat、starter等web开发的特性
<2>web的场景,自动引入了web模块开发需要的相关jar包
<!-- 2、导入Spring boot的web支持 -->
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
</dependencies>
(3)添加Spring boot的插件:
<1>如果我们要直接Main启动spring,那么以下plugin必须要添加,否则是无法启动的
<2>如果使用maven的spring-boot:run的话就不需要此配置
<!-- 3、添加Spring boot的插件 -->
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
<!-- 方法一:解决使用Maven > Update project的时候JDK版本都恢复成1.5的问题 -->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.5.1</version>
<configuration>
<source>1.8</source>
<target>1.8</target>
<encoding>UTF-8</encoding>
</configuration>
</plugin>
<!-- 方法二:解决使用Maven > Update project的时候JDK版本都恢复成1.5的问题 -->
<!-- 属性设置 -->
<properties>
<!-- 编译字符编码为utf-8 -->
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<!-- 输出字符编码为UTF-8 -->
<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
<!-- jdK版本 -->
<java.version>1.8</java.version>
<maven.compiler.source>1.8</maven.compiler.source>
<maven.compiler.target>1.8</maven.compiler.target>
<fastjson.version>1.2.24</fastjson.version>
</properties>
(4)一个正常springboot项目启动,依赖的基础包:
<dependencies>
<!--springboot web模块支持,自动引入了web模块开发需要的相关jar包-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<!--springboot程序测试依赖,如果是自动创建项目默认添加-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
</dependencies>
4.以上三步均配置完毕后得完整的pom.xml文件如下:
<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/maven4.0.0.xsd">
<!-- pom模型版本 -->
<modelVersion>4.0.0</modelVersion>
<!-- 项目信息 -->
<groupId>com.xxx</groupId><!-- 项目唯一标识 -->
<artifactId>SpringBootTest</artifactId><!-- 项目名 -->
<version>0.0.1-SNAPSHOT</version><!-- 版本 -->
<packaging>war</packaging><!-- 打包方式 (pom,war,jar) -->
<name>SpringBootTest</name><!-- 项目的名称, Maven 产生的文档用 -->
<url>http://www.example.com</url>
<!-- 父级项目 -->
<parent>
<!-- 依赖管理,引入以后在声明其它dependency的时候就不需要version -->
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>1.3.0.RELEASE</version>
<relativePath />
</parent>
<!-- 属性设置 -->
<properties>
<!-- 编译字符编码为utf-8 -->
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<!-- 输出字符编码为UTF-8 -->
<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
<!-- jdK版本 -->
<java.version>1.8</java.version>
<maven.compiler.source>1.8</maven.compiler.source>
<maven.compiler.target>1.8</maven.compiler.target>
<fastjson.version>1.2.24</fastjson.version>
</properties>
<!-- 依赖关系 -->
<dependencies>
<!-- 对web开发的支持,包含了spring webmvc和tomcat等web开发的特性 -->
<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>
</dependency>
<!-- DevTools in Spring Boot 项目热部署 -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-devtools</artifactId>
</dependency>
</dependencies>
<!-- 编译 -->
<build>
<!-- 插件 -->
<plugins>
<!-- maven插件 -->
<!-- 如果我们要直接Main启动spring,那么以下plugin必须要添加,否则是无法启动的。-->
<!-- 如果使用maven的spring-boot:run的话就不需要此配置 -->
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
</project>
5.编写启动类:两种写法
(1)Application类+controller类 (注意Application类放到controller层)
/**
* 注解@SpringBootApplication指定项目为springboot,由此类当作程序入口,自动装配 web 依赖的环境;
*/
@SpringBootApplication
public class Application {
// 在main方法中启动一个应用,即:这个应用的入口
public static void main(String[] args) {
// TODO Auto-generated method stub
SpringApplication.run(Application.class, args);
}
}
@RestController //是spring4里的新注解,是@ResponseBody和@Controller的缩写
@RequestMapping("/Hello")
public class HelloSpringBoot {
@RequestMapping("/hello")
public String hello(){
return "this is Spring boot demo!";
}
}
(2)在controller层
@SpringBootApplication // Spring Boot项目的核心注解,主要目的是开启自动配置
@RestController // 标明这是一个SpringMVC的Controller控制器
@RequestMapping("/Hello")
public class HelloApplication {
@RequestMapping("/hello")
@ResponseBody
public String hello() {
return "hello world";
}
// 在main方法中启动一个应用,即:这个应用的入口
public static void main(String[] args) {
SpringApplication.run(HelloApplication.class, args);
}
}
6.经过上面的步骤,就已经搭建了一个最简单的SpringBoot工程
(1)在有@SpringBootApplication注解的main方法中运行,启动无误后在浏览器访问即可
(2)例如:输入localhost:8080/Hello/hello,界面输出“hello world”,说明搭建成功
(3)一般在搭建基于SpringBoot的web工程时,注意以下几点:
<1>只需要配置spring-boot-starter-web即可
<2>根据实际项目开发需求,特殊需求,特殊配置
<3>spring-boot-starter-web不仅包含spring-boot-starter,还自动开启了web功能
7.SpringBoot搭建简单web的神奇之处:
(1)没有做任何的web.xml配置
(2)没有做任何的sping mvc的配置, springboot做了
(3)没有配置tomcat ,springboot内嵌tomcat.
(4)springboot在启动的时候注入了好多封装好的bean,可通过如下方式查看:
<1>在程序入口加入:@Bean注解
<2>示例如下:
@SpringBootApplication
public class SpringbootFirstApplication {
public static void main(String[] args) {
SpringApplication.run(SpringbootFirstApplication.class, args);}
@Bean
public CommandLineRunner commandLineRunner(ApplicationContext ctx) {
return args -> {
System.out.println("Let's inspect the beans provided by Spring Boot:");
String[] beanNames = ctx.getBeanDefinitionNames();
Arrays.sort(beanNames);
for (String beanName : beanNames) {
System.out.println(beanName);}};}}
<3>在程序启动的时候,springboot自动注入了40-50个bean.