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

建设网站教程视频公司总经理培训推广哪家好

建设网站教程视频,公司总经理培训推广哪家好,一级的vi设计公司,买天猫店铺的平台目录 传送门前言一、事件和监听器1、生命周期监听2、事件触发时机 二、自动配置原理1、入门理解1.1、自动配置流程1.2、SPI机制1.3、功能开关 2、进阶理解2.1、 SpringBootApplication2.2、 完整启动加载流程 三、自定义starter1、业务代码2、基本抽取3、使用EnableXxx机制4、完… 目录 传送门前言一、事件和监听器1、生命周期监听2、事件触发时机 二、自动配置原理1、入门理解1.1、自动配置流程1.2、SPI机制1.3、功能开关 2、进阶理解2.1、 SpringBootApplication2.2、 完整启动加载流程 三、自定义starter1、业务代码2、基本抽取3、使用EnableXxx机制4、完全自动配置 四、附录SpringBoot3改变 新特性 快速总结 传送门 SpringMVC的源码解析精品 Spring6的源码解析精品 SpringBoot3框架精品 MyBatis框架精品 MyBatis-Plus SpringDataJPA SpringCloudNetflix SpringCloudAlibaba精品 Shiro SpringSecurity java的LOG日志框架 Activiti敬请期待 JDK8新特性 JDK9新特性 JDK10新特性 JDK11新特性 JDK12新特性 JDK13新特性 JDK14新特性 JDK15新特性 JDK16新特性 JDK17新特性 JDK18新特性 JDK19新特性 JDK20新特性 JDK21新特性 其他技术文章传送门入口 前言 由于面试问到的比较多而且做java开发这块还是需要真正掌握的。 现有笔记尚硅谷雷锋阳老师的SpringBoot3全栈指南是我目前见过的最好笔记了。 参考视频尚硅谷雷锋阳老师的SpringBoot零基础教程面试加薪必会视频是24小时31分钟的高质量教程。 参考代码https://gitee.com/leifengyang/spring-boot-3 最经典的20个Spring Boot面试题95%以上会被问到不服来战 为了防止雷锋阳老师的日志查看不到这里分类整理一下。下面文章不定时更新 SpringBoot3核心特性-快速入门 SpringBoot3核心特性-Web开发 SpringBoot3核心特性-数据访问 SpringBoot3核心特性-基础特性 SpringBoot3核心特性-核心原理 SpringBoot3场景整合 SpringBoot3响应式编程全套-Reactor核心 SpringBoot3响应式编程全套-Spring Webflux SpringBoot3响应式编程全套-R2DBC SpringBoot3响应式编程全套-Spring Security Reactive 一、事件和监听器 1、生命周期监听 场景监听应用的生命周期 监听器-SpringApplicationRunListener 自定义SpringApplicationRunListener来监听事件 编写SpringApplicationRunListener 实现类 在 META-INF/spring.factories 中配置 org.springframework.boot.SpringApplicationRunListener自己的Listener还可以指定一个有参构造器接受两个参数(SpringApplication application, String[] args) springboot 在spring-boot.jar中配置了默认的 Listener如下 /*** Listener先要从 META-INF/spring.factories 读到** 1、引导 利用 BootstrapContext 引导整个项目启动* starting 应用开始SpringApplication的run方法一调用只要有了 BootstrapContext 就执行* environmentPrepared 环境准备好把启动参数等绑定到环境变量中但是ioc还没有创建【调一次】* 2、启动* contextPrepared ioc容器创建并准备好但是sources主配置类没加载。并关闭引导上下文组件都没创建 【调一次】* contextLoaded ioc容器加载。主配置类加载进去了。但是ioc容器还没刷新我们的bean没创建。* 截止以前ioc容器里面还没造bean呢* started ioc容器刷新了所有bean造好了但是 runner 没调用。* ready: ioc容器刷新了所有bean造好了所有 runner 调用完了。* 3、运行* 以前步骤都正确执行代表容器running。*/生命周期全流程 2、事件触发时机 各种回调监听器 ● BootstrapRegistryInitializer 感知特定阶段感知引导初始化 ○ META-INF/spring.factories ○ 创建引导上下文bootstrapContext的时候触发。 ○ application.addBootstrapRegistryInitializer(); ○ 场景进行密钥校对授权。 ● ApplicationContextInitializer 感知特定阶段 感知ioc容器初始化 ○ META-INF/spring.factories ○ application.addInitializers(); ● ApplicationListener 感知全阶段基于事件机制感知事件。 一旦到了哪个阶段可以做别的事 ○ Bean或EventListener 事件驱动 ○ SpringApplication.addListeners(…)或 SpringApplicationBuilder.listeners(…) ○ META-INF/spring.factories ● SpringApplicationRunListener 感知全阶段生命周期 各种阶段都能自定义操作 功能更完善。 ○ META-INF/spring.factories ● ApplicationRunner: 感知特定阶段感知应用就绪Ready。卡死应用就不会就绪 ○ Bean ● CommandLineRunner 感知特定阶段感知应用就绪Ready。卡死应用就不会就绪 ○ Bean 最佳实战 ● 如果项目启动前做事 BootstrapRegistryInitializer 和 ApplicationContextInitializer ● 如果想要在项目启动完成后做事ApplicationRunner和 CommandLineRunner ● 如果要干涉生命周期做事SpringApplicationRunListener ● 如果想要用事件机制ApplicationListener 完整触发流程 9大事件触发顺序时机ApplicationStartingEvent应用启动但未做任何事情, 除过注册listeners and initializers.ApplicationEnvironmentPreparedEvent Environment 准备好但context 未创建.ApplicationContextInitializedEvent: ApplicationContext 准备好ApplicationContextInitializers 调用但是任何bean未加载ApplicationPreparedEvent 容器刷新之前bean定义信息加载ApplicationStartedEvent 容器刷新完成 runner未调用 以下就开始插入了探针机制AvailabilityChangeEvent LivenessState.CORRECT应用存活 存活探针ApplicationReadyEvent: 任何runner被调用AvailabilityChangeEventReadinessState.ACCEPTING_TRAFFIC就绪探针可以接请求ApplicationFailedEvent 启动出错 应用事件发送顺序如下 感知应用是否存活了可能植物状态虽然活着但是不能处理请求。 应用是否就绪了能响应请求说明确实活的比较好。 SpringBoot 事件驱动开发 应用启动过程生命周期事件感知9大事件、应用运行中事件感知无数种。 ● 事件发布ApplicationEventPublisherAware或注入ApplicationEventMulticaster ● 事件监听组件 EventListener 事件发布者 Service public class EventPublisher implements ApplicationEventPublisherAware {/*** 底层发送事件用的组件SpringBoot会通过ApplicationEventPublisherAware接口自动注入给我们* 事件是广播出去的。所有监听这个事件的监听器都可以收到*/ApplicationEventPublisher applicationEventPublisher;/*** 所有事件都可以发* param event*/public void sendEvent(ApplicationEvent event) {//调用底层API发送事件applicationEventPublisher.publishEvent(event);}/*** 会被自动调用把真正发事件的底层组组件给我们注入进来* param applicationEventPublisher event publisher to be used by this object*/Overridepublic void setApplicationEventPublisher(ApplicationEventPublisher applicationEventPublisher) {this.applicationEventPublisher applicationEventPublisher;} }事件订阅者 Service public class CouponService {Order(1)EventListenerpublic void onEvent(LoginSuccessEvent loginSuccessEvent){System.out.println( CouponService 感知到事件loginSuccessEvent);UserEntity source (UserEntity) loginSuccessEvent.getSource();sendCoupon(source.getUsername());}public void sendCoupon(String username){System.out.println(username 随机得到了一张优惠券);} }二、自动配置原理 1、入门理解 应用关注的三大核心场景、配置、组件 1.1、自动配置流程 导入starter依赖导入autoconfigure寻找类路径下 META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports文件启动加载所有 自动配置类 xxxAutoConfiguration a. 给容器中配置功能组件 b. 组件参数绑定到 属性类中。xxxProperties c. 属性类和配置文件前缀项绑定 d. Contional派生的条件注解进行判断是否组件生效效果 a. 修改配置文件修改底层参数 b. 所有场景自动配置好直接使用 c. 可以注入SpringBoot配置好的组件随时使用 1.2、SPI机制 ● Java中的SPIService Provider Interface是一种软件设计模式用于在应用程序中动态地发现和加载组件。SPI的思想是定义一个接口或抽象类然后通过在classpath中定义实现该接口的类来实现对组件的动态发现和加载。 ● SPI的主要目的是解决在应用程序中使用可插拔组件的问题。例如一个应用程序可能需要使用不同的日志框架或数据库连接池但是这些组件的选择可能取决于运行时的条件。通过使用SPI应用程序可以在运行时发现并加载适当的组件而无需在代码中硬编码这些组件的实现类。 ● 在Java中SPI的实现方式是通过在META-INF/services目录下创建一个以服务接口全限定名为名字的文件文件中包含实现该服务接口的类的全限定名。当应用程序启动时Java的SPI机制会自动扫描classpath中的这些文件并根据文件中指定的类名来加载实现类。 ● 通过使用SPI应用程序可以实现更灵活、可扩展的架构同时也可以避免硬编码依赖关系和增加代码的可维护性。 以上回答来自ChatGPT-3.5 在SpringBoot中META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports 作业写一段java的spi机制代码 1.3、功能开关 ● 自动配置全部都配置好什么都不用管。 自动批量导入 ○ 项目一启动spi文件中指定的所有都加载。 ● EnableXxxx手动控制哪些功能的开启 手动导入。 ○ 开启xxx功能 ○ 都是利用 Import 把此功能要用的组件导入进去 2、进阶理解 2.1、 SpringBootApplication SpringBootConfiguration 就是 Configuration 容器中的组件配置类。spring ioc启动就会加载创建这个类对象 EnableAutoConfiguration开启自动配置 开启自动配置 AutoConfigurationPackage扫描主程序包加载自己的组件 ● 利用 Import(AutoConfigurationPackages.Registrar.class) 想要给容器中导入组件。 ● 把主程序所在的包的所有组件导入进来。 ● 为什么SpringBoot默认只扫描主程序所在的包及其子包 Import(AutoConfigurationImportSelector.class)加载所有自动配置类加载starter导入的组件 ListString configurations ImportCandidates.load(AutoConfiguration.class, getBeanClassLoader()).getCandidates();ComponentScan 组件扫描排除一些组件哪些不要 排除前面已经扫描进来的配置类、和自动配置类。 ComponentScan(excludeFilters { Filter(type FilterType.CUSTOM, classes TypeExcludeFilter.class),Filter(type FilterType.CUSTOM, classes AutoConfigurationExcludeFilter.class) })2.2、 完整启动加载流程 生命周期启动加载流程 三、自定义starter 场景抽取聊天机器人场景它可以打招呼。 效果任何项目导入此starter都具有打招呼功能并且问候语中的人名需要可以在配置文件中修改 ● 1. 创建自定义starter项目引入spring-boot-starter基础依赖 ● 2. 编写模块功能引入模块所有需要的依赖。 ● 3. 编写xxxAutoConfiguration自动配置类帮其他项目导入这个模块需要的所有组件 ● 4. 编写配置文件META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports指定启动需要加载的自动配置 ● 5. 其他项目引入即可使用 1、业务代码 自定义配置有提示。导入以下依赖重启项目再写配置文件就有提示 ConfigurationProperties(prefix robot) //此属性类和配置文件指定前缀绑定 Component Data public class RobotProperties {private String name;private String age;private String email; } !-- 导入配置处理器配置文件自定义的properties配置都会有提示--dependencygroupIdorg.springframework.boot/groupIdartifactIdspring-boot-configuration-processor/artifactIdoptionaltrue/optional/dependency2、基本抽取 ● 创建starter项目把公共代码需要的所有依赖导入 ● 把公共代码复制进来 ● 自己写一个 RobotAutoConfiguration给容器中导入这个场景需要的所有组件 ○ 为什么这些组件默认不会扫描进去 ○ starter所在的包和 引入它的项目的主程序所在的包不是父子层级 ● 别人引用这个starter直接导入这个 RobotAutoConfiguration,就能把这个场景的组件导入进来 ● 功能生效。 ● 测试编写配置文件 3、使用EnableXxx机制 Retention(RetentionPolicy.RUNTIME) Target({ElementType.TYPE}) Documented Import(RobotAutoConfiguration.class) public interface EnableRobot {}4、完全自动配置 ● 依赖SpringBoot的SPI机制 ● META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports 文件中编写好我们自动配置类的全类名即可 ● 项目启动自动加载我们的自动配置类 四、附录SpringBoot3改变 新特性 快速总结 1、自动配置包位置变化【参照视频07、11】 META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports 2、jakata api迁移 ● druid有问题 3、新特性 - 函数式Web、ProblemDetails【参照视频50、51】 4、GraalVM 与 AOT【参照视频86~93】 5、响应式编程全套【第三季预计7~8月份发布】 6、剩下变化都是版本升级意义不大 铁哥备注 自定义starter比较朦胧的可以看视频p65讲解的非常细致。 自定义组件 主要靠上面两个文件RedisAutoConfiguration和RedisPropertiesEnableConfigurationProperties({RedisProperties.class})和ConfigurationPropertiesxx两注解是关键 AutoConfiguration EnableConfigurationProperties({FeProperties.class}) public class FeAutoConfiguration {// 必须有Beanpublic FeDemo getFeDemo(FeProperties feProperties){// FeDemo是个第三方类这边看业务需求搞了return new FeDemo(feProperties);} }ConfigurationProperties(prefix fe ) Data public class FeProperties {// 必须有private String name;private String age;}public class FeDemo {// 可以没有这个类看FeAutoConfiguration中业务需要public static String feStatic feStatic;public FeDemo(FeProperties feProperties) {feStatic feProperties.getName();// 改变feStatic为yml上面配置的值取的yml配置的fe.name的值} }启动上面代码方式一注解方式在具体的Controller上面加这个注解即可这种不推荐还得加注解麻烦 Retention(RetentionPolicy.RUNTIME) Target({ElementType.TYPE}) Documented Import(FeAutoConfiguration.class) public interface EnableFe { }启动上面代码方式二增加文件推荐一劳永逸。备注两种方式都能让项目启动时实例化FeAutoConfiguration、FeProperties、FeDemo springboot启动会扫描每个jar包下面的这些imports文件或者factories文件。 在resource/META-INF/spring下面拷贝一份org.springframework.boot.autoconfigure.AutoConfiguration.imports把里面的东西删光然后新增自己的比如上面的com.zt.project.starter.FeAutoConfiguration springboot2的话就在resource/META-INF下面新增一份 spring.factories然后修改里面内容如下 org.springframework.boot.autoconfigure.EnableAutoConfiguration com.zt.project.starter.FeAutoConfiguration 自定义starter 在自定义组件的基础上新建一个工程把上面组件代码拷贝到新工程下。 1、新工程pom.xml需要支撑组件的注解等等该引入的就正常引入 2、删除启动类 3、采取resource/META-INF/spring方式注意是在新建工程的resource文件夹下面弄即可不用在其他项目单独弄了 好比mybaits或者redispom直接引入jar包直接用不用什么加注解不用搞什么imports文件
http://www.hkea.cn/news/14394856/

相关文章:

  • 购物网站建设精英网站建设付款方式
  • 中国建设银行官网站e路护航重庆网站推广优化
  • 江苏建设工程造价管理网站企业宣传片拍摄制作
  • 网站首页布局seo策划公司活动方案
  • 怎样把自己的网站推广出去提高销售的10种方法
  • 肉山谷英雄传说新手任务登录英文网站怎么做老牛影视传媒有限公司
  • 国内站长做国外网站现在如何给网站做外链
  • 做网站选哪家公司没固定ip怎么做网站
  • 宣传网站怎么做的设计网站建设书南昌
  • 网站注册域名位置网站设计风格的关键词
  • 外国做的福利小视频在线观看网站广告拍摄制作公司
  • 辽宁网站建设企业织梦模板首页修改教程
  • 网站数据采集怎么做池州网站建设电话
  • seo站长教程筑业网
  • 手机网站设计创意说明设计常用网站
  • 网站如何做修改密码的相关验证开发一款彩票app需要多少钱
  • 免费网站论坛网站批量创建程序
  • 彩票网站建设维护wordpress支持微信登录
  • 门户网站做等级保护测评网站模板 自适应
  • 酒店和网站对接如何做域名不用了需要注销吗
  • 广东哪家网站建设后台管理便捷企业管理专业主要课程
  • 东莞网站优化公司推荐建设网站网站建站
  • 东莞倣网站在线识图
  • 网站优化技巧360建设网站免费下载
  • 天津网站建设哪家公司好网络营销公司模拟创建实训
  • dz论坛做视频网站教程深圳建设交易平台官网
  • 设计师服务平台鱼巴士有哪些网站东莞房价最新消息
  • 网站建设项目需求分析流程图个人网站效果图咋做
  • 山西网站建设 哪家好本地网络seo公司
  • 做学校子网站学校网站建设目标