springBoot笔记.docx
- 文档编号:9969579
- 上传时间:2023-02-07
- 格式:DOCX
- 页数:22
- 大小:40.57KB
springBoot笔记.docx
《springBoot笔记.docx》由会员分享,可在线阅读,更多相关《springBoot笔记.docx(22页珍藏版)》请在冰豆网上搜索。
springBoot笔记
1.SpringBoot入门
SpringBoot是Spring社区较新的一个项目。
该项目的目的是帮助开发者更容易的创建基于Spring的应用程序和服务,让更多人的人更快的对Spring进行入门体验,让Java开发也能够实现RubyonRails那样的生产效率。
并为Spring生态系统提供了一种固定的、约定优于配置风格的框架。
SpringBoot具有如下特性:
●为基于Spring的开发提供更快的入门体验
●开箱即用,没有代码生成,也无需XML配置。
同时也可以修改默认值来满足特定的需求。
●提供了一些大型项目中常见的非功能性特性,如嵌入式服务器、安全、指标,健康检测、外部配置等。
●SpringBoot并不是对Spring功能上的增强,而是提供了一种快速使用Spring的方式。
●SpringBoot简化了使用Spring的过程。
其更多的是采用JavaConfig的方式对Spring进行配置,从而使原来的多个配置文件(.properties、.xml)减少为一个配置文件(application.yml或者application.properties)
1.1简单例子
首先创建一个一般的Maven项目,有一个pom.xml和基本的src/main/java结构。
1.1.1pom.xml文件
//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.0http: //maven.apache.org/xsd/maven-4.0.0.xsd"> 1.1.2对pom的说明 首先是增加了 使用父pom虽然简单,但是有些情况我们已经有父pom,不能直接增加 --ImportdependencymanagementfromSpringBoot--> —这个地方--> 1.1.3添加spring-boot-starter-web依赖 Spring通过添加spring-boot-starter-*这样的依赖就能支持具体的某个功能。 我们这个示例最终是要实现web功能,所以添加的是这个依赖。 更完整的功能列表可以查看: Using-boot-starter-poms (TODO: 对文档的完善会从列表中选择需要的依赖项进行实际测试) 除了应用程序的starters,下面的starters可以用于添加生产准备的特性。 名称 描述 spring-boot-starter-actuator 添加生产准备特性,比如指标和监控 spring-boot-starter-remote-shell 添加远程sshshell支持 最后,SpringBoot包含一些可用于排除或交换具体技术方面的starters 名称 描述 spring-boot-starter-jetty 导入JettyHTTP引擎(作为Tomcat的替代) spring-boot-starter-log4j 对Log4J日志系统的支持 spring-boot-starter-logging 导入SpringBoot的默认日志系统(Logback) spring-boot-starter-tomcat 导入SpringBoot的默认HTTP引擎(Tomcat) spring-boot-starter-undertow 导入UndertowHTTP引擎(作为Tomcat的替代) 1.1.3添加spring-boot-maven-plugin插件 该插件支持多种功能,常用的有两种,第一种是打包项目为可执行的jar包。 在项目根目录下执行mvnpackage将会生成一个可执行的jar包,jar包中包含了所有依赖的jar包,只需要这一个jar包就可以运行程序,使用起来很方便。 该命令执行后还会保留一个XXX.jar.original的jar包,包含了项目中单独的部分。 生成这个可执行的jar包后,在命令行执行java-jarxxxx.jar即可启动项目。 另外一个命令就是mvnspring-boot: run,可以直接使用tomcat(默认)启动项目。 在我们开发过程中,我们需要经常修改,为了避免重复启动项目,我们可以启用热部署。 1.1.6spring-loaded热部署 Spring-Loaded项目提供了强大的热部署功能,添加/删除/修改方法/字段/接口/枚举等代码的时候都可以热部署,速度很快,很方便。 想在SpringBoot中使用该功能非常简单,就是在spring-boot-maven-plugin插件下面添加依赖: --支持热部署--> 添加以后,通过mvnspring-boot: run启动就支持热部署了。 (经过测试,这里如果使用main方法启动,将达不到热部署的效果) 注意: 使用热部署的时候,需要IDE编译类后才能生效,你可以打开自动编译功能,这样在你保存修改的时候,类就自动重新加载了。 1.2创建一个应用类 我们创建一个HelloController类: @RestController //@RestController==@Controller+@ResponseBody /*@Controller @ResponseBody*/ @RequestMapping("/hello") publicclassHelloController{ @RequestMapping publicStringhello(){ return"HelloSpringBoot23231312323"; } @RequestMapping("/info") publicMap Map map.put("name",name); returnmap; } @RequestMapping("/list") publicList List Map for(inti=0;i<5;i++){ map=newHashMap map.put("name","wsh"+i); list.add(map); } returnlist; } @RestController和@RequestMapping注解 我们的Application类上使用的第一个注解是@RestController。 这被称为一个构造型 (stereotype)注解。 对于Spring,该类扮演了一个特殊角色。 等同于@ResponsBody和@Controller的集合 @RequestMapping注解提供路由信息。 它告诉Spring任何来自"/hello"路径的HTTP请求都应该被映射到hello方法。 @RestController注解告诉Spring以字符串的形式渲染结果,并直接返回给调用者。 创建一个SpringBootSampleApplication类 @SpringBootApplication publicclassSpringBootSampleApplication{ publicstaticvoidmain(String[]args){ //TODOAuto-generatedmethodstub SpringApplication.run(SpringBootSampleApplication.class,args); } } @SpringBootApplication注解 申明让springboot自动给程序进行必要的配置,这个配置等同于: @Configuration,@EnableAutoConfiguration和@ComponentScan三个配置。 1.2.1注意 SpringBoot建议将我们main方法所在的这个主要的配置类配置在根包名下。 在SpringBootSampleApplication.java中有main方法。 这只是一个标准的方法,它遵循Java对于一个应用程序入口点的约定。 我们的main方法通过调用run,将业务委托给了SpringBoot的SpringApplication类。 SpringApplication将引导我们的应用,启动Spring,相应地启动被自动配置的Tomcatweb服务器。 我们需要将SpringBootSampleApplication.class作为参数传递给run方法来告诉SpringApplication谁是主要的Spring组件。 为了暴露任何的命令行参数,args数组也会被传递过去。 1.2.5启动项目SpringApplication.run 启动SpringBoot项目最简单的方法就是执行下面的方法: SpringApplication.run(SpringBootSampleApplication.class,args); 该方法返回一个ApplicationContext对象,使用注解的时候返回的具体类型是AnnotationConfigApplicationContext或AnnotationConfigEmbeddedWebApplicationContext,当支持web的时候是第二个。 除了上面这种方法外,还可以用下面的方法: SpringApplicationapplication=newSpringApplication(Application.class); application.run(args); SpringApplication包含了一些其他可以配置的方法,如果你想做一些配置,可以用这种方式。 除了上面这种直接的方法外,还可以使用SpringApplicationBuilder: newSpringApplicationBuilder() .showBanner(false) .sources(Application.class) .run(args); 当使用SpringMVC的时候由于需要使用子容器,就需要用到SpringApplicationBuilder,该类有一个child(xxx...)方法可以添加子容器。 1.3运行 在IDE中直接直接执行main方法,然后访问http: //localhost: 8080即可。 另外还可以用上面提到的mvn,可以打包为可执行jar包,然后执行java-jarxxx.jar。 或者执行mvnspring-boot: run运行项目。 2.SpringBoot常用注解 注解(annotations)列表 1.@ResponseBody 用该注解修饰的函数,会将结果直接填充到HTTP的响应体中,一般用于构建RESTful的api; 2.@Controller 用于定义控制器类,在spring项目中由控制器负责将用户发来的URL请求转发到对应的服务接口(service层)。 3.@RestController @ResponseBody和@Controller的合集 4.@RequestMapping 提供路由信息,负责URL到Controller中的具体函数的映射。 5.@EnableAutoConfiguration SpringBoot自动配置(auto-configuration): 尝试根据你添加的jar依赖自动配置你的Spring应用。 这个注解告诉SpringBoot根据添加的jar依赖猜测你想如何配置Spring。 比如上面的例子中,由于spring-boot-starter-web添加了Tomcat和SpringMVC,所以auto-configuration将假定你正在开发一个web应用并相应地对Spring进行设置。 StarterPOMs和Auto-Configuration: 设计auto-configuration的目的是更好的使用"StarterPOMs",但这两个概念没有直接的联系。 你可以自由地挑选starterPOMs以外的jar依赖,并且SpringBoot将仍旧尽最大努力去自动配置你的应用。 6.@ComponentScan 表示将该类自动发现(扫描)并注册为Bean,可以自动收集所有的Spring组件,包括@Configuration类。 我们经常使用@ComponentScan注解搜索beans,并结合@Autowired注解导入。 7.@Configuration 相当于传统的xml配置文件,如果有些第三方库需要用到xml文件,建议仍然通过@Configuration类作为项目的配置主类——可以使用@ImportResource注解加载xml配置文件。 8.@SpringBootApplication 相当于@EnableAutoConfiguration、@ComponentScan和@Configuration的合集。 9.@Import 用来导入其他配置类。 10.@ImportResource 用来加载xml配置文件。 11.@Autowired 自动导入依赖的bean 12.@Service 一般用于修饰service层的组件 13.@Repository 使用@Repository注解可以确保DAO或者repositories提供异常转译,这个注解修饰的DAO或者repositories类会被ComponetScan发现并配置,同时也不需要为它们提供XML配置项。 3.SpringBoot属性配置和使用 SpringBoot允许外化你的配置,这样就能够在不同的环境下使用相同的代码。 你可以使用properties文件、YAML文件,也可以使用环境变量和命令行参数来进行外化配置。 3.1SpringBoot支持多种外部配置方式 SpringBoot支持多种方式的外部配置,其使用一个非常特别的PropertySource次序来允许对值进行合理的覆盖,具体次序如下: 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包内部的application-{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.setDefaultProperties指定的默认属性 打个比方: 我们的程序有一个name属性,你可以将一个application.properties文件捆绑到jar内,用来提供一个合理的默认name属性值。 当运行在生产环境时,可以在jar外提供一个application.properties文件来覆盖name属性。 对于一次性的测试,你可以使用特定的命令行开关启动(比如,java-jarapp.jar--name="Spring")。 3.1.1命令行参数 通过java-jarapp.jar--server.port=9090方式来传递参数。 参数用--xxx=xxx的形式传递。 可以使用的参数可以是我们自己定义的,也可以是SpringBoot中默认的参数。 很多人可能会关心如web端口如何配置这样的问题,这些都是SpringBoot中提供的参数,部分可用参数如下: #EMBEDDEDSERVERCONFIGURATION(ServerProperties) server.port=8080 server.address=#bindtoaspecificNIC server.session-timeout=#sessiontimeoutinseconds server.context-parameters.*=#Servletcontextinitparameters,e.g.server.context-parameters.a=alpha server.context-path=#thecontextpath,defaultsto'/' server.servlet-path=#theservletpath,defaultsto'/' 更多常见的应用属性请浏览这里 注意: 命令行参数在app.jar的后面! 可以通过SpringApplication.setAddCommandLineProperties(false)禁用命令行配置。 3.1.2Java系统属性 注意Java系统属性位置java-Dname="isea533"-jarapp.jar,可以配置的属性都是一样的,优先级不同。 例如java-Dname="isea533"-jarapp.jar--name="Spring! "中name值为Spring! 3.1.3操作系统环境变量 配置过JAVA_HOME的应该都了解这一个。 这里需要注意的地方,有些OS可以不支持使用.这种名字,如server.port,这种情况可以使用SERVER_PORT来配置。 3.1.4RandomValuePropertySource RandomValuePropertySource在注入随机值(比如,密钥或测试用例)时很有用。 它能产生 整数,longs或字符串,例如: 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.int[1024,65536]} random.int*支持value参数和,max参数,当提供max参数的时候,value就是最小值。 3.1.5应用配置文件(.properties或.yml) 在配置文件中直接写: name=Isea533 server.port=8080 .yml格式的配置文件如: na
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- springBoot 笔记