




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
springbootboot地址:解压,拷贝到工作空间,导入maven写 启动SpringBoot类mavenboot新建一个普通的maven工程,选择【注意:Springboot是web工程,但是我们这里只需要建立quickstart即可,因为springboot内嵌了查看文档:点击quick拷贝依赖的父pom到自己的工程pomboot项目的pom(以下内容为每个mavenMaven--》UpdateSampleController.javaRunasJavaApplication浏览器输入:即当然,除了以上两种方式搭建bootidea,sts,springbootcli这些工具集成了springboot特性,可以一键生成springboot工程骨架StarterPOMboot-parentboot-parent的maven然后修改packagingpom加入dependencyManagement,同时version,直接使用父pom删除无用的源文件,只保留修改pom.xml那么我们要成为一个springboot项目,必须要引入他的父pom于是加入他的父pom:boot-base建立boot-base工程,实现之前 oworld功能在boot-parentmavenmodule把之前的SampleController.java过来,但是会报错,这时候,加入如下内容需要修改父pom.xmlboot-parent中的pom.xml启动SampleController,然后:springbootspringboot注意:加入这个依赖之后,junit包就可以不用了,因为test的starter中包含了备注:怎么找到所有的ctrl+f搜索:starter,就可以看到springboot中的所有 sospringboot@ComponentScan(basePackages={"com.example.boot配置详解以前写的xml配置,例如我们我们的bean,用来实例化一个bean。那么在这个配置类中就是实现以前我们xml配置的功能@EnableAutoConfiguration:开启自动配置功能,他会扫描带有@Configuration@ComponentScanbean。默认springbootspring-boot-启动程序,浏览器出现第一个结果,然后修改控制器输出内容,再次刷新看到新的结 :LiveReloadserverisrunningonport修改boot-parent中pom.xml文件,增加如下内容(当然也可以把下面的内容到子模块中也是可以的<plugin>maven在 下面,可以看到打包的jar文java-jarD:\tools\javaSE1.8\jdk1.8\bin>java.exe-jarD:\01_dev_env\repos\com\example\boot\boot-【注意:执行jar的jdk版本需要与jarjavaSpringBoot另外,也可以直接在运行perties文件改成UTF-publicclassSampleController{privateStringteacherName;publicStringhome(){return oWorld!"+}}参数=Teacher${}'snumberis#随机字符串#随机int#随机long1-20置多份不同环境的配置文件,再通过打包命令指定需要打包的内容之后进行区分打包,SpringBoot也提供了支持在SpringBoot中多环境配置文件名需要满足application-{profile}.properties的格式,其中{profile}对应你的环至于哪个具体的配置文件会被加载,需要在files.active属性来设比如:files.active=perties配置文件中的内容在devtest,prodserver.port属性,如:dev8081,test8082,files.active=perties中配置通用内容,并设置files.active=dev,以开发环境为默认配置2.application-{profile}.properties中配置各个环境不同的内容Springbootweb静态资源:js,css,html,,音静态资源路径:是指系统可以直接的路径,且路径下的所有文件均可被用户直接SpringBoot默认提供静态资 位置需置于classpath下 名需符合如下规则/META-案例:在classpath下面创建 ,并且加入一个加入之后,然后不需要重启直接:修改默认的静态资 SpringBoot强烈建议使用模板引擎渲染html页面,避免使用JSPJSPSpringBoot老师在这里讲两种模板引擎的集成:Thymeleaf(springboot推荐 【师傅领进门,靠个人,哈哈Springboot默认的模板配置路径为:src/main/resources/temtes。当然也可以修改这个路集成Thymeleafpom.xmlControllerpublicclassSampleControllerpublicStringtestThymeleaf(ModelMapmap)map.addAttribute("name",testThymeleaf://对应src/main/resources/temtes/testThymeleaf.htmlreturn"testThymeleaf";}}在src/main/resources/下面建立tem<!DOCTYPE<head<metacharset="UTF-8"<h1springboot,浏览器输入:#EnableMVCThymeleafviewresolution.#Enabletemtecaching.#Checkthatthetemteslocationexists.spring.thymeleaf.check-temte-location=true#Content-Typevalue.#Temteencoding.#Comma-separatedlistofviewnamesthatshouldbeexcludedfromresolution.#Temtemodetobeappliedtotemtes.SeealsoStandardTemteModeHandlers.#PrefixthatgetsprependedtoviewnameswhenbuildingaURL.spring.thymeleaf.prefix=classpath:/temtes/#SuffixthatgetsappendedtoviewnameswhenbuildingaURL.#Orderofthetemteresolverinthechain.spring.thymeleaf.temte-resolver-order=#Comma-separatedlistofviewnamesthatcanberesolved.pom.xml<!--集 marker-- publicStringtest marker(Map<String,String>map){map.put("name","");return o";//默认为src/main/resources/tem } o,3运行springbootmainSwagger2RESTfulAPI[Swagger2RESTfulAPIAPIAPIRESTfulSwagger2pom.xmlSwagger2Swagger2在springbootSwaggerSwaggerConfig.javaSwaggerConfig.javapublicclassSwaggerConfig{publicDocketcreateRestApi()returnnew }//创建apiprivateApiInfoapiInfo(){returnnewApiInfoBuilder().titleSwagger2构建RESTful.description("集成Swagger2构建RESTful }}Controller:SwaggerController.javapublicclassSwaggerController{@ApiOperation(value="获取用户信息",notes="根据id来获取用户详细信息")@ApiImplicitParam(name="id",value="用户ID",required=truedataType="String")@RequestMap(value="/{id}",method=RequestMethod.GET)publicMap<String,String>getInfo(@PathVariableStringid){Map<String,String>map=newHashMap<String,String>();map.put("name","");map.put("age","34");returnmap;}}启动Springboot,SwaggerUI界面:Swagger2创建全局异常处理类:通过使用@ControllerAdvice@ExceptionHandlerclassGlobalExceptionHandler{@ExceptionHandler(value=Exception.class)publicModelAndViewdefaultErrorHandler(HttpServletRequestreq,Exceptione)throwsException{ModelAndViewmavnewModelAndView();mav.addObject("msg","异常咯...");return}}ControllerpublicString othrowsExceptionthrownewException("发生错误");}src/main/resources/temtes增加<!DOCTYPE<head<metacharset="UTF-8"<divpom.xml<version>1.1.1</version>mysql CREATETABLE`t_user``id`int(11)NOTNULL`name`varchar(40)DEFAULT`age`int(11)DEFAULT`address`varchar(100)DEFAULT`phone`varchar(40)DEFAULTNULL,PRIMARYKEY(`id`))ENGINE=InnoDBAUTO_INCREMENT=1DEFAULTUser.javapublicclassUserprivateIntegerid;privateStringname;privateIntegerage;privateStringaddress;privateStringphone;getter,setter}UserMapper.javapublicinterfaceUserMapper/**id@Select("SELECT*FROMT_USERWHEREID=UserfindById(@Param("id")String@Insert("INSERTINTOT_USER(NAME,AGE,ADDRESS,PHONE)VALUES(#{name},#{age},intinsert(@Param("name")Stringname,@Param("age")Integerage,@Param("address")Stringaddress,@Param("phone")Stringphone);}@SpringBootTest(classes=SpringBootMain.class)publicclassMybatisTest{privateUserMapperuserMapper;publicvoidtestInsert()throwsExceptionintnum=userMapper.insert("zhangsan",20,"长沙"," }publicvoidtestFindById()throwsException{Useru=userMapper.findById(14);}}注意:测试完毕之后,记得把这个测试类注释掉,不然后面构建整个项目的时候会执行testcase集成Redispom.xml注意:旧版本springboot中集成的redisstarterspring-boot-starter-redis#REDISRedis(0)#Redis服务器地址#Redis服务器连接端口#Redis服务器连接(默认为空#连接池最大连接数(使用负值表示没有限制#连接池最大阻塞等待时间(使用负值表示没有限制#连接池中的最大空闲连接#连接池中的最小空闲连接#连接超时时间(毫秒)注意:spring.redis.database0Redis16,可以理解为数据库的schemaredis-server@SpringBootTest(classes=SpringBootMain.class)publicclassSpringRedisTest{publicvoidtestRedis()throwsExceptionValueOperations<String,String>ops=redisTemte.opsForValue();ops.set("name","zhangsan");Stringvalue=ops.get("name");TestCase.assertEquals("zhangsan",value);}}注意:redis中对象,需要我们自己实现RedisSerializer<T>接口来对传入对象进行序列化和反序列RabbitMQ是以AMQPAMQP是AdvancedMessageQueuingProtocolAMQP关于AMQP、RabbitMQSpringbootErlang/OTP20.3地址Erlang/OTP其它版本地址:RabbitMQServer3.7.4地址 RabbitMQ其它版本地址:https: 关于Linux平台怎么安装,自行即RabbitMQRabbitMQServer安装之后,会自动为windows服务,并以默认配置启动起RabbitMQWeb进入rabbitmq安 的 ,在此打开dos命令窗口,执行以下命rabbitmq-pluginsenable出现如下提示,说明web然后重新启动RabbitMQ服务,打开浏览器并:,并使用默认用户guest登录,也为guest,管理界面SpringBootAddaspringboot用户登陆,在Allusers中,点击Name为springbootPermissions“Setrabbitmq##rabbitmqconfigRabbitimportorg.springframework.amqp.core.Queue;importorg.springframework.context.annotation.Bean;importorg.springframework.context.annotation.Configuration;publicclassRabbitConfig{publicQueuefirstQueue()firstreturnnewQueue("first");}}publicclassSender{privateAmqpTemterabbitTemte;publicvoidsend(){rabbitTemte.convertAndSend("first","testrabbitmqmessage}}说明:通过注入AmqpTemte接口的实例来实现消息的发送,AmqpTemte接口定义了一套针对AMQP@RabbitListener(queues="first")publicclassReceiver{publicvoidprocess(Stringmsg){System.out.println("receivemsg:"+msg);}}@RabbitListener注解:定义该类需要的队@RabbitHandler@SpringBootTest(classes=SpringBootMain.class)publicclassRabbitmqTest{privateSendersender;publicvoidtestRabbitmq()throwsException{}}控制台如果出现以下信息,则说明rabbitmqCreatednewconnection:rabbitConnectionFactory#29102d45:0/SimpleConnection@1dcfb5ba[delegate=amqp://springboot@:5672/,localPort=55088]Junitreceivemsg:testrabbitmqmessage集成RabbitMQSpringbootJavaJavaUtilLogging,Log4J,Log4J2LogbackSpringBoot项,比如日志框架可以用logback或log4j,log4j2等。springboot自带logslf4j(SimpleLoggingFacadeForJava),它是一个针对于各类Java框架的统一Facade抽象日志实现默认使用的Logback是log4jSLF4Jlogback例如,在spring-boot-starterspring-boot-starter-loggingSpringBootlogbackSpringBoot根据情况初始化并使用。值得注意的是,默认情况下,SpringBootlogbackspring-boot-starter了spring-boot-starter-logging,该依赖就是使用SpringBoot默认的日志框架logbackimportimportprivatefinalLoggerlogger=默认情况下,SpringBoot配置的是INFO日志级别,也就是会输出INFO(ERRORWARN,INFO)。如果需要Debug级别的日志。在src/main/resources/perties中配置。logging.level.*默认情况下,SpringBoot日志只会输出到控制台,并不会写入到日志文件,因此,对于正式环境的应用,我们需periteslogging.filelogging.pathlogging.path=/var/tmplogging.file=xxx.loglogging.level.root=infologging.path/var/tmpspring.loglogging.file,会在项目的当前路径下生成一个xxx.log日志文件。10MBlog4jlog4j2,我们可以采用类似的方式将它们对应的依赖模块加到Maven在spring-boot-dependenciesPOMsspring-boot-starter-Springboot父Pomjar<!--log4j2--日志使用跟上面logback在spring-boot-dependenciesPOMsspring-boot-starter-Springboot的父Poms并没有提供了这个依赖,我们在仓库中查找pom<!--log4jstart--<!--log4jend--classpath下增加pertieslog4j.rootCategory=INFO,stdoutfileerrorfile.example.boot=INFO,myFile#控制台输出log4j.appender.stdout.layout.ConversionPattern=%d{yyyy-MM-ddHH:mm:ss,SSS}%5p%c{1}:%L-#rootlog4j.appender.file.layout.ConversionPattern=%d{yyyy-MM-ddHH:mm:ss,SSS}%5p%c{1}:%L-#error日志输出log4j.appender.errorfile.Threshold=ERRORlog4j.appender.errorfile.layout.ConversionPattern=%d{yyyy-MM-ddHH:mm:ss,SSS}%5p#com.example.boot下的日志输出log4j.appender.myFile.layout.ConversionPattern=%d{yyyy-MM-ddHH:mm:ss,SSS}%5p%c{1}:%L--importprivatefinalLoggerlogger=如:点击一个按钮跳转到一个页面)publicStringview(){return}现在只需要这样统一写,此类必须在启动类所在包或者子包中publicclassWebMvcConfigextendsWebMvcConfigurerAdapter{publicvoidaddViewControllers(ViewControllerRegistryregistry){}}页面:abc.flt或者o即可到这个abc.flt文件在我们学习SpringBoot时都已经了解到starter是SpringBoot的组成部分,SpringBoot为我们提供了尽可能完善的封装,提供了一系列的自动化配置的starter插件,我们在使用spring-boot-starter-web时只需要在pom.xml配置文件内添加依赖就可以了,我们之前传统方式则是需要添加很多相关SpringMVC配置文件。而spring-boot-starter-web为我们提供了几乎所有的默认配置,很好的降低了使用框架时的复杂度。因此在使用perties对应配置就可以了,那好,为什么我在perties配置对应属性后xx.starter呢?下面我们带着这个疑问来编写我们自定义的starter让我们深入了解SpringBootstarter创建普通maven项目,修改pom.xml我们这个starterspring-boot-autoconfigure,实战开发starter是如何perties或者application.yml配置文件内需要的配置参数的呢?那么接下来我们SpringBoot@ConfigurationProperties,该注解可以完成将perties配置文件内的有规则的配置参数映射到实体内的field内,不过需要提供setter方@ConfigurationProperties(prefix="o")publicclassoProperties{privateStringmsg="test";publicStringgetMsg(){return}publicvoidsetMsg(Stringmsg){this.msg=msg;}}在上面代码中,@ConfigurationProperties注解内我们使用到了属性preffix,该属性配置了参数的前缀,根 我们为自定义starter提供一个Service,并且提供一个名为say o的方法用于返回我们配置的msg内容。代码publicclass privateStringmsg;publicStringsay returnmsg;}publicvoidsetMsg(Stringmsg){this.msg=msg;}}Service接下来我们开始编写自动配置,这一块是starter的部分,配置该部分后在启动项目时才会自动加载配置,当然自动化配置其实只是提供实体bean@EnableConfigurationProperties(oProperties.class)//开启使用映射实体对象@ConditionalOnClass(oService.class)//存在oService(prefix=" value="enabled",//开启matchIfMissing=true//缺查)public 根据条件判断不存 oService时初始化新bean到 oService实体 oService实体bean时,初始化 oService并添加到SpringIoc oServiceNotFound,ExecuteCreateNewBean."); oService=new }}SpringBoot内置条件注解有关@ConditionalOnXxx有Xxx条件,当然它实际的意义也是如此,条件注解是一个系列,下面我们详细做出解释@ConditionalOnBean:当SpringIoc容器内存在指定Bean的条件@ConditionalOnClass:当SpringIoc容器内存在指定Class的条件@ConditionalOnExpression:基于SpEL表达式作为判断条件@ConditionalOnJava:基于JVM版本作为判断条件@ConditionalOnJndi:在JNDI存在时
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
评论
0/150
提交评论