SpringBoot核心

1.基本配置

1.1入口类和@SrpingBootApplication

SpringBoot通常有一个名为*Application的入口类,入口类里有一个main方法,这个main方法就是一个标准的java应用的入口方法

。在main方法中使用SpringApplication.run,启动springboot项目。

其中@EnablieAutoConfiguration让springboot根据类路径中的jar包依赖为当前项目进行自动配置。例如,添加了spring-boot-starter

-web依赖,会自动添加tomcat和springMVC的依赖,那么springboot会对Tomcat和springMVC进行自动配置。又如,添加了

srping-boot-starter-data-jpa依赖,springboot会自动进行JPA的相关配置。

Springboot会自动扫描@SpringBootApplication所在类的同级包以及下级包里的Bean,建议入口类位置在groupId+arctifactID组合的包名i下。

 

1.2关闭特定的自动配置

 

关闭特定的自动配置应该使用@srpingBootApplication注解的exclude参数。

 

 1.3关闭banner

将main里的内容修改为

 

 1.4SpringBoot的配置文件

SpringBoot使用一个全局的配置文件application.properties。放置在src/main/resource目录或者类路径的/config下。

 SpringBoot的全局配置文件的作用是对一些默认配置的配置进行一些修改。

将Tomcat的默认端口号8080修改为9090,并将默认访问路径“/”修改为“/helloboot”

 

 1.5starter pom

springBoot为我们提供了简化企业级开发绝大数场景的start pom,只要使用了应用场景所需要的start pom,相关的技术配置就会消除

就可以通过Springboot得到自动配置的Bean。

官方 starter pom

 

 

 还有一些第三方的start pom。

 

1.6使用xml配置

springboot提倡零配置,即无xml配置,但在实际项目中,可能有一些特殊要求必须使用xml配置。可以通过Spring提供的@ImportResource

注解来加载xml配置。

 

 2.外部配置

 2.1命令行参数配置

springboot可以是基于jar包运行的,打成jar包的程序可以直接通过如下命令运行java -jar xx.jar可以通过以下命令修改Tomcat端口号:java -jar xx.jar --server.port=9090

 

 2.2常用的属性配置

(1)application.properties增加属性

 

 2.3类型安全的配置(基于properties)

上列中使用@value注入每个配置在实际项目中会显得格外麻烦,因为我们的配置通常会是很多个

springboot还提供了基于类型安全的配置通过@configurationProperties将properties属性和一个Bean及其属性关联。

 

 

 

 

 

3.日志配置

 springboot支持java Util Logging,log4j,log4j2和logback作为日志框架。无论使用哪种日志框架,springBoot已经为当前使用日志框架

控制台输出和文件输出做好了配置。

默认情况下,springboot使用logback作为日志框架。

配置的日志级别为:

 

 4.Profile配置

 

 

 

 目录结构

 

 

 

5. Springboot的运行原理

 springboot关于自动配置的源码在spring-boot-autoconfigure中

 

可以在这里查看源码

 可以通过以下方式来产看当前项目汇总已启用或未启用的自动配置的报告。

在application.properies中设置属性:

debug=true

此时启动时可以在控制台中输出:

已启用的自动配置为:

 

5.1运行原理

 关于springboot的运行原理,我们还是回归到@srpingBootApplication注解上来,这个注解是一个组合注解

它的核心功能是@EnableAutoConfiguration注解提供的。

  下面我们来看下@EnableAutoConfiguration注解的源码:

 

 这里的关键功能是@import注解导入的配置功能,EnableAutoConfiggurationImportSelect使用

SpringFactoriesLoader。loadFactoryNames方法来扫描具有META-INF/spring.factories文件的jar

包,而我们的spring-boot-autoconfigure-1.3.0.xjar里就一个spring.factories文件。在此文件里声明了有哪些

自动配置。

 

5.2核心注解

打开上面人一个一个AutoConfiguration文件,一般都有下面的条件注解

 

 

 

 

 

转载于:https://www.cnblogs.com/duan2/p/9220338.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/485770.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

grpc简单使用 java_gRPC学习记录(四)-官方Demo - Java 技术驿站-Java 技术驿站

了解proto3后,接下来看官方Demo作为训练,这里建议看一遍之后自己动手搭建出来,一方面巩固之前的知识,一方面是对整个流程更加熟悉.官方Demo地址: https://github.com/grpc/grpc-java例子是一个简单的路由映射的应用,它允许客户端获取路由特性的信息,生成…

冯端:漫谈物理学的过去、现在与未来

来源: 算法与数学之美撰文: 冯端 (南京大学物理系)“物理学的过去、现在和未来”是一个非常大而且重要的题目,也是一个非常难讲的题目,特别是涉及物理学的未来,结果往往是贻笑大方。这里以历史的透视为主线&#xff0c…

Leetcode--713. 乘积小于k的子数组

给定一个正整数数组 nums。 找出该数组内乘积小于 k 的连续的子数组的个数。 示例 1: 输入: nums [10,5,2,6], k 100 输出: 8 解释: 8个乘积小于100的子数组分别为: [10], [5], [2], [6], [10,5], [5,2], [2,6], [5,2,6]。 需要注意的是 [10,5,2] 并不是乘积小于100的子数…

第四次博客

第四次博客 一、测试与正确性论证的比较 测试具有针对性,能从一些方面完美的展现出代码的正确性,但是它的验证度取决于样例的质量。 优点是方便,快捷,结果明显;缺点是可能不会覆盖到方方面面。 正确性论证能从所有的方…

院士论坛|李德仁:测绘遥感能为智能驾驶做什么? ——论测绘遥感与智能驾驶

来源: 中国测绘学会未来智能实验室的主要工作包括:建立AI智能系统智商评测体系,开展世界人工智能智商评测;开展互联网(城市)云脑研究计划,构建互联网(城市)云脑技术和企业…

java 每行打印五个数字_java代码练习======每隔5行打印数字

总结&#xff1a;当我们感觉数字排列横排&#xff0c;竖排不好看的时候&#xff0c;学会空几行在排列&#xff0c;哎呦&#xff0c;效果不错喔package com.aa;public class West2 {public static void main(String[] args) {int count 0;for (int i 0; i < 100; i) {// 每…

Leetcode--455. 分发饼干

假设你是一位很棒的家长&#xff0c;想要给你的孩子们一些小饼干。但是&#xff0c;每个孩子最多只能给一块饼干。对每个孩子 i &#xff0c;都有一个胃口值 gi &#xff0c;这是能让孩子们满足胃口的饼干的最小尺寸&#xff1b;并且每块饼干 j &#xff0c;都有一个尺寸 sj 。…

Spring Boot-springbootHelloword(一)

什么是springboot sprng家族一个全新的框架 简化我们应用程序的创建和开发的过程&#xff0c;使用默认配置简化了我们以前传统的配置 springboot的特性 能够快速创建spring程序能够使用java main方法启动内嵌的 tomcat 或者jetty服务器运行spring boot程序提供约定的starter p…

java实践项目_Java项目开发实践

第章项目开发基础()项目开发实训目标()实训知识目标()实训能力目标()实训素质目标()项目开发技术()图形用户界面编程技术()输入输出编程技术()网络编程技术()数据结构编程技术()绘图编程技术()数据库编程技术()本书各项目采用技术()项目开发工具()开发工具包()数据库系统()()()…

Leetcode--134. 加油站

在一条环路上有 N 个加油站&#xff0c;其中第 i 个加油站有汽油 gas[i] 升。 你有一辆油箱容量无限的的汽车&#xff0c;从第 i 个加油站开往第 i1 个加油站需要消耗汽油 cost[i] 升。你从其中的一个加油站出发&#xff0c;开始时油箱为空。 如果你可以绕环路行驶一周&#…

原创工作发表难之叶公好龙

来源&#xff1a;张志东科学网博客链接地址&#xff1a;http://blog.sciencenet.cn/blog-2344-1265601.html 最近&#xff0c;科学网上一个热点话题是原创工作发表难不难&#xff1f;以真傻为代表的认为原创工作发表难&#xff0c;以王立新为代表的认为原创工作发表不难。那么&…

RSA 前段加密 java 后台解密 已调试通过

本人整理网上的。好多网上的调不通。在这里把调试好的贴出来。 1. 异步获取公钥&#xff08;后台获取&#xff09;&#xff1b;你也可以将公钥串写在页面上&#xff1b; var publicKey null; $.ajax({ url: ctx"/userLogin.do?methodgetRSAPublicKey", &#xf…

java字符的输入流_Java:字节流和字符流(输入流和输出流)

InputStream是抽象基类&#xff0c;所以它不可以创建对象&#xff0c;但它可以用来“接口化编程”&#xff0c;因为大部分子类的函数基类都有定义&#xff0c;所以利用基类来调用函数。FileInputStream是用来读文件数据的流&#xff0c;所以它需要一个文件对象用来实例化&#…

Leetcode--881. 救生艇

第 i 个人的体重为 people[i]&#xff0c;每艘船可以承载的最大重量为 limit。 每艘船最多可同时载两人&#xff0c;但条件是这些人的重量之和最多为 limit。 返回载到每一个人所需的最小船数。(保证每个人都能被船载)。 示例 1&#xff1a; 输入&#xff1a;people [1,2],…

任正非内部重磅发言:华为不可能简单学阿里、亚马逊

来源&#xff1a;券商中国辞旧迎新之际&#xff0c;华为创始人任正非此前在华为企业业务及云业务汇报会上的发言于华为心声社区曝光。任正非指出&#xff0c;华为企业业务要聚焦战略重点&#xff0c;继续做减法&#xff0c;收缩企业业务做战线&#xff0c;认真弄清楚做作战模型…

日报 18/06/25 26

io流 available public int available()throws IOException 返回从该输入流中可以读取&#xff08;或跳过&#xff09;的字节数的估计值&#xff0c;而不会被下一次调用此输入流的方法阻塞。 下一个调用可能是同一个线程或另一个线程。 这个多个字节的单个读取或跳过将不会被阻…

java8 迭代set集合_JavaSE(八)集合之Set

2.2、HashSet特点不能保证元素的排列顺序&#xff0c;顺序可能和添加的顺序不同&#xff0c;顺序也有可能发生变化。HashSetf不是同步的&#xff0c;如果多个线程同时来访问一个 HashSet&#xff0c;假设有两个或者两个以上线程同时修改了HashSet 集合时&#xff0c;则必须通过…

AI 发展方向大争论:混合AI ?强化学习 ?将实际知识和常识整合到AI中 ?

一个仿人机器人的延伸手。机器人常常使用强化学习来加以训练来源&#xff1a;云头条作者&#xff1a;Ben Dickson是一名软件工程师&#xff0c;还是探讨技术在如何解决和带来问题的TechTalks博客的创始人。2010年代对于AI界来说意义重大&#xff0c;这归功于深度学习领域取得了…

Leetcode--621. 任务调度器

给定一个用字符数组表示的 CPU 需要执行的任务列表。其中包含使用大写的 A - Z 字母表示的26 种不同种类的任务。任务可以以任意顺序执行&#xff0c;并且每个任务都可以在 1 个单位时间内执行完。CPU 在任何一个单位时间内都可以执行一个任务&#xff0c;或者在待命状态。 然…

吴恩达:2020 年,这些 AI 大事件让我无法忘怀...

作者&#xff1a;吴恩达编译&#xff1a;陈大鑫、贝爽编辑&#xff1a;青暮转自&#xff1a;AI科技评论日前&#xff0c;吴恩达在圣诞节之际回顾了2020年AI的一些重大事件&#xff0c;包括AI应对新冠疫情、数据集存在种族偏见、对抗虚假信息算法、AlphaFold预测蛋白质三维结构、…