超详细的Spring Boot入门笔记(总结)
|
1. Spring Boot 入门 Spring Boot是Spring社区较新的一个项目。该项目的目的是帮助开发者更容易的创建基于Spring的应用程序和服务,让更多人的人更快的对Spring进行入门体验,让Java开发也能够实现Ruby on Rails那样的生产效率。为Spring生态系统提供了一种固定的、约定优于配置风格的框架。 Spring Boot具有如下特性:
1.1 简单例子 首先创建一个一般的Maven项目,有一个pom.xml和基本的src/main/java结构。 1.1.1 pom.xml 文件
<projectxmlns="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.nes.spring.boot</groupId>
<artifactId>SpringBootDemo1</artifactId>
<version>0.0.1-SNAPSHOT</version>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>1.3.0.RELEASE</version>
</parent>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
</dependencies>
<build>
<plugins>
<!-- Compile -->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>2.5.1</version>
<configuration>
<source>1.7</source>
<target>1.7</target>
</configuration>
</plugin>
<!-- spring boot mavenplugin -->
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<dependencies>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>springloaded</artifactId>
<version>1.2.5.RELEASE</version>
</dependency>
</dependencies>
</plugin>
</plugins>
</build>
</project>
1.1.2 对pom的说明 首先是增加了,增加父pom比较简单,而且spring-boot-starter-parent包含了大量配置好的依赖管理,在自己项目添加这些依赖的时候不需要写版本号。 使用父pom虽然简单,但是有些情况我们已经有父pom,不能直接增加时,可以通过如下方式: <dependencyManagement> <dependencies> <dependency> <!-- Import dependency management from Spring Boot --> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-dependencies</artifactId> <version>1.2.3.RELEASE</version> <type>pom</type> <scope>import</scope><!―这个地方--> </dependency> </dependencies> </dependencyManagement> 1.1.3 关于java.version属性 上面pom.xml虽然没有出现这个属性,这里要特别提醒。 Spring默认使用jdk1.6,如果你想使用jdk1.8,你需要在pom.xml的属性里面添加java.version,如下: <properties> <java.version>1.8</java.version> </properties> 1.1.4 添加spring-boot-starter-web依赖 Spring通过添加spring-boot-starter-*这样的依赖就能支持具体的某个功能。 我们这个示例最终是要实现web功能,所以添加的是这个依赖。 1.1.5 添加spring-boot-maven-plugin插件 该插件支持多种功能,常用的有两种,第一种是打包项目为可执行的jar包。 在项目根目录下执行mvn package将会生成一个可执行的jar包,jar包中包含了所有依赖的jar包,只需要这一个jar包就可以运行程序,使用起来很方便。该命令执行后还会保留一个XXX.jar.original的jar包,包含了项目中单独的部分。 生成这个可执行的jar包后,在命令行执行java -jar xxxx.jar即可启动项目。 另外一个命令就是mvn spring-boot:run,可以直接使用tomcat(默认)启动项目。 在我们开发过程中,我们需要经常修改,为了避免重复启动项目,我们可以启用热部署。 1.1.6 spring-loaded热部署 Spring-Loaded项目提供了强大的热部署功能,添加/删除/修改方法/字段/接口/枚举等代码的时候都可以热部署,速度很快,很方便。 想在Spring Boot中使用该功能非常简单,就是在spring-boot-maven-plugin插件下面添加依赖: <!-- 支持热部署 --> <dependency> <groupId>org.springframework</groupId> <artifactId>springloaded</artifactId> <version>1.2.5.RELEASE</version> </dependency> 添加以后,通过mvn spring-boot:run启动就支持热部署了。 注意:使用热部署的时候,需要IDE编译类后才能生效,你可以打开自动编译功能,这样在你保存修改的时候,类就自动重新加载了。 1.2 创建一个应用类 我们创建一个Application类:
@RestController
@EnableAutoConfiguration
public class Application {
@RequestMapping("/") String home() {
return"Hello World!";
}
@RequestMapping("/now") String hehe() {
return"现在时间:" + (new Date()).toLocaleString();
}
public static void main(String[] args) {
SpringApplication.run(Application.class,args);
}
}
1.2.1 注意 Spring Boot建议将我们main方法所在的这个主要的配置类配置在根包名下。
com
+- example
+- myproject
+- Application.java
+- domain
| +- Customer.java
| +- CustomerRepository.java
+- service
| +- CustomerService.java
+- web
+- CustomerController.java
在Application.java中有main方法。 因为默认和包有关的注解,默认包名都是当前类所在的包,例如@ComponentScan,@EntityScan,@SpringBootApplication注解。(都是安当前Application.java所在包作为Scan扫描) 1.2.2 @RestController 因为我们例子是写一个web应用,因此写的这个注解,这个注解相当于同时添加@Controller和@ResponseBody注解。 1.2.3 @EnableAutoConfiguration Spring Boot建议只有一个带有该注解的类。 @EnableAutoConfiguration作用:Spring Boot会自动根据你jar包的依赖来自动配置项目。 例如当你项目下面有HSQLDB的依赖时,Spring Boot会创建默认的内存数据库的数据源DataSource,如果你自己创建了DataSource,Spring Boot就不会创建默认的DataSource。 如果你不想让Spring Boot自动创建,你可以配置注解的exclude属性,例如:
@Configuration
@EnableAutoConfiguration(exclude={DataSourceAutoConfiguration.class})
publicclassMyConfiguration {
}
1.2.4 @SpringBootApplication 由于大量项目都会在主要的配置类上添加 @Configuration,@EnableAutoConfiguration,@ComponentScan三个注解。 因此Spring Boot提供了@SpringBootApplication注解,该注解可以替代上面三个注解(使用Spring注解继承实现)。 1.2.5 启动项目SpringApplication.run 启动Spring Boot项目最简单的方法就是执行下面的方法: SpringApplication.run(Application.class,args); 该方法返回一个ApplicationContext对象,使用注解的时候返回的具体类型是AnnotationConfigApplicationContext或AnnotationConfigEmbeddedWebApplicationContext,当支持web的时候是第二个。 除了上面这种方法外,还可以用下面的方法: SpringApplication application = new SpringApplication(Application.class); application.run(args); SpringApplication包含了一些其他可以配置的方法,如果你想做一些配置,可以用这种方式。 除了上面这种直接的方法外,还可以使用SpringApplicationBuilder: new SpringApplicationBuilder() .showBanner(false) .sources(Application.class) .run(args); 当使用SpringMVC的时候由于需要使用子容器,就需要用到SpringApplicationBuilder,该类有一个child(xxx…)方法可以添加子容器。 1.3 运行 在IDE中直接直接执行main方法,然后访问http://localhost:8080即可。 另外还可以用上面提到的mvn,可以打包为可执行jar包,然后执行java -jar xxx.jar。 或者执行mvn spring-boot:run运行项目。 2. Spring Boot 属性配置和使用 Spring Boot 允许通过外部配置让你在不同的环境使用同一应用程序的代码,简单说就是可以通过配置文件来注入属性或者修改默认的配置。 2.1 Spring Boot 支持多种外部配置方式 (编辑:安卓应用网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
