springboot从入门到实战,新手学springboot
00-1010 1.Spring Boot介绍2。安装Spring Boot 2.1。基于Maven 2.2的安装。基于Gradle 3的安装。HelloWorld应用程序4的创建。代码结构5。配置等级5.1。导入其他配置6。自动配置6.1。逐步取代自动化。6.2.禁止特定的自动配置7。用@SpringBootApplication注释总结。
目录
Spring Boot是Pivotal team提供的全新框架,旨在简化Spring应用程序的初始设置和开发过程。该框架使用特定的方式进行配置,因此开发人员不再需要定义样板配置。Spring Boot可以基于Spring轻松创建一个独立运行的生产级应用。
安装
1. SpringBoot 简介
SpringBoot的方法有很多种。最简单的就是直接添加spring-boot-*之类的文件。jar添加到项目的类路径中,以便您可以运行和调试您的应用程序。如果是企业应用,建议使用build工具来管理项目依赖,比如Maven或者Gradle。对于直接添加类路径的方式,这里不再赘述。下面主要介绍基于build工具的安装说明。
2. SpringBoot 安装
Spring Boot与阿帕奇Maven 3.2兼容。如果你还没有安装Maven,你可以按照maven.apache.org上的说明进行操作。
Spring Boot依赖于使用org.springframework.boot作为groupId。通常,您的POM文件将继承spring-boot-starter-parent项目,然后声明一个或多个启动器的依赖项。Spring Boot还提供了一个可选的Maven插件来生成可执行的Jar包。
典型的pom.xml文件:
?xml版本=1.0 编码=UTF-8 ?项目xmlns= http://maven . Apache . org/POM/4 . 0 . 0 xmlns : xsi= http://www . w3 . org/2001/XML schema-instance xsi : schema location= http://maven . Apache . org/POM/4 . 0 . 0 http://maven.apache.org/xsd/maven-4.0.0.xsd模型版本4 . 0 . 0/模型版本groupIdcom.example/groupId artifactIdmyproject/artifactId!-继承groupIdorg.springframework.boot/groupId-父Artifactid spring-Boot-Starter-Parent/Artifactid version1.5.3.RELEASE/version/Parent!-为Web应用添加可用依赖项-依赖项groupIdorg.springframework.boot/groupId Artifactid spring-Boot-Starter-Web/Artifactid/dependencies/dependencies!-打包成可执行的jar包-构建插件插件groupIdorg.springframework.boot/groupId artifact spring-Boot-Maven-Plugins/ArtifactID/Plugins/Plugins
</build></project>提示:
spring-boot-starter-parent 是使用 Spring Boot 的一种比较好的方式,但它并不适用于所有场景。有时,你可能需要继承一个不同的父级 Pom,或者你不喜欢这种默认的配置。你也可以通过声明一个 scope=import 的依赖来使用它:
<dependencyManagement> <dependencies> <dependency> <!-- 从 Spring Boot 导入依赖管理 --> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-dependencies</artifactId> <version>1.5.3.RELEASE</version> <type>pom</type> <scope>import</scope> </dependency> </dependencies></dependencyManagement>
2.2. 基于 Gradle 的安装
相对 Maven 庞大的 XML 配置,我更喜欢 Gradle 多一点,不但简洁而且灵活性也好很多。Spring Boot 与 Gradle(2.9或以上)、Gradle 3兼容。如果你还没有安装 Gradle,你可以按照 www.gradle.org 上的操作说明来进行安装。
典型的 build.gradle 文件:
plugins { id org.springframework.boot version 1.5.3.RELEASE id java}jar { baseName = myproject version = 0.0.1-SNAPSHOT}repositories { jcenter() maven { url "http://maven.aliyun.com/nexus/content/groups/public/" }}dependencies { compile("org.springframework.boot:spring-boot-starter-web") testCompile("org.springframework.boot:spring-boot-starter-test")}
3. 创建 HelloWorld 应用
创建一个简单的 Java 类如下:
import org.springframework.boot.*;import org.springframework.boot.autoconfigure.*;import org.springframework.stereotype.*;import org.springframework.web.bind.annotation.*;@RestController@EnableAutoConfigurationpublic class Example { @RequestMapping("/") String home() { return "Hello World!"; } public static void main(String[] args) throws Exception { SpringApplication.run(Example.class, args); }}
Example 类上的第一个注解 @RestController 是 @Controller 及 @ResponseBody 的组合,表明这是一个控制器,且所有响应数据都会被序列化到响应体里面返回。而方法上的 @RequestMapping 注解会为请求处理提供路由信息。这些注解都是 Spring 的,而不是 Spring Boot 特有的。
类上的第二个注解 @EnableAutoConfiguration 会告诉 Spring Boot 去通过依赖的 Jar 包配置 Spring 工程。因为 spring-boot-starter-web 里面包含有 Tomcat 及 Spring MVC,所以它会认为这是一个 Web 工程,并进行相应的 Spring 配置。
应用的最后一部分是一个 main 方法,它通过调用 SpringApplication 的 run 方法将应用程序委托给 Spring Boot。SpringApplication 将引导我们的应用程序启动 Spring 及自动配置的 Tomcat Web 服务。我们需要将 Example.class 作为一个参数传递给 run 方法来告诉 SpringApplication 它是主要的 Spring 组件。
运行 main 方法后,即可以使用浏览器打开地址 localhost:8080 会得到输出:
Hello World!
4. 代码结构
一般的应用都会使用 域名的反转 + 项目名 作为项目的统一包名前缀。如:com.qchery.funda。在 SpringBoot 的项目中,推荐使用如下布局:
com+- qchery +- funda +- Application.java +- entity +- Customer.java +- dao +- CustomerRepository.java +- service +- CustomerService.java +- web +- CustomerController.java
其中,Application.java 文件如下:
import org.springframework.boot.SpringApplication;import org.springframework.boot.autoconfigure.EnableAutoConfiguration;import org.springframework.context.annotation.ComponentScan;import org.springframework.context.annotation.Configuration;@Configuration@EnableAutoConfiguration@ComponentScanpublic class Application { public static void main(String[] args) { SpringApplication.run(Application.class, args); }}
一般来说,我们会将 @EnableAutoConfiguration 注解放置在 主类上,也就是上面结构中的 Application.java。它隐式定义了包含某些搜索项的搜索包,例如,如果你正编写一个 JPA 的应用程序,那么带 @EnableAutoConfiguration 注解的类将会被用来搜索带有 @Entity 的类。
而 @ComponentScan 会用来自动扫描相应组件,由于 Application.java 是的根包名下,所以它不需要声明 basePackage 去指定需要扫描的包,默认为根包名,即:com.qchery.funda。
5. Configuration 类
SpringBoot 同时支持 Java-based 配置及 XML 文件配置。但推荐使用 Java-based 形式的配置,如果现在的系统中已经存在一些 XML 形式的配置,建议使用相同效果的 Java-based 配置进行替换,你可以通过搜索 Enable* 来查找对应的 Java-based 配置。
5.1. 导入其它配置
在 SpringBoot 工程里面,我们不需要把所有的配置放置到一个类文件里面。它的 @Import 注解可以帮助我们导入其它的配置类,如果想要导入 XML 形式的配置,可以使用 @ImportResource 注解。另外,还可以使用 @ComponentScan 注解去扫描所有带有 @Configuration 注解的类。
6. 自动化配置
当你在某一个带有 @Configuration 的类里加上 @EnableAutoConfiguration 或 @SpringBootApplication 注解时,SpringBoot 会根据所添加的依赖包自动完成项目配置。例如,如果你在类路径下添加 HSQLDB 的包,但你没有配置任何数据库属性,SpringBoot 会自动配置一个 In-Memory 数据库。其中 @EnableAutoConfiguration 只能添加一个类上,建议将其加在主要的 @Configuration 类上。
6.1. 逐渐替换自动化配置
自动化配置并不是侵入式的,在任何地方你都可以通过自定义配置来替换它。例如,如果你添加自己的数据库配置,那么默认的嵌入式数据库支持将会被退回。如果想要查看自动化配置是否生效,可以在运行程序时,加上 –debug 参数进行查看。
6.2. 禁止特定的自动化配置
当你发现自动化配置不能按自己的意愿进行工作的时候,可以通过 @EnableAutoConfiguration 的 exclude 属性来禁用掉它们。
import org.springframework.boot.autoconfigure.*;import org.springframework.boot.autoconfigure.jdbc.*;import org.springframework.context.annotation.*;@Configuration@EnableAutoConfiguration(exclude={DataSourceAutoConfiguration.class})public class MyConfiguration {}
7. 使用 @SpringBootApplication 注解
由于大多数情况下,@Configuration,@EnableAutoConfiguration 及 @ComponentScan 注解都是一起使用的。SpringBoot 提供了 @SpringBootApplication 这个更加方便的选择,它等同于前三个注解。
import org.springframework.boot.SpringApplication;import org.springframework.boot.autoconfigure.SpringBootApplication;@SpringBootApplication // 等同于 @Configuration @EnableAutoConfiguration @ComponentScanpublic class Application { public static void main(String[] args) { SpringApplication.run(Application.class, args); }}
项目的 github 地址:https://github.com/qchery/funda
总结
到此这篇关于SpringBoot实战教程之新手入门篇的文章就介绍到这了,更多相关SpringBoot入门篇内容请搜索盛行IT以前的文章或继续浏览下面的相关文章希望大家以后多多支持盛行IT!
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。