范文健康探索娱乐情感热点
投稿投诉
热点动态
科技财经
情感日志
励志美文
娱乐时尚
游戏搞笑
探索旅游
历史星座
健康养生
美丽育儿
范文作文
教案论文

SpringBoot学习

  Spring Boot是为了简化Spring应用的创建、运行、调试、部署等而出现的,使用它可以做到专注于Spring应用的开发,而无需过多关注XML的配置。
  简单来说,它提供了一堆依赖打包,并已经按照使用习惯解决了依赖问题---习惯大于约定。
  Spring Boot默认使用tomcat作为服务器,使用logback提供日志记录。
  无需多言,直接进入节奏:
  前提
  Spring Boot提供了一系列的依赖包,所以需要构建工具的支持:maven 或 gradle。个人仅熟悉maven,所以下面的内容都是maven相关的。
  如果不熟悉maven,请先了解一下。
  使用
  ① 新建一个maven项目。
  ② pom中parent设为  spring-boot-starter-parent  。建议使用最新的  RELEASE  版本。否则可能需要设置    和   。
  ③ 添加应用需要的starter模块,作为示例,我们仅添加web starter模块。
  这里需要解释下starter模块,简单的说,就是一系列的依赖包组合。例如web starter模块,就是包含了Spring Boot预定义的一些Web开发的常用依赖:   spring-web, spring-webmvc Spring WebMvc框架   tomcat-embed-* 内嵌Tomcat容器   jackson 处理json数据   spring-* Spring框架   spring-boot-autoconfigure Spring Boot提供的自动配置功能
  换句话说,当你添加了相应的starter模块,就相当于添加了相应的所有必须的依赖包。
  starter模块的列表及含义,见 Spring Boot的启动器Starter详解 。
  换句话说,当你添加了相应的starter模块,就相当于添加了相应的所有必须的依赖包。
  starter模块的列表及含义
  至此,pom内容如下:      4.0.0     cn.larry.spring     larry-spring-demo4     0.0.1-SNAPSHOT               org.springframework.boot         spring-boot-starter-parent         1.4.0.RELEASE                                 org.springframework.boot             spring-boot-starter-web               
  保存pom,刷新maven,以便刷新依赖导入。
  基本上,如果没有特别的需要,现在就可以直接写Controller了!!!--特别的需要 是指设置容器、访问端口、路径等。后面再解释。
  ④ 写一个简单的Controller。--直接拿了 package cn.larry.spring.controller;  import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.EnableAutoConfiguration; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.ResponseBody;  @Controller @EnableAutoConfiguration public class SampleController {      @RequestMapping("/")     @ResponseBody     String home() {         return "Hello World!";     }      public static void main(String[] args) throws Exception {         SpringApplication.run(SampleController.class, args);     } }
  这里有两个新东西: @EnableAutoConfiguration  和  SpringApplication  。
  @EnableAutoConfiguration  用于自动配置。简单的说,它会根据你的pom配置(实际上应该是根据具体的依赖)来判断这是一个什么应用,并创建相应的环境。
  在上面这个例子中, @EnableAutoConfiguration  会判断出这是一个web应用,所以会创建相应的web环境。
  SpringApplication  则是用于从main方法启动Spring应用的类。默认,它会执行以下步骤: 创建一个合适的ApplicationContext实例 (取决于classpath)。 注册一个CommandLinePropertySource,以便将命令行参数作为Spring properties。 刷新application context,加载所有单例beans。 激活所有CommandLineRunner beans。
  默认,直接使用 SpringApplication  的静态方法run()即可。但也可以创建实例,并自行配置需要的设置。
  具体的描述见javadoc即可,如下: Open Declaration org.springframework.boot.SpringApplication   Classes that can be used to bootstrap and launch a Spring application from a Java main method. By default class will perform the following steps to bootstrap your application:   Create an appropriate ApplicationContext instance (depending on your classpath)  Register a CommandLinePropertySource to expose command line arguments as Spring properties  Refresh the application context, loading all singleton beans  Trigger any CommandLineRunner beans  In most circumstances the static run(Object, String []) method can be called directly from your main method to bootstrap your application:   @Configuration  @EnableAutoConfiguration  public class MyApplication  {   // ... Bean definitions   public static void main(String[] args) throws Exception {    SpringApplication.run(MyApplication.class, args);  }   For more advanced configuration a SpringApplication instance can be created and customized before being run:    public static void main(String[] args) throws Exception {    SpringApplication app = new SpringApplication(MyApplication.class);    // ... customize app settings here    app.run(args)  }   SpringApplications can read beans from a variety of different sources. It is generally recommended that a single @Configuration class is used to bootstrap your application, however, any of the following sources can also be used:  Class - A Java class to be loaded by AnnotatedBeanDefinitionReader  Resource - An XML resource to be loaded by XmlBeanDefinitionReader, or a groovy script to be loaded by GroovyBeanDefinitionReader  Package - A Java package to be scanned by ClassPathBeanDefinitionScanner  CharSequence - A class name, resource handle or package name to loaded as appropriate. If the CharSequence cannot be resolved to class and does not resolve to a Resource that exists it will be considered a Package.
  ⑤ 现在,直接右键启动main方法即可。启动信息(包括关闭信息)如下: .   ____          _            __ _ _  / / ___"_ __ _ _(_)_ __  __ _     ( ( )___ | "_ | "_| | "_ / _` |      /  ___)| |_)| | | | | || (_| |  ) ) ) )   "  |____| .__|_| |_|_| |___, | / / / /  =========|_|==============|___/=/_/_/_/  :: Spring Boot ::        (v1.4.0.RELEASE)  2016-08-15 14:30:16.565  INFO 10652 --- [           main] c.l.spring.controller.SampleController   : Starting SampleController on Larry with PID 10652 (D:WorkspaceWorkspace_stslarry-spring-demo4	argetclasses started by Administrator in D:WorkspaceWorkspace_stslarry-spring-demo4) 2016-08-15 14:30:16.567  INFO 10652 --- [           main] c.l.spring.controller.SampleController   : No active profile set, falling back to default profiles: default 2016-08-15 14:30:16.596  INFO 10652 --- [           main] ationConfigEmbeddedWebApplicationContext : Refreshing org.springframework.boot.context.embedded.AnnotationConfigEmbeddedWebApplicationContext@4a94ee4: startup date [Mon Aug 15 14:30:16 CST 2016]; root of context hierarchy 2016-08-15 14:30:17.676  INFO 10652 --- [           main] s.b.c.e.t.TomcatEmbeddedServletContainer : Tomcat initialized with port(s): 8080 (http) 2016-08-15 14:30:17.687  INFO 10652 --- [           main] o.apache.catalina.core.StandardService   : Starting service Tomcat 2016-08-15 14:30:17.688  INFO 10652 --- [           main] org.apache.catalina.core.StandardEngine  : Starting Servlet Engine: Apache Tomcat/8.5.4 2016-08-15 14:30:17.767  INFO 10652 --- [ost-startStop-1] o.a.c.c.C.[Tomcat].[localhost].[/]       : Initializing Spring embedded WebApplicationContext 2016-08-15 14:30:17.767  INFO 10652 --- [ost-startStop-1] o.s.web.context.ContextLoader            : Root WebApplicationContext: initialization completed in 1173 ms 2016-08-15 14:30:17.928  INFO 10652 --- [ost-startStop-1] o.s.b.w.servlet.ServletRegistrationBean  : Mapping servlet: "dispatcherServlet" to [/] 2016-08-15 14:30:17.932  INFO 10652 --- [ost-startStop-1] o.s.b.w.servlet.FilterRegistrationBean   : Mapping filter: "characterEncodingFilter" to: [/*] 2016-08-15 14:30:17.933  INFO 10652 --- [ost-startStop-1] o.s.b.w.servlet.FilterRegistrationBean   : Mapping filter: "hiddenHttpMethodFilter" to: [/*] 2016-08-15 14:30:17.933  INFO 10652 --- [ost-startStop-1] o.s.b.w.servlet.FilterRegistrationBean   : Mapping filter: "httpPutFormContentFilter" to: [/*] 2016-08-15 14:30:17.933  INFO 10652 --- [ost-startStop-1] o.s.b.w.servlet.FilterRegistrationBean   : Mapping filter: "requestContextFilter" to: [/*] 2016-08-15 14:30:18.177  INFO 10652 --- [           main] s.w.s.m.m.a.RequestMappingHandlerAdapter : Looking for @ControllerAdvice: org.springframework.boot.context.embedded.AnnotationConfigEmbeddedWebApplicationContext@4a94ee4: startup date [Mon Aug 15 14:30:16 CST 2016]; root of context hierarchy 2016-08-15 14:30:18.230  INFO 10652 --- [           main] s.w.s.m.m.a.RequestMappingHandlerMapping : Mapped "{[/]}" onto java.lang.String cn.larry.spring.controller.SampleController.home() 2016-08-15 14:30:18.234  INFO 10652 --- [           main] s.w.s.m.m.a.RequestMappingHandlerMapping : Mapped "{[/error]}" onto public org.springframework.http.ResponseEntity> org.springframework.boot.autoconfigure.web.BasicErrorController.error(javax.servlet.http.HttpServletRequest) 2016-08-15 14:30:18.235  INFO 10652 --- [           main] s.w.s.m.m.a.RequestMappingHandlerMapping : Mapped "{[/error],produces=[text/html]}" onto public org.springframework.web.servlet.ModelAndView org.springframework.boot.autoconfigure.web.BasicErrorController.errorHtml(javax.servlet.http.HttpServletRequest,javax.servlet.http.HttpServletResponse) 2016-08-15 14:30:18.262  INFO 10652 --- [           main] o.s.w.s.handler.SimpleUrlHandlerMapping  : Mapped URL path [/webjars/**] onto handler of type [class org.springframework.web.servlet.resource.ResourceHttpRequestHandler] 2016-08-15 14:30:18.262  INFO 10652 --- [           main] o.s.w.s.handler.SimpleUrlHandlerMapping  : Mapped URL path [/**] onto handler of type [class org.springframework.web.servlet.resource.ResourceHttpRequestHandler] 2016-08-15 14:30:18.295  INFO 10652 --- [           main] o.s.w.s.handler.SimpleUrlHandlerMapping  : Mapped URL path [/**/favicon.ico] onto handler of type [class org.springframework.web.servlet.resource.ResourceHttpRequestHandler] 2016-08-15 14:30:18.423  INFO 10652 --- [           main] o.s.j.e.a.AnnotationMBeanExporter        : Registering beans for JMX exposure on startup 2016-08-15 14:30:18.480  INFO 10652 --- [           main] s.b.c.e.t.TomcatEmbeddedServletContainer : Tomcat started on port(s): 8080 (http) 2016-08-15 14:30:18.485  INFO 10652 --- [           main] c.l.spring.controller.SampleController   : Started SampleController in 2.209 seconds (JVM running for 2.642) 2016-08-15 14:30:23.564  INFO 10652 --- [nio-8080-exec-1] o.a.c.c.C.[Tomcat].[localhost].[/]       : Initializing Spring FrameworkServlet "dispatcherServlet" 2016-08-15 14:30:23.564  INFO 10652 --- [nio-8080-exec-1] o.s.web.servlet.DispatcherServlet        : FrameworkServlet "dispatcherServlet": initialization started 2016-08-15 14:30:23.574  INFO 10652 --- [nio-8080-exec-1] o.s.web.servlet.DispatcherServlet        : FrameworkServlet "dispatcherServlet": initialization completed in 10 ms 2016-08-15 14:30:32.002  INFO 10652 --- [2)-192.168.56.1] inMXBeanRegistrar$SpringApplicationAdmin : Application shutdown requested. 2016-08-15 14:30:32.003  INFO 10652 --- [2)-192.168.56.1] ationConfigEmbeddedWebApplicationContext : Closing org.springframework.boot.context.embedded.AnnotationConfigEmbeddedWebApplicationContext@4a94ee4: startup date [Mon Aug 15 14:30:16 CST 2016]; root of context hierarchy 2016-08-15 14:30:32.004  INFO 10652 --- [2)-192.168.56.1] o.s.j.e.a.AnnotationMBeanExporter        : Unregistering JMX-exposed beans on shutdown
  如果使用sts (Spring Tools Suite--没意外的话,后面的博客我会介绍一下),还可以用Spring Application的形式启动,信息不变,但是彩色的,如下:
  ⑥ 根据这个信息,我们可以看出很多东西,不过现在先访问一下吧。
  默认访问地址:  http://localhost:8080/
  按照之前的web项目习惯,你可能会问,怎么没有项目路径?
  这就是Spring Boot的默认设置了,将项目路径直接设为根路径。
  当然,我们也可以设置自己的项目路径 -- 在classpath下的 application.properties 或者 application.yaml 文件中设置即可。
  内容如下: # application.yaml # Server settings (ServerProperties) server:   port: 8080   address: 127.0.0.1   sessionTimeout: 30   contextPath: /aaa    # Tomcat specifics   tomcat:     accessLogEnabled: false     protocolHeader: x-forwarded-proto     remoteIpHeader: x-forwarded-for     basedir:     backgroundProcessorDelay: 30 # secs# application.properties # Server settings (ServerProperties) server.port=8080 server.address=127.0.0.1 #server.sessionTimeout=30 server.contextPath=/aaa  # Tomcat specifics #server.tomcat.accessLogEnabled=false server.tomcat.protocolHeader=x-forwarded-proto server.tomcat.remoteIpHeader=x-forwarded-for server.tomcat.basedir= server.tomcat.backgroundProcessorDelay=30
  上面,  server.contextPath=/aaa  就是设置了项目路径。所以现在需要访问 http://localhost:8080/aaa/ 才行。
  分析
  OK,当目前为止,已经成功运行并访问了一个 SpringMVC 应用。简单的不能再简单了!
  再来看一下启动时的信息: 第 9 行,启动SampleController。 第10行,查找active profile,无,设为default。 第11行,刷新上下文。 第12行,初始化tomcat,设置端口8080,设置访问方式为http。 第13行,启动tomcat服务。 第14行,启动Servlet引擎。 第15行,Spring内嵌的WebApplicationContext 初始化开始。 第16行,Spring内嵌的WebApplicationContext 初始化完成。 第17行,映射servlet,将 dispatcherServlet 映射到 [/] 。  第18行,映射filter,将 characterEncodingFilter 映射到 [/*] 。  第19行,映射filter,将 hiddenHttpMethodFilter 映射到 [/*] 。  第20行,映射filter,将 httpPutFormContentFilter 映射到 [/*] 。  第21行,映射filter,将 requestContextFilter 映射到 [/*] 。  第22行,查找 @ControllerAdvice。  第23行,映射路径 "{[/]}" 到 cn.larry.spring.controller.SampleController.home()。  第24行,映射路径 "{[/error]}" 到 org.springframework.boot.autoconfigure.web.BasicErrorController.error(javax.servlet.http.HttpServletRequest)。  第25行,映射路径 "{[/error],produces=[text/html]}" 到 org.springframework.web.servlet.ModelAndView org.springframework.boot.autoconfigure.web.BasicErrorController.errorHtml(javax.servlet.http.HttpServletRequest,javax.servlet.http.HttpServletResponse)。  第26行,略。 第27行,略。 第28行,略。 第29行,略。  第30行,tomcat启动完毕。  第31行,SampleController启动耗费的时间。  第32行,初始化 dispatcherServlet 。  第33行,dispatcherServlet 的初始化已启动。  第34行,dispatcherServlet 的初始化已完成。  第35行,收到shutdown关闭请求。  第36行,关闭AnnotationConfigEmbeddedWebApplicationContext。  第37行,略。
  从上面的启动信息中可以明显看到SpringMVC的加载过程,特别需要注意的是这种默认方式下加载的几个 filter 。
  所有的面试题目都不是一成不变的,特别是像一线大厂,上面的面试题只是给大家一个借鉴作用,最主要的是给自己增加知识的储备,有备无患。最后给大家分享Spring系列的学习笔记和面试题,包含spring面试题、spring cloud面试题、spring boot面试题、spring教程笔记、spring boot教程笔记、最新阿里巴巴开发手册(63页PDF总结)、2022年Java面试手册。一共整理了1184页PDF文档。私信博主(777)领取,祝大家更上一层楼!!!

桶装水抽水神器有了它,女生换水再也不用亲亲抱抱举高高了饮水机这货说方便也方便说不方便比如说换水的时候如果家里或办公室没有男人只能女汉子自己换桶装水了没有男朋友的单身狗表示这水桶是真的扛不动啊扛得动的就不光是女生对于老人来说搬水也不是件关于投资的感悟,不知道你懂了几条大家好,我是老李。今天和大家聊聊关于投资的感悟。主要是一些避免亏钱的感悟,希望对大家能有帮助。先搞明白什么是风险,再谈投资风险,是一种可能性,也就是说它可能会发生,并造成最后的回报全球大通胀真的要来了吗?大家好,我是老李。今天和大家聊聊全球大通胀。发达国家为了复苏本国的经济,肆无忌惮的大放水,印了大量钞票去全球买买买,为此买单的却是新兴经济体。新兴经济体却陷入两难境地,不加息的话货如何实现阶层的跃迁?钥匙就在我们每个人的心里大家好,我是老李。之前我们一直不是聊新闻时政,就是聊金融理念,今天我想和大家从新开始,从我们的内心开始说起。如今社会中一直有这么一种说法在当今这个社会向上走已经变得越来越难了。都在中烟追随APP产品AxureRP原型编号0192中烟追随APP产品AxureRP原型版权说明本站所有资料主要来源于网络的公开信息,都保留了原来的版权信息,本站所有的资料文档仅限用于学习交流,如若有侵权的嫌疑,请及时告产品追溯平台AxureRP原型编号0209产品追溯平台AxureRP原型版权说明本站所有资料主要来源于网络的公开信息,都保留了原来的版权信息,本站所有的资料文档仅限用于学习交流,如若有侵权的嫌疑,请及时告知进行油腻大叔vs品味男士!中间可能只差了一件Polo衫,质感好又实穿天气越来越热了,相信各位男士的夏日衣柜里,总少不了几件Polo衫,不管是休闲,还是在职场,Polo衫可以说是男士的基础必备之选一件好的POLO衫,能够充分展示出男人的魅力!POLO警惕!牙缝里长出臭烘烘的小石头!走哪都遭嫌弃牙白三分俏,貌美齿为先。长得好看的人,大多都有着亮白整洁的牙齿。微微一笑就甜美动人,轻轻松松迷倒众多宅男!如果一张嘴,牙齿又黑又黄的,咦难看死了!看起来还脏脏的,不想靠近!有的牙齿日本口碑人气足膜,让死皮无处藏身,穿什么凉鞋都好看现在正是盛夏露肤的季节,属于小背心小短裤和吊带裙的天下,辣妹们你们把美美的夏装都准备好了吗?美,就得从头到脚!一双纤纤玉足穿什么鞋都好看!绑带系带蝴蝶结,裸色方跟小高跟但是我们的脚比乒乓球还小的胶囊剃须刀,插上手机就能用,从此渣男变型男如果说女人的包包里少不了一支让整个人气色提起来的口红那么男人也应该有这么一支口红能够随身携带的剃须刀,让他能在胡子拉碴时,随手拿来整理仪容。毕竟你要是没有撑得起胡子的帅气脸庞和专业回头率200的移动电源BLOCK30!30W双向快充透明电路双向快充俗话说得好在家靠排插,出外靠移动电源。可以说,在这个95的工作社交和生活都得靠手机来维系的社会,少不了一个电量充沛的手机和移动电源!毕竟,电量低于90开始不自在,50进入焦躁,10
5GIoT智慧社区解决方案前言5G不仅是移动技术的升级换代,而且是AIoT时代的瑰宝级基础设施搭建,5G技术之上必须通过全链接的生态构建,切实赋能到多元化的实际业务场景中,其中智慧社区是5G产业链中重要的细AI迈向数据驱动型企业的下一步如今,大多数人都认识到成为数据驱动型企业的重要性,能够在需要时即时感知和响应业务事件。数据分析工具和平台为捕获事件并采取行动铺平了道路,但正如过去一年爆发的供应链问题所告诉我们的那能源领域物联网边缘计算的挑战和机遇物联网设备的增长使企业在数字化过程中能够且必须处理的数据量增加了数百万倍。为了提高处理效率,出现了一种非常强大的新计算模式边缘计算,它通过在边缘处理机器学习和人工智能算法来补充集中报告显示数据中心交换机供不应求DellOroGroup最近的一份报告显示,2021年第二季度全球数据中心交换机市场收入同比增长7,连续第二个季度实现收入增长。该分析公司最新的以太网交换机数据中心季度报告提供了市您真正需要了解的10个AI技术趋势人工智能技术趋势正在推动人类向前发展。数字化转型已遍及各个工业领域,人工智能正在实现科学家梦寐以求的事情。现在,人工智能和机器学习技术正被用于消费者每天接触的几个现实世界的应用程序物联网(IoT)互联网威胁(InternetofThreats)?byDAVIDHOWELL物联网预示着连接对象的新时代。随着工业4。0继续向智能家居和智慧城市发展,物联网创建的生态系统与制造业有着深远的影响,这些智能家居和智慧城市依赖于创建沉浸常识之上的便利智能家居设备的安全困境智能家居设备用于监控或控制我们家中的环境。这些技术奇迹通过处理温度照明娱乐系统和其他设备的变化,使生活更轻松。但是,虽然它们非常方便,但我们不能忽视它们的使用所造成的安全噩梦。那么FTTP使宽带市场在2021年第二季度继续增长DellOroGroup称,宽带网络设备支出同比增长7,至36亿美元。在其最新的宽带接入和家庭网络季度报告中,该市场研究公司指出PON光纤到户(FTTP)的推广持续强劲,以及电缆M报告全球智能家居市场将迎来强劲增长根据Omdia的最新报告,智能家居的发展超越了传统的零售渠道和应用,如安全,到新技术,从Matter到WiFi雷达传感和边缘系统集成到家庭和建筑,市场在未来几年将呈指数级增长。事实EtherWAN推出强化90WPoE媒体转换器EtherWANSystems本月推出了其最新的下一代网络产品,能够为远程设备提供90W以太网供电(PoE),同时保持千兆速度。EL2242BT是一款加固型媒体转换器,支持最新的I周朝阳自媒体越来越不好做了!为什么有人被处罚,被封号很多人说自媒体越来越不好搞,是的,其实自媒体看似没有门槛,人人都能注册,但是本质上门槛很高的,搞自媒体的人冲着名利去的,要搞到钱,要多加粉,要数据漂亮,这一切都涉及到运营。人刚进去