当前位置: 首页 > news >正文

宜昌视频网站建设safari浏览器下载

宜昌视频网站建设,safari浏览器下载,防wordpress花园,谷歌搜索引擎入口2022如果创建新的 Springboot 项目,目录结构类似于下图。 目录规范来自构建工具 maven/gradle,而不是 Spring 框架。 图片来自《Springboot 实战第 4 版》 SpringBootApplication 注解的类是应用程序启动类,实现两个功能:自动配置&a…

如果创建新的 Springboot 项目,目录结构类似于下图。
目录规范来自构建工具 maven/gradle,而不是 Spring 框架。
在这里插入图片描述
图片来自《Springboot 实战第 4 版》

@SpringBootApplication 注解的类是应用程序启动类,实现两个功能:自动配置,启动引导。

@SpringBootApplication 注解由以下三个注解组成。
@EnableAutoConfiguration:启动自动配置。
@ComponentScan:启动组件扫描。
@SpringBootConfiguration:表示是配置类。

main 方法启动程序。

@SpringBootApplication
public class MyApplication {public static void main(String[] args) {SpringApplication.run(MyApplication.class, args);}
}

起步依赖

Springboot starter 定义好组件和配置文件。用户引用依赖即可使用功能,无需管理依赖,无需担心版本,无需配置参数。比如 spring-boot-starter-web 依赖可以让用户快速搭建 web 服务。

        <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency>

spring-boot-starter-web 依赖包含 spring-boot-starter,spring-boot-starter 依赖 spring-boot-autoconfigure。正是 spring-boot-autoconfigure 实现自动配置。

spring-boot-autoconfigure

META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports文件中定义 Springboot 提供的自动配置类。文件每一行是一个自动配置类,类名后缀均是 AutoConfiguration。Springboot 程序启动时会尝试自动加载所有配置类 bean。

org.springframework.boot.autoconfigure.web.servlet.DispatcherServletAutoConfiguration自动配置类向 IOC 容器注册名为 dispatcherServlet 的 bean。

package org.springframework.boot.autoconfigure.web.servlet;
@AutoConfigureOrder(Ordered.HIGHEST_PRECEDENCE) // 最高优先级
@AutoConfiguration(after = ServletWebServerFactoryAutoConfiguration.class) // 在 ServletWebServerFactoryAutoConfiguration 之后执行,确保环境就绪
@ConditionalOnWebApplication(type = Type.SERVLET) // 仅在应用是 servlet web 应用生效
@ConditionalOnClass(DispatcherServlet.class) // 要求 JVM 能够加载 DispatcherServlet 类,向容器注册 bean
public class DispatcherServletAutoConfiguration {@Configuration(proxyBeanMethods = false) // 配置类@Conditional(DefaultDispatcherServletCondition.class) // 确保不存在其他 dispatcherServlet 实例,避免重复注册@ConditionalOnClass(ServletRegistration.class) // 要求 JVM 能够加载 ServletRegistration 类,向容器注册 bean@EnableConfigurationProperties(WebMvcProperties.class) // 启动配置属性绑定,将配置文件中 spring.mvc 前缀的属性注入到 webMvcProperties 对象protected static class DispatcherServletConfiguration {@Bean(name = DEFAULT_DISPATCHER_SERVLET_BEAN_NAME)public DispatcherServlet dispatcherServlet(WebMvcProperties webMvcProperties) {DispatcherServlet dispatcherServlet = new DispatcherServlet();dispatcherServlet.setDispatchOptionsRequest(webMvcProperties.isDispatchOptionsRequest());dispatcherServlet.setDispatchTraceRequest(webMvcProperties.isDispatchTraceRequest());configureThrowExceptionIfNoHandlerFound(webMvcProperties, dispatcherServlet);dispatcherServlet.setPublishEvents(webMvcProperties.isPublishRequestHandledEvents());dispatcherServlet.setEnableLoggingRequestDetails(webMvcProperties.isLogRequestDetails());return dispatcherServlet;}
}

三方包 starter

mybatis-plus-boot-starter分享三方包 starter。starter 引入Springboot 的 spring-boot-autoconfigure 和 自己定义的 mybatis-plus-spring-boot-autoconfigure。

    <dependency><groupId>com.baomidou</groupId><artifactId>mybatis-plus-spring-boot-autoconfigure</artifactId><version>3.5.4.1</version><scope>compile</scope></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-autoconfigure</artifactId><scope>compile</scope></dependency>

在 mybatis-plus-spring-boot-autoconfigure 包的META-INF\spring\org.springframework.boot.autoconfigure.AutoConfiguration.imports定义自动配置类。

com.baomidou.mybatisplus.autoconfigure.MybatisPlusInnerInterceptorAutoConfiguration
com.baomidou.mybatisplus.autoconfigure.IdentifierGeneratorAutoConfiguration
com.baomidou.mybatisplus.autoconfigure.MybatisPlusLanguageDriverAutoConfiguration
com.baomidou.mybatisplus.autoconfigure.MybatisPlusAutoConfiguration

源码仓库。自动配置类向 IOC 容器注册名为 sqlSessionFactory 的 bean。

@SuppressWarnings("ConstantConditions")
@org.springframework.context.annotation.Configuration // 配置类
@ConditionalOnClass({SqlSessionFactory.class, MybatisSqlSessionFactoryBean.class}) // 要求 JVM 能够加载 SqlSessionFactory MybatisSqlSessionFactoryBean 类
@ConditionalOnBean(DataSource.class) // 要求 IOC 容器包含 DataSource 类型的 bean
@EnableConfigurationProperties(MybatisPlusProperties.class) // 启动配置属性绑定,将配置文件中 mybatis-plus 前缀的属性注入到 MybatisPlusProperties 对象
@AutoConfigureAfter(DataSourceAutoConfiguration.class) // 在 DataSourceAutoConfiguration 之后执行,确保环境就绪
public class MybatisPlusAutoConfiguration {@Bean@ConditionalOnMissingBeanpublic SqlSessionFactory sqlSessionFactory(DataSource dataSource) throws Exception {MybatisSqlSessionFactoryBean factory = new MybatisSqlSessionFactoryBean();factory.setDataSource(dataSource);factory.setVfs(SpringBootVFS.class);if (StringUtils.hasText(this.properties.getConfigLocation())) {factory.setConfigLocation(this.resourceLoader.getResource(this.properties.getConfigLocation()));}GlobalConfiguration globalConfig;if (!ObjectUtils.isEmpty(this.properties.getGlobalConfig())) {globalConfig = this.properties.getGlobalConfig().convertGlobalConfiguration();} else {globalConfig = new GlobalConfiguration();}MybatisConfiguration configuration = this.properties.getConfiguration();if (configuration == null && !StringUtils.hasText(this.properties.getConfigLocation())) {configuration = new MybatisConfiguration();}if (configuration != null && !CollectionUtils.isEmpty(this.configurationCustomizers)) {for (ConfigurationCustomizer customizer : this.configurationCustomizers) {customizer.customize(configuration);}}factory.setConfiguration(configuration);if (this.properties.getConfigurationProperties() != null) {factory.setConfigurationProperties(this.properties.getConfigurationProperties());}if (!ObjectUtils.isEmpty(this.interceptors)) {factory.setPlugins(this.interceptors);}if (this.databaseIdProvider != null) {factory.setDatabaseIdProvider(this.databaseIdProvider);}if (StringUtils.hasLength(this.properties.getTypeAliasesPackage())) {factory.setTypeAliasesPackage(this.properties.getTypeAliasesPackage());}// TODO 自定义枚举包if (StringUtils.hasLength(this.properties.getTypeEnumsPackage())) {factory.setTypeEnumsPackage(this.properties.getTypeEnumsPackage());}if (StringUtils.hasLength(this.properties.getTypeHandlersPackage())) {factory.setTypeHandlersPackage(this.properties.getTypeHandlersPackage());}if (!ObjectUtils.isEmpty(this.properties.resolveMapperLocations())) {factory.setMapperLocations(this.properties.resolveMapperLocations());}//注入填充器if (this.applicationContext.getBeanNamesForType(MetaObjectHandler.class, false,false).length > 0) {MetaObjectHandler metaObjectHandler = this.applicationContext.getBean(MetaObjectHandler.class);globalConfig.setMetaObjectHandler(metaObjectHandler);}//注入主键生成器if (this.applicationContext.getBeanNamesForType(IKeyGenerator.class, false,false).length > 0) {IKeyGenerator keyGenerator = this.applicationContext.getBean(IKeyGenerator.class);globalConfig.setKeyGenerator(keyGenerator);}//注入sql注入器if (this.applicationContext.getBeanNamesForType(ISqlInjector.class, false,false).length > 0) {ISqlInjector iSqlInjector = this.applicationContext.getBean(ISqlInjector.class);globalConfig.setSqlInjector(iSqlInjector);}factory.setGlobalConfig(globalConfig);return factory.getObject();}
http://www.dtcms.com/a/437397.html

相关文章:

  • php怎么做搭建网站谷歌浏览器怎么下载
  • 网站建设一般多少钱营销型企业网站报价
  • 住房和城乡建设部网站科技项目网站设计常识
  • 怎么进电力建设公司网站麦包包网站建设特点
  • 代理ip注册网站都通不过微商的自己做网站叫什么软件下载
  • 河北优化网站获客qq国际教育机构网站建设开发方案
  • 别人用我公司营业执照备案做网站小程序网址链接提取
  • 用dw制作视频网站企业所得税怎么征收2021税率
  • 淘宝网站建设服务类目选择必应搜索
  • 渭城区住房和城乡建设局网站南宁市规划建设局 网站
  • 网站建设与管理习题一网站ar怎么做
  • 网站开发简称直播平台软件开发
  • 宝安网站设计哪家最好新手如何建网站
  • 龙岗住房建设局网站百度快速排名工具
  • 怎样自己做代刷网站免费域名试用注册网站
  • 怎么找到php网站的首页面htmlphp 企业网站cms
  • 门户网站如何帮企业做宣传西安网站建设的软件
  • 网站信息员队伍建设哪个网站代做ppt便宜
  • 网站开发 入门云盘搜
  • 南京网站制作百家号网站 做百度推广有没有效果怎么样
  • 手机视频网站开发网站建设技术外文
  • 云南旅行社网站建设wordpress制作挂件
  • 江西哪里有做电商网站的公司微信小程序购物平台
  • 网站导航条背景图片石家庄网站备案
  • 律师网站维护wordpress 书店
  • 网站开发文档要求软件外包公司哪个好
  • 深圳英文网站建设公司wordpress 媒体库 ftp
  • 网站开发有哪些课程班级网站自助建设功能
  • 昆明做一个公司网站多少费用企业建站都有什么网站
  • 怎么找人做网站视频综合平台是什么