收藏 分享(赏)

springBoot笔记.pdf

上传人:李静文 文档编号:70456 上传时间:2018-10-07 格式:PDF 页数:19 大小:198.33KB
下载 相关 举报
springBoot笔记.pdf_第1页
第1页 / 共19页
springBoot笔记.pdf_第2页
第2页 / 共19页
springBoot笔记.pdf_第3页
第3页 / 共19页
springBoot笔记.pdf_第4页
第4页 / 共19页
springBoot笔记.pdf_第5页
第5页 / 共19页
点击查看更多>>
资源描述

1、1. Spring Boot 入门Spring Boot 是 Spring 社区较新的一个项目。 该项目的目的是帮助开发者更容易的创建基于 Spring 的应用程序和服务,让更多人的人更快的对 Spring 进行入门体验,让 Java开发也能够实现 Ruby on Rails 那样的生产效率。 为 Spring 生态系统提供了一种固定的、 约定优于配置风格的框架。Spring Boot 具有如下特性:为基于 Spring 的开发提供更快的入门体验开箱即用,没有代码生成,也无需 XML 配置。同时也可以修改默认值来满足特定的需求。提供了一些大型项目中常见的非功能性特性, 如嵌入式服务器、 安全、

2、 指标, 健康检测、外部配置等。Spring Boot 并不是对 Spring 功能上的增强,而是提供了一种快速使用 Spring 的方式。1.1 简单例子首先创建一个一般的 Maven 项目,有一个 pom.xml 和基本的 src/main/java 结构。1.1.1 pom.xml 文件4.0.0 com.nes.spring.boot SpringBootDemo1 0.0.1-SNAPSHOT org.springframework.boot spring-boot-starter-parent 1.3.0.RELEASE org.springframework.boot sprin

3、g-boot-starter-web org.apache.maven.plugins maven-compiler-plugin 2.5.1 1.7 1.7 org.springframework.boot spring-boot-maven-plugin org.springframework springloaded 1.2.5.RELEASE 1.1.2 对 pom 的说明首先是增加了 ,增加父 pom 比较简单,而且 spring-boot-starter-parent 包含了大量配置好的依赖管理,在自己项目添加这些依赖的时候不需要写 版本号。使用父 pom 虽然简单,但是有些情况我

4、们已经有父 pom,不能直接增加 时,可以通过如下方式:org.springframework.boot spring-boot-dependencies 1.2.3.RELEASE pomimport 1.1.3 关于 java.version属性上面 pom.xml 虽然没有出现这个属性,这里要特别提醒。Spring 默认使用 jdk1.6, 如果你想使用 jdk1.8, 你需要在 pom.xml 的属性里面添加 java.version,如下:1.8 1.1.4 添加 spring-boot-starter-web依赖Spring 通过添加 spring-boot-starter-* 这

5、样的依赖就能支持具体的某个功能。我们这个示例最终是要实现 web 功能,所以添加的是这个依赖。更完整的功能列表可以查看: Using-boot-starter-poms1.1.4 添加 spring-boot-maven-plugin插件该插件支持多种功能,常用的有两种,第一种是打包项目为可执行的 jar 包。在项目根目录下执行 mvn package 将会生成一个可执行的 jar 包, jar 包中包含了所有依赖的 jar 包,只需要这一个 jar 包就可以运行程序,使用起来很方便。该命令执行后还会保留一个 XXX.jar.original 的 jar 包,包含了项目中单独的部分。生成这个可

6、执行的 jar 包后,在命令行执行 java -jar xxxx.jar 即可启动项目。另外一个命令就是 mvnspring-boot:run ,可以直接使用 tomcat (默认)启动项目。在我们开发过程中,我们需要经常修改,为了避免重复启动项目,我们可以启用热部署。1.1.6 spring-loaded热部署Spring-Loaded 项目提供了强大的热部署功能, 添加 / 删除 / 修改方法 / 字段 /接口 /枚举等代码的时候都可以热部署,速度很快,很方便。想在 Spring Boot 中使用该功能非常简单, 就是在 spring-boot-maven-plugin插件下面添加依赖:o

7、rg.springframework springloaded 1.2.5.RELEASE 添加以后,通过 mvnspring-boot:run 启动就支持热部署了。注意:使用热部署的时候,需要 IDE编译类后才能生效,你可以打开自动编译功能,这样在你保存修改的时候,类就自动重新加载了。1.2 创建一个应用类我们创建一个 Application 类:RestControllerEnableAutoConfigurationpublicclass Application RequestMapping ( “/“ ) String home() return “Hello World!“ ; Re

8、questMapping ( “/now“ ) String hehe() return “ 现在时间: “ + ( new Date().toLocaleString(); publicstaticvoid main(String args) SpringApplication.run(Application.class, args); 1.2.1 注意Spring Boot 建议将我们 main 方法所在的这个主要的配置类配置在根包名下。com +- example +- myproject +- Application.java +- domain | +- Customer.java|

9、 +- CustomerRepository.java+- service | +- CustomerService.java+- web +- CustomerController.java在 Application.java 中有 main 方法。因 为 默 认 和 包 有 关 的 注 解 , 默 认 包 名 都 是 当 前 类 所 在 的 包 , 例 如 ComponentScan, EntityScan, SpringBootApplication 注解。 (都是安当前 Application.java 所在包作为 Scan 扫描)1.2.2 RestController 因为我们例子

10、是写一个 web 应用, 因此写的这个注解, 这个注解相当于同时添加 Controller和 ResponseBody 注解。1.2.3 EnableAutoConfiguration Spring Boot 建议只有一个带有该注解的类。EnableAutoConfiguration 作用: Spring Boot 会自动根据你 jar 包的依赖来自动配置项目。例如当你项目下面有 HSQLDB 的依赖时, Spring Boot 会创建默认的内存数据库的数据源DataSource,如果你自己创建了 DataSource, Spring Boot 就不会创建默认的 DataSource。如果你不

11、想让 Spring Boot 自动创建,你可以配置注解的 exclude 属性,例如:ConfigurationEnableAutoConfiguration (exclude=DataSourceAutoConfiguration.class) publicclass MyConfiguration 1.2.4 SpringBootApplication 由于大量项目都会在主要的配置类上添加Configuration,EnableAutoConfiguration,ComponentScan 三个注解。因此 Spring Boot 提供了 SpringBootApplication 注解,该

12、注解可以替代上面三个注解(使用Spring 注解继承实现) 。1.2.5 启动项目 SpringApplication.run 启动 Spring Boot 项目最简单的方法就是执行下面的方法:SpringApplication.run(Application.class, args); 该 方 法 返 回 一 个 ApplicationContext 对 象 , 使 用 注 解 的 时 候 返 回 的 具 体 类 型 是AnnotationConfigApplicationContext 或 AnnotationConfigEmbeddedWebApplicationContext ,当支持

13、 web 的时候是第二个。除了上面这种方法外,还可以用下面的方法:SpringApplication application = new SpringApplication(Application.class); application.run(args); SpringApplication 包含了一些其他可以配置的方法, 如果你想做一些配置, 可以用这种方式。除了上面这种直接的方法外,还可以使用 SpringApplicationBuilder :newSpringApplicationBuilder() .showBanner(false) .sources(Application.cl

14、ass) .run(args); 当使用 SpringMVC 的时候由于需要使用子容器,就需要用到 SpringApplicationBuilder ,该类有一个 child(xxx.)方法可以添加子容器。1.3 运行在 IDE 中直接直接执行 main 方法,然后访问 http:/localhost:8080 即可。另外还可以用上面提到的 mvn,可以打包为可执行 jar 包,然后执行 java -jar xxx.jar。或者执行 mvnspring-boot:run 运行项目。2. Spring Boot 属性配置和使用Spring Boot 允许通过外部配置让你在不同的环境使用同一应用程

15、序的代码, 简单说就是可以通过配置文件来注入属性或者修改默认的配置。2.1 Spring Boot 支持多种外部配置方式这些方式优先级如下:1. 命令行参数2. 来自 java:comp/env 的 JNDI属性3. Java系统属性( System.getProperties() )4. 操作系统环境变量5. RandomValuePropertySource 配置的 random.* 属性值6. jar 包外部的 application-profile.properties 或 application.yml( 带 spring.profile) 配置文件7. jar 包内部的 appli

16、cation-profile.properties 或 application.yml( 带 spring.profile) 配置文件8. jar 包外部的 application.properties 或 application.yml( 不带 spring.profile) 配置文件9. jar 包内部的 application.properties 或 application.yml( 不带 spring.profile) 配置文件10. Configuration 注解类上的 PropertySource 11. 通过 SpringApplication.setDefaultPrope

17、rties 指定的默认属性2.1.1 命令行参数通过 java -jar app.jar -name=“Spring“ -server.port=9090 方式来传递参数。参数用 -xxx=xxx的形式传递。可以使用的参数可以是我们自己定义的,也可以是 Spring Boot 中默认的参数。很多人可能会关心如 web 端口如何配置这样的问题,这些都是 Spring Boot 中提供的参数,部分可用参数如下:# LOGGINGlogging .path =/var/logs logging .file =myapp .loglogging .config = # location of conf

18、ig file (default classpath:logback.xml for logback)logging .level .*= # levels for loggers, e.g. “logging.level.org.springframework=DEBUG“ (TRACE, DEBUG, INFO, WARN, ERROR, FATAL, OFF)# EMBEDDED SERVER CONFIGURATION (ServerProperties)server .port =8080server .address = # bind to a specific NICserver

19、 .session -timeout= # session timeout in secondsserver .context -parameters.*= # Servlet context init parameters, e.g. server.context-parameters.a=alphaserver .context -path= # the context path, defaults to /server .servlet -path= # the servlet path, defaults to /更多常见的应用属性请浏览 这里注意: 命令行参数在 app.jar 的后

20、面!可以通过 SpringApplication.setAddCommandLineProperties(false) 禁用命令行配置。2.1.2 Java系统属性注意 Java系统属性位置 java -Dname=“isea533“ -jar app.jar ,可以配置的属性都是一样的,优先级不同。例如 java -Dname=“isea533“ -jar app.jar -name=“Spring!“ 中 name 值为 Spring! 2.1.3 操作系统环境变量配置过 JAVA_HOME的应该都了解这一个。这里需要注意的地方,有些 OS可以不支持使用 .这种名字,如 server.po

21、rt ,这种情况可以使用 SERVER_PORT来配置。2.1.4 RandomValuePropertySource 系统中用到随机数的地方,例如:my.secret=$random.value my.number=$random.int my.bignumber=$random.long my.number.less.than.ten=$random.int(10) my.number.in.range=$random.int1024,65536 random.int* 支持 value 参数和 ,max 参数,当提供 max 参数的时候, value 就是最小值。2.1.5 应用配置文件

22、( .properties或 .yml)在配置文件中直接写:name=Isea533 server.port=8080 .yml 格式的配置文件如:name: Isea533 server: port: 8080 当有前缀的情况下,使用 .yml 格式的配置文件更简单。关于 .yml 配置文件用法请看 这里注意: 使用 .yml 时, 属性名的值和冒号中间必须有空格, 如 name: Isea533 正确, name:Isea533就是错的。2.1.5.1 属性配置文件的位置spring 会从 classpath 下的 /config 目录或者 classpath 的根目录查找 applica

23、tion.properties 或application.yml 。/config 优先于 classpath 根目录2.1.6 PropertySource 这个注解可以指定具体的属性配置文件,优先级比较低。2.1.7 SpringApplication.setDefaultProperties 例如:SpringApplication application = new SpringApplication(Application.class); MapdefaultMap = new HashMap(); defaultMap.put(“name“, “Isea-Blog“); / 还可以

24、是 Properties 对象application.setDefaultProperties(defaultMap); application.run(args); 2.2 应用(使用)属性2.2.1 Value(“ $xxx ”)这种方式是最简单的,通过 Value 注解可以将属性值注入进来。2.2.2 ConfigurationProperties Spring Boot 可以方便的将属性注入到一个配置对象中。例如:my.name =Isea533 my.port =8080my.servers 0=dev my.servers 1=foo 对应对象:ConfigurationProp

25、erties (prefix= “my“ ) publicclassConfig private String name; private Integer port; private List servers = newArrayList(); public String geName() returnthis .name; public Integer gePort() returnthis .port; public ListgetServers() returnthis .servers; Spring Boot 会自动将 prefix=“my“ 前缀为 my 的属性注入进来。Sprin

26、g Boot 会自动转换类型, 当使用 List 的时候需要注意在配置中对 List 进行初始化!Spring Boot 还支持嵌套属性注入,例如:name=isea533 jdbc.username=root jdbc.password=root .对应的配置类:ConfigurationPropertiespublicclassConfig private String name; private Jdbcjdbc; class Jdbc private String username; private String password; /getter. public Integer ge

27、Port() returnthis .port; publicJdbcgetJdbc() returnthis .jdbc; jdbc 开头的属性都会注入到 Jdbc 对象中。2.2.3 在 Bean方法上使用 ConfigurationProperties 例如:ConfigurationProperties (prefix = “foo“ ) Beanpublic FooComponentfooComponent() . Spring Boot 会将 foo 开头的属性按照名字匹配注入到 FooComponent 对象中。2.2.4 属性占位符例如:app. name =MyApp app

28、.description=$app. name is a Spring Boot application可以在配置文件中引用 前面 配置过的属性(优先级前面配置过的这里都能用) 。通过如 $app.name: 默认名称 方法还可以设置默认值,当找不到引用的属性时,会使用默认的属性。由于 $ 方式会被 Maven 处理。如果你 pom 继承的 spring-boot-starter-parent ,Spring Boot 已经将 maven-resources-plugins 默认的 $ 方式改为了 方式,例如name。如果你是引入的 Spring Boot,你可以修改使用 其他的分隔符2.2.

29、5 通过属性占位符还能缩短命令参数例如修改 web 默认端口需要使用 -server.port=9090 方式,如果在配置中写上:server.port= $port:8080那么就可以使用更短的 -port=9090 ,当不提供该参数的时候使用默认值 8080 。2.2.6 属性名匹配规则例如有如下配置对象:ComponentConfigurationProperties (prefix= “person“ ) publicclass ConnectionSettings private String firstName; firstName 可以使用的属性名如下:person.firstName ,标准的驼峰式命名person.first-name ,虚线( - )分割方式,推荐在 .properties 和 .yml 配置文件中使用PERSON_FIRST_NAME,大写下划线形式,建议在系统环境变量中使用2.2.7 属性验证可以使用 JSR-303 注解进行验证,例如:

展开阅读全文
相关资源
相关搜索
资源标签

当前位置:首页 > 网络技术 > 热门技术

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:文库网官方知乎号:文库网

经营许可证编号: 粤ICP备2021046453号世界地图

文库网官网©版权所有2025营业执照举报