sprintboot依赖管理和自动配置

springboot依赖管理和自动配置

  • 依赖管理和自动配置
    • 依赖管理
      • 什么是依赖管理
      • 修改自动仲裁/默认版本号
    • starter场景启动器
      • starter场景启动器基本介绍
      • 官方提供的starter
      • 第三方starter
    • 自动配置
      • 自动配置基本介绍
      • SpringBoot自动配置了哪些?
      • 如何修改默认配置
        • 如何修改默认扫描包结构
        • resources\application.properties配置大全
        • resources\application.properties修改配置
        • resources\application.properties常用配置
        • resources\application.properties自定义配置
      • SpringBoot在哪配置读取application.properties
      • 自动配置遵守按需加载原则
        • 基本说明
        • 实例演示

在这里插入图片描述

依赖管理和自动配置

上文中, 我们学习的是springboot初步入门

打开quickstart项目

依赖管理

什么是依赖管理

1.spring-boot-starter-parent 还有父项目, 声明了开发中常用的版本号.

2.并且进行 自动版本仲裁, 即如果程序员没有指定某个依赖 jar 的版本, 则以父项目指定的版本为准.在这里插入图片描述
在这里插入图片描述

修改自动仲裁/默认版本号

1.需求说明: 将SpringBoot mysql驱动修改成 5.1.49

在这里插入图片描述

2.查看spring-boot-dependencies.pom里面规定的当前依赖 的版本 的对应的 key, 这里是 mysql.version在这里插入图片描述

3.修改quickstart/pom.xml, 重写配置, 当更新Maven时, 就依赖到新的mysql驱动. 一句话: 父项目不能动, 两种方案均是修改本项目的pom文件.

在这里插入图片描述

两种方案

方式1

<dependencies><!--我们自己指定mysql/驱动版本, 即修改版本仲裁1.方式1: 显示地导入mysql依赖, 并明确地指定version2.方式2: 在自己的pom.xml文件, 在<properties> 中指定mysql的key形如:<properties><mysql.version>5.1.49</mysql.version></properties>3.为什么可以达到修改版本仲裁: 根据依赖就近优先原则.--><dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId><version>5.1.49</version></dependency>
</dependencies>

方式2 在自己的pom.xml文件, 在<properties> 节点中指定mysql的key

<properties><maven.compiler.source>8</maven.compiler.source><maven.compiler.target>8</maven.compiler.target><project.build.sourceEncoding>UTF-8</project.build.sourceEncoding><!--这里我们可以指定mysql.version--><mysql.version>5.1.49</mysql.version>
</properties><dependencies><!--我们自己指定mysql/驱动版本, 即修改版本仲裁1.方式1: 显示地导入mysql依赖, 并明确地指定version2.方式2: 在自己的pom.xml文件, 在<properties> 中指定mysql的key形如:<properties><mysql.version>5.1.49</mysql.version></properties>3.为什么可以达到修改版本仲裁: 根据依赖就近优先原则.--><dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId></dependency>
</dependencies>

starter场景启动器

starter场景启动器基本介绍

1.开发中我们引入相关场景的starter, 这个场景中所有的相关依赖都引入进来了, 比如我们做web开发引入了spring-boot-starter-web, 该starter将导入与web开发相关的所有包.

在这里插入图片描述
在这里插入图片描述

2.依赖树: 可以看到 spring-boot-starter-web, 帮我们导入了spring-web, spring-webmvc开发模块, 还导入了tomcat的场景启动器spring-boot-starter-tomcat, spring-boot-starter-json场景, 这些场景下面又引出了一大堆相关的包, 这些依赖项可以快速启动和运行一个项目, 提高开发效率.

在这里插入图片描述在这里插入图片描述

3.所有场景启动器最基本的依赖就是spring-boot-starter, 前面的依赖树分析可以看到, 这个依赖也就是SpringBoot自动配置的核心依赖在这里插入图片描述

官方提供的starter

地址: https://docs.spring.io/spring-boot/docs/current/reference/html/using.html#using.build-systems.starters

介绍:
1.在开发中我们经常会用到spring-boot-starter-xxx, 比如spring-boot-starter-web, 该场景是用作web开发, 也就是说xxx是某种开发场景.

2.我们只需要引入starter, 这个场景的所有常规需要的依赖我们都自动引入.

3.SpringBoot2支持的所有场景如下:
在这里插入图片描述

第三方starter

1.SpringBoot也支持第三方starter

2.第三方starter不会从spring-boot开始, 因为这是官方spring-boot保留的命名方式. 第三方启动程序通常以项目名称开头. 例如, 名为 thirdpartyproject 的第三方启动程序项目通常被命名为 thirdpartyproject-spring-boot-starter.

3.也就是说: xxx-spring-boot-starter是第三方为我们提供的简化开发的场景启动器.

自动配置

自动配置基本介绍

1.小伙伴还记得否, 前面学习SSM整合时, 需要配置Tomcat, 配置SpringMVC, 配置如何扫描包, 配置字符过滤器, 配置视图解析器, 文件上传等, 非常麻烦[如图]. 而在SpringBoot中, 存在自动配置机制, 提高开发效率.

2.简单回顾以前SSM整合的配置.
在这里插入图片描述

SpringBoot自动配置了哪些?

1.自动配置Tomcat
在这里插入图片描述

2.自动配置SpringMVC
在这里插入图片描述

3.自动配置Web常用功能: 比如字符过滤器. 提示: 通过获取ioc容器, 查看容器创建的组件来验证
修改D:\idea_project\zzw_springboot\quickstart\src\main\java\com\zzw\springboot\MainApp.java

/*** @SpringBootApplication: 表示这是一个springboot引用/项目*/
@SpringBootApplication
public class MainApp {public static void main(String[] args) {//启动springboot应用程序/项目ApplicationContext ioc = SpringApplication.run(MainApp.class, args);//如何查看容器中注入的组件//① 打断点//② 写代码String[] beanDefinitionNames = ioc.getBeanDefinitionNames();for (String beanDefinitionName : beanDefinitionNames) {System.out.println("beanDefinitionName=" + beanDefinitionName);}}
}

beanDefinitionName=org.springframework.context.annotation.internalConfigurationAnnotationProcessor
beanDefinitionName=org.springframework.context.annotation.internalAutowiredAnnotationProcessor
beanDefinitionName=org.springframework.context.annotation.internalCommonAnnotationProcessor
beanDefinitionName=org.springframework.context.event.internalEventListenerProcessor
beanDefinitionName=org.springframework.context.event.internalEventListenerFactory
beanDefinitionName=mainApp
beanDefinitionName=org.springframework.boot.autoconfigure.internalCachingMetadataReaderFactory
beanDefinitionName=helloController 控制器
beanDefinitionName=org.springframework.boot.autoconfigure.AutoConfigurationPackages
beanDefinitionName=org.springframework.boot.autoconfigure.context.PropertyPlaceholderAutoConfiguration
beanDefinitionName=propertySourcesPlaceholderConfigurer
beanDefinitionName=org.springframework.boot.autoconfigure.websocket.servlet.WebSocketServletAutoConfiguration$TomcatWebSocketConfiguration
beanDefinitionName=websocketServletWebServerCustomizer
beanDefinitionName=org.springframework.boot.autoconfigure.websocket.servlet.WebSocketServletAutoConfiguration
beanDefinitionName=org.springframework.boot.autoconfigure.web.servlet.ServletWebServerFactoryConfiguration$EmbeddedTomcat
beanDefinitionName=tomcatServletWebServerFactory
beanDefinitionName=org.springframework.boot.autoconfigure.web.servlet.ServletWebServerFactoryAutoConfiguration
beanDefinitionName=servletWebServerFactoryCustomizer
beanDefinitionName=tomcatServletWebServerFactoryCustomizer
beanDefinitionName=org.springframework.boot.context.properties.ConfigurationPropertiesBindingPostProcessor
beanDefinitionName=org.springframework.boot.context.internalConfigurationPropertiesBinderFactory
beanDefinitionName=org.springframework.boot.context.internalConfigurationPropertiesBinder
beanDefinitionName=org.springframework.boot.context.properties.BoundConfigurationProperties
beanDefinitionName=org.springframework.boot.context.properties.EnableConfigurationPropertiesRegistrar.methodValidationExcludeFilter
beanDefinitionName=server-org.springframework.boot.autoconfigure.web.ServerProperties
beanDefinitionName=webServerFactoryCustomizerBeanPostProcessor
beanDefinitionName=errorPageRegistrarBeanPostProcessor
beanDefinitionName=org.springframework.boot.autoconfigure.web.servlet.DispatcherServletAutoConfiguration$DispatcherServletConfiguration
beanDefinitionName=dispatcherServlet 前端控制器
beanDefinitionName=spring.mvc-org.springframework.boot.autoconfigure.web.servlet.WebMvcProperties
beanDefinitionName=org.springframework.boot.autoconfigure.web.servlet.DispatcherServletAutoConfiguration$DispatcherServletRegistrationConfiguration
beanDefinitionName=dispatcherServletRegistration
beanDefinitionName=org.springframework.boot.autoconfigure.web.servlet.DispatcherServletAutoConfiguration
beanDefinitionName=org.springframework.boot.autoconfigure.task.TaskExecutionAutoConfiguration
beanDefinitionName=taskExecutorBuilder
beanDefinitionName=applicationTaskExecutor
beanDefinitionName=spring.task.execution-org.springframework.boot.autoconfigure.task.TaskExecutionProperties
beanDefinitionName=org.springframework.boot.autoconfigure.web.servlet.error.ErrorMvcAutoConfiguration$WhitelabelErrorViewConfiguration
beanDefinitionName=error
beanDefinitionName=beanNameViewResolver 自定义视图解析器
beanDefinitionName=org.springframework.boot.autoconfigure.web.servlet.error.ErrorMvcAutoConfiguration$DefaultErrorViewResolverConfiguration
beanDefinitionName=conventionErrorViewResolver
beanDefinitionName=spring.resources-org.springframework.boot.autoconfigure.web.ResourceProperties
beanDefinitionName=spring.web-org.springframework.boot.autoconfigure.web.WebProperties
beanDefinitionName=org.springframework.boot.autoconfigure.web.servlet.error.ErrorMvcAutoConfiguration
beanDefinitionName=errorAttributes
beanDefinitionName=basicErrorController
beanDefinitionName=errorPageCustomizer
beanDefinitionName=preserveErrorControllerTargetClassPostProcessor
beanDefinitionName=org.springframework.boot.autoconfigure.web.servlet.WebMvcAutoConfiguration$EnableWebMvcConfiguration
beanDefinitionName=requestMappingHandlerAdapter
beanDefinitionName=requestMappingHandlerMapping
beanDefinitionName=welcomePageHandlerMapping
beanDefinitionName=localeResolver
beanDefinitionName=themeResolver
beanDefinitionName=flashMapManager
beanDefinitionName=mvcConversionService
beanDefinitionName=mvcValidator
beanDefinitionName=mvcContentNegotiationManager
beanDefinitionName=mvcPatternParser
beanDefinitionName=mvcUrlPathHelper
beanDefinitionName=mvcPathMatcher
beanDefinitionName=viewControllerHandlerMapping
beanDefinitionName=beanNameHandlerMapping
beanDefinitionName=routerFunctionMapping
beanDefinitionName=resourceHandlerMapping
beanDefinitionName=mvcResourceUrlProvider
beanDefinitionName=defaultServletHandlerMapping
beanDefinitionName=handlerFunctionAdapter
beanDefinitionName=mvcUriComponentsContributor
beanDefinitionName=httpRequestHandlerAdapter
beanDefinitionName=simpleControllerHandlerAdapter
beanDefinitionName=handlerExceptionResolver
beanDefinitionName=mvcViewResolver
beanDefinitionName=mvcHandlerMappingIntrospector
beanDefinitionName=viewNameTranslator
beanDefinitionName=org.springframework.boot.autoconfigure.web.servlet.WebMvcAutoConfiguration$WebMvcAutoConfigurationAdapter
beanDefinitionName=defaultViewResolver
beanDefinitionName=viewResolver
beanDefinitionName=requestContextFilter
beanDefinitionName=org.springframework.boot.autoconfigure.web.servlet.WebMvcAutoConfiguration
beanDefinitionName=formContentFilter
beanDefinitionName=org.springframework.boot.autoconfigure.jmx.JmxAutoConfiguration
beanDefinitionName=mbeanExporter
beanDefinitionName=objectNamingStrategy
beanDefinitionName=mbeanServer
beanDefinitionName=org.springframework.boot.autoconfigure.admin.SpringApplicationAdminJmxAutoConfiguration
beanDefinitionName=springApplicationAdminRegistrar
beanDefinitionName=org.springframework.boot.autoconfigure.aop.AopAutoConfiguration$ClassProxyingConfiguration
beanDefinitionName=forceAutoProxyCreatorToUseClassProxying
beanDefinitionName=org.springframework.boot.autoconfigure.aop.AopAutoConfiguration
beanDefinitionName=org.springframework.boot.autoconfigure.availability.ApplicationAvailabilityAutoConfiguration
beanDefinitionName=applicationAvailability
beanDefinitionName=org.springframework.boot.autoconfigure.jackson.JacksonAutoConfiguration$Jackson2ObjectMapperBuilderCustomizerConfiguration
beanDefinitionName=standardJacksonObjectMapperBuilderCustomizer
beanDefinitionName=spring.jackson-org.springframework.boot.autoconfigure.jackson.JacksonProperties
beanDefinitionName=org.springframework.boot.autoconfigure.jackson.JacksonAutoConfiguration$JacksonObjectMapperBuilderConfiguration
beanDefinitionName=jacksonObjectMapperBuilder
beanDefinitionName=org.springframework.boot.autoconfigure.jackson.JacksonAutoConfiguration$ParameterNamesModuleConfiguration
beanDefinitionName=parameterNamesModule
beanDefinitionName=org.springframework.boot.autoconfigure.jackson.JacksonAutoConfiguration$JacksonObjectMapperConfiguration
beanDefinitionName=jacksonObjectMapper
beanDefinitionName=org.springframework.boot.autoconfigure.jackson.JacksonAutoConfiguration
beanDefinitionName=jsonComponentModule
beanDefinitionName=org.springframework.boot.autoconfigure.context.ConfigurationPropertiesAutoConfiguration
beanDefinitionName=org.springframework.boot.autoconfigure.context.LifecycleAutoConfiguration
beanDefinitionName=lifecycleProcessor
beanDefinitionName=spring.lifecycle-org.springframework.boot.autoconfigure.context.LifecycleProperties
beanDefinitionName=org.springframework.boot.autoconfigure.http.HttpMessageConvertersAutoConfiguration$StringHttpMessageConverterConfiguration
beanDefinitionName=stringHttpMessageConverter SpringMVC处理JSON
beanDefinitionName=org.springframework.boot.autoconfigure.http.JacksonHttpMessageConvertersConfiguration$MappingJackson2HttpMessageConverterConfiguration
beanDefinitionName=mappingJackson2HttpMessageConverter
beanDefinitionName=org.springframework.boot.autoconfigure.http.JacksonHttpMessageConvertersConfiguration
beanDefinitionName=org.springframework.boot.autoconfigure.http.HttpMessageConvertersAutoConfiguration
beanDefinitionName=messageConverters
beanDefinitionName=org.springframework.boot.autoconfigure.info.ProjectInfoAutoConfiguration
beanDefinitionName=spring.info-org.springframework.boot.autoconfigure.info.ProjectInfoProperties
beanDefinitionName=org.springframework.boot.autoconfigure.sql.init.SqlInitializationAutoConfiguration
beanDefinitionName=spring.sql.init-org.springframework.boot.autoconfigure.sql.init.SqlInitializationProperties
beanDefinitionName=org.springframework.boot.sql.init.dependency.DatabaseInitializationDependencyConfigurer$DependsOnDatabaseInitializationPostProcessor
beanDefinitionName=org.springframework.boot.autoconfigure.task.TaskSchedulingAutoConfiguration
beanDefinitionName=scheduledBeanLazyInitializationExcludeFilter
beanDefinitionName=taskSchedulerBuilder
beanDefinitionName=spring.task.scheduling-org.springframework.boot.autoconfigure.task.TaskSchedulingProperties
beanDefinitionName=org.springframework.boot.autoconfigure.web.client.RestTemplateAutoConfiguration
beanDefinitionName=restTemplateBuilderConfigurer
beanDefinitionName=restTemplateBuilder
beanDefinitionName=org.springframework.boot.autoconfigure.web.embedded.EmbeddedWebServerFactoryCustomizerAutoConfiguration$TomcatWebServerFactoryCustomizerConfiguration
beanDefinitionName=tomcatWebServerFactoryCustomizer
beanDefinitionName=org.springframework.boot.autoconfigure.web.embedded.EmbeddedWebServerFactoryCustomizerAutoConfiguration
beanDefinitionName=org.springframework.boot.autoconfigure.web.servlet.HttpEncodingAutoConfiguration
beanDefinitionName=characterEncodingFilter SpringMVC处理中文的过滤器
beanDefinitionName=localeCharsetMappingsCustomizer
beanDefinitionName=org.springframework.boot.autoconfigure.web.servlet.MultipartAutoConfiguration
beanDefinitionName=multipartConfigElement
beanDefinitionName=multipartResolver SpringMVC处理文件上传
beanDefinitionName=spring.servlet.multipart-org.springframework.boot.autoconfigure.web.servlet.MultipartProperties
beanDefinitionName=org.springframework.aop.config.internalAutoProxyCreator

在这里插入图片描述

4.自动配置: 默认扫描包结构.
官方文档: https://docs.spring.io/spring-boot/docs/current/reference/html/using.html#using.structuring-your-code.using-the-default-package
在这里插入图片描述

如何修改默认配置

如何修改默认扫描包结构

1.需求: 要求能扫描 com.zzw 包下的 HiController.java, 应该如何处理?

2.创建: D:\idea_project\zzw_springboot\quickstart\src\main\java\com\zzw\HiController.java, 并测试, 这时是访问不到的

@Controller
public class HiController {//返回hi,world@RequestMapping("/hi")@ResponseBodypublic String hello() {return "hi, world";}
}

3.修改MainApp.java, 增加扫描的包, 并完成测试.

/*** @SpringBootApplication: 表示这是一个springboot引用/项目* @SpringBootApplication(scanBasePackages = "com.zzw")* 解读: scanBasePackages = "com.zzw" 指定SpringBoot要扫描的包和子包* 如果有多个包, 可以这样指定: 用数组 scanBasePackages = {"com.zzw","xxx.yyy.zzz"}*/
@SpringBootApplication(scanBasePackages = "com.zzw")
public class MainApp {}

在这里插入图片描述
在这里插入图片描述

resources\application.properties配置大全

1.SpringBoot项目最重要也是最核心的配置文件就是application.properties, 所有的框架配置都可以在这个配置文件中说明.

2.地址: https://blog.csdn.net/pbrlovejava/article/details/82659702

resources\application.properties修改配置

各种配置都有默认, 可以在 resources\application.properties 修改, application.properties 文件我们 可以手动创建

手动输入如果没有提示, 安装插件
在这里插入图片描述

#修改server的监听端口
server.port=8081
#修改单个文件上传的大小. 默认是1MB, 修改成10MB
#让我们解读一下这个配置是在哪里读取的!
#multipart.max-file-size 属性可以指定springboot上传文件的大小限制-体现约定优于配置
#默认配置最终都是映射到某个类, 比如multipart.max-file-size 会映射/关联到 MultipartProperties 类
#把光标放在该属性, 输入ctrl+b, 就可以定位这个属性是关联到哪个类(属性类)
spring.servlet.multipart.max-file-size=10MB

在这里插入图片描述

在这里插入图片描述

resources\application.properties常用配置

●常用配置一览

#端口号
server.port=10000
#应用的上下文路径(项目路径)
server.servlet.context-path=/allModel#指定POJO扫描包来让mybatis自动扫描到自定义的POJO
mybatis.type-aliases-package=com.cxs.allmodel.model#指定mapper.xml的路径
#(application上配置了@MapperScan(扫面mapper类的路径)和pom.xml中放行了mapper.xml后,
#配置mapper-locations没有意义。如果mapper类和mapper.xml不在同一个路径下时,mapper-locations就有用
了)
mybatis.mapper-locations=classpath:com/cxs/allmodel/mapper#session失效时间(单位s)
spring.session.timeout=18000#数据库连接配置
#mysql数据库url
mysql.one.jdbc-url=jdbc:mysql://127.0.0.1:3306/test?serverTimezone=Asia/shanghai&usessL=false
#mysql数据库用户名
mysql.one.username
#数据库密码
mysql.one.password=
#线程池允许的最大连接数
mysgl.one.maximum-pool-size=15#日志打印:日志级别 trace<debug<info<warn<error<fatal默认级别为info,即默认打印info及其以上级别的日志
#logging.evel设置日志级别,后面跟生效的区域,比如root表示整个项目,也可以设置为某个包下,也可以具体到某个类名(日志级别的值不区分大小写)
logging.level.com.cxs.allmodel.=debug
logging.level.com.cxs.allmodel.mapper=debug
logging.level.org.springframework.web=info
logging.level.org.springframeworktransaction=info
logging.level.org.apache.lbatis=info
logging.level.org:mybatis=info
logging.level.com.github.pagehelper = info
logging.level.root=info
#日志输出路径
logging.file=/tmp/api/allmodel.log#配置pagehelper分页插件
pagehelper.helperDialect=mysql
pagehelper.reasonable=true
pagehelper.supportMethodsArguments=true
pagehelper.params=count=countSql#jackson时间格式化
spring.jackson.serialization.fail-on-empty-beans=false
#指定日期格式,比如yyyy-MM-dd HH:mm:ss,或者具体的格式化类的全限定名
spring.jackson.date-format=yyyy-MM-dd HH:mm:ss
#指定日期格式化时区,比如America/Los_Angeles或各GMT+10
spring.jackson.time-zone=GMT+8#设置统一字符集
spring.http.encoding.charset=utf8#redis连接配置
#redis所在主机ip地址
spring.redis.host=
#redis服务器密码
spring.redis.password=
#redis服务器端口号
spring.redis.port=
#redis数据库的索引编号(0到15)
spring.redis.database=14
##连接池的最大活动连接数量,使用负值无限制
#spring.redis.pool.max-active=8
#
##连接池的最大空闲连接数量,使用负值表示无限数量的空闲连接
#spring.redis.pool.max-idle=8
#
##连接池最大阻塞等待时间,使用负值表示没有限制
#spring.redis.pool.max-wait=-1ms
#
##最小空闲连接数量,使用正值才有效果
#spring.redis.pool.min-idle=0
#
## 是否启用SSL连接.
##spring.redis.ssl=false
#
##连接超时,毫秒为单位
#spring.redis.timeout= 18000ms
#
## 集群模式下,集群最大转发的数量
#spring.redis.cluster.max-redirects=
#
## 集群模式下,逗号分隔的键值对(主机:端口)形式的服务器列表
#spring.redis.cluster.nodes=
#
## 哨兵模式下,Redis主服务器地址
#spring.redis.sentinel.master=
#
## 哨兵模式下,逗号分隔的键值对(主机:端口)形式的服务器列表
#spring.redis.sentinel.nodes= 127.0.0.1:5050,127.0.0.1:5060
resources\application.properties自定义配置

●还可以在properties文件中自定义配置, 通过 @Value(“${}”) 获取对应属性值.

#自定义配置属性
my.webSite=https://www.baidu.com
@Controller
public class HiController {//需求: webSite 属性值从 application.properties 的k-v获取//当HiController作为一个bean被创建时, webSite属性值被赋值@Value("${my.webSite}")private String webSite;//返回hi,world@RequestMapping("/hi")@ResponseBodypublic String hello() {System.out.println("webSite = " + webSite);return "hi, world";}
}

SpringBoot在哪配置读取application.properties

1.打开 ConfigFileApplicationListener.java, 看一下源码

file:./config/*/ ⇒ 表示 项目根目录/config/a目录下

在这里插入图片描述

自动配置遵守按需加载原则

基本说明

1.自动配置遵守按需加载原则: 也就是说, 引入了哪个场景starter就会加载该场景关联的jar包, 没有引入的starter, 则不会加载其关联jar
在这里插入图片描述

2.SpringBoot所有的自动配置功能都在 spring-boot-autoconfigure 包里面
在这里插入图片描述

3.在SpringBoot的自动配置包, 一般是XxxAutoConfiguration.java, 对应XxxProperties.java, 如图
XxxAutoConfiguration.java 包含 XxxProperties.java
在这里插入图片描述

实例演示

1.以 application.properties, MultipartProperties 和 MultipartAutoConfiguration 来说明. SpringBoot在创建MultipartProperties bean时,会去读取application.properties文件, 将数据封装,这个Bean会被注入关联的MultipartAutoConfiguration Bean里面。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

接下来, 我们将学习 springboot容器功能

在这里插入图片描述

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

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

相关文章

深入解析 iOS 应用启动过程:main() 函数前的四大步骤

深入解析 iOS 应用启动过程&#xff1a;main() 函数前的四大步骤 背景描述&#xff1a;使用 Objective-C 开发的 iOS 或者 MacOS 应用 在开发 iOS 应用时&#xff0c;我们通常会关注 main() 函数及其之后的执行逻辑&#xff0c;但在 main() 函数之前&#xff0c;系统已经为我们…

创建最基本的web服务器-http模块

在Node.js中&#xff0c;可以使用内置的http模块来创建一个最基本的web服务器。以下是一个简单的示例&#xff0c;它创建了一个HTTP服务器&#xff0c;该服务器监听一个端口&#xff0c;并在接收到请求时发送一个“Hello, World!”的响应。 // 引入http模块 const http requi…

leetcode 二分查找·系统掌握 寻找比目标字母大的最小字母

题目&#xff1a; 给你一个字符数组 letters&#xff0c;该数组按非递减顺序排序&#xff0c;以及一个字符 target。letters 里至少有两个不同的字符。 返回 letters 中大于 target 的最小的字符。如果不存在这样的字符&#xff0c;则返回 letters 的第一个字符。 题解&…

C++及cmake语法介绍

c/cmake学习 文章目录 c/cmake学习1. c1.1 基本模型1.1.1 for循环1.1.2 main函数1.1.2 带参数函数编译函数 2. CMAKE2.1 相关命令2.1.1 编译基本命令2.1.2 动态库静态库编译2.1.3 消息输出2.1.4 cmake变量常见参数1. 设置构建类型2. 设置编译器标志3. 指定编译器4. 设置安装路径…

机器学习_PCA

目录 一、概念 二、原理 三、步骤 四、实战 1、数据处理——转rgb为灰度图像 2、手动实现pca降维 3、查看信息保留数量 4、调用第三方库实现pca降维 五、小结 引入&#xff1a; 当说黄河五路和渤海三路交叉口的时候&#xff0c;这些路就类似于我们说的坐标系。而城市中的…

高等数学笔记(三):导数

一、导数概念 1.1 导数的定义 1.1.1 函数在一点处的导数与导函数 1.1.2 单侧导数 1.2 导数的几何意义 1.3 函数可导性与连续性的关系 二、函数的求导法则 2.1 函数的和、差、积、商的求导法则 2.2 反函数的求导法则 2.3 复合函数的求导法则 2.4 基本求导法则与导数公式 三…

read code and make summer (python)

read code and make summer ==标题==:语法==标题==:类的定义==标题==:继承==标题==:多态==标题==:__all__ = [create_dataset, create_dataloader]==标题==:yield==标题==: f-string(格式化字符串)==标题==:getattr()==标题==:logging==标题==:seed==标题==:slice…

必看!!! 2024 最新 PG 硬核干货大盘点(上)

PGConf.dev&#xff08;原名PGCon&#xff0c;从2007年至2023年&#xff09;首次在风景如画的加拿大温哥华市举办。此次重新定位的会议带来了全新的视角和多项新的内容&#xff0c;参会体验再次升级。尽管 PGCon 历来更侧重于开发者&#xff0c;吸引来自世界各地的资深开发者、…

Nginx常用配置、反向代理

目录 1. 常用配置 基本设置 HTTP配置 虚拟主机配置 2. 高级配置 反向代理配置 SSL/TLS配置 负载均衡配置 1. 常用配置 基本设置 user nginx; worker_processes auto; error_log /var/log/nginx/error.log warn; pid /var/run/nginx.pid;user nginx;: 指定Nginx worker…

深入理解并打败C语言难关之一————指针(5)(最终篇)

前言&#xff1a; 仔细一想&#xff0c;小编已经把指针的大部分内容都说了一遍了&#xff0c;小编目前有点灵感枯竭了&#xff0c;今天决定就结束指针这一大山&#xff0c;可能很多小编并没有提到过&#xff0c;如果有些没说的小编会在后续博客进行补充道&#xff0c;不多废话了…

服务器数据恢复—NTFS文件系统下双循环riad5数据恢复案例

服务器存储数据恢复环境&#xff1a; EMC CX4-480存储&#xff0c;该存储中有10块硬盘&#xff0c;其中有3块磁盘为掉线磁盘&#xff0c;另外7块磁盘组成一组RAID5磁盘阵列。运维人员在处理掉线磁盘时只添加新的硬盘做rebuild&#xff0c;并没有将掉线的硬盘拔掉&#xff0c;所…

ARCGIS 如何对河流等线条图形进行Smooth处理——具有多个断点高阶版

1.线转点折点&#xff08;注意&#xff01;很重要&#xff0c;不是线转点&#xff09; 2.点转线步骤 ## 3 线的融合 2.1 新建Filed 》短精度类型》利用选择工具的 线文件。全选同一条河流点&#xff0c;进入Tabel的选择界面。给同一条河赋值同一个值。 大功告成&#xff01;…

文章解读与仿真程序复现思路——电网技术EI\CSCD\北大核心《计及多类型储能调频容量动态申报的电能量与调频市场联合出清方法研究》

本专栏栏目提供文章与程序复现思路&#xff0c;具体已有的论文与论文源程序可翻阅本博主免费的专栏栏目《论文与完整程序》 论文与完整源程序_电网论文源程序的博客-CSDN博客https://blog.csdn.net/liang674027206/category_12531414.html 电网论文源程序-CSDN博客电网论文源…

深入探究RTOS的任务调度

阅读引言&#xff1a; 此文将会从一个工程文件&#xff0c; 一步一步的分析RTOS的任务调度实现&#xff0c; 这里选用FreeRTOS分析&#xff0c; 别的也差不多的&#xff0c; 可能在细节上有少许不一样。 目录 1&#xff0c; 常见嵌入式实时操作系统 2&#xff0c; 任务调度的…

HDFS 面试题(一)

1. 简述什么是HDFS&#xff0c;以及HDFS作用 &#xff1f; HDFS&#xff0c;全称为Hadoop Distributed File System&#xff0c;即Hadoop分布式文件系统&#xff0c;是一个分布式文件系统&#xff0c;由Apache Hadoop项目的一部分。它被设计用来在廉价的硬件上运行&#xff0c…

练习题-18 计算两个积分

计算积分 I ∫ R e − t 4 d t . I\int_{\mathbb{R}} e^{-t^4} dt. I∫R​e−t4dt. 解&#xff1a;令 x t 4 xt^4 xt4. 则 I 2 ∫ 0 ∞ e − x ⋅ 1 4 ⋅ x − 3 / 4 d x 1 2 Γ ( 1 4 ) I 2\int_0^\infty e^{-x} \cdot \frac{1}{4}\cdot x^{-3/4} dx\frac{1}{2} \Gamma(…

SQLite Delete 语句

SQLite Delete 语句 SQLite 的 DELETE 语句用于从表中删除数据。它是 SQL 数据库管理中非常基础且重要的操作之一。在使用 DELETE 语句时&#xff0c;可以删除表中的特定行&#xff0c;也可以删除整个表的数据。本文将详细介绍 SQLite 中的 DELETE 语句&#xff0c;包括其语法…

【机器学习】第11章 神经网络与深度学习(重中之重)

一、概念 1.神经元模型 &#xff08;1&#xff09;神经网络的基本组成单位 &#xff08;2&#xff09;生物上&#xff0c;每个神经元通过树突接受来自其他被激活神经元的信息&#xff0c;通过轴突释放出来的化学递质改变当前神经元内的电位。当神经元内的电位累计到一个水平时…

Linux虚拟化技术概览:从KVM到Docker

Linux虚拟化技术是现代数据中心和云基础设施的核心组成部分&#xff0c;它允许在同一台物理服务器上运行多个独立的操作系统实例&#xff0c;从而提高资源利用率、灵活性和安全性。从KVM到Docker&#xff0c;Linux虚拟化经历了从传统虚拟机到轻量级容器的演进&#xff0c;下面是…

时间戳转时间格式小记——个位数月份 如何去掉补位0的情况

工作中遇到的问题小记一下 时间戳&#xff1a;1710172800 时间格式&#xff1a;2024-03-12 00:00:00 在无要求的情况下这种情况很OK 当我们需要时间格式为&#xff1a;2024-3-12 00:00:00 那常规情况就不适用 解决&#xff1a; import time sjc 1710172800 # Windows 环境…