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

购买完域名后怎么做网站自己如何做一个网站

购买完域名后怎么做网站,自己如何做一个网站,网站要多少钱,做网站的财务会涉及到的科目✅作者简介#xff1a;大家好#xff0c;我是Leo#xff0c;热爱Java后端开发者#xff0c;一个想要与大家共同进步的男人#x1f609;#x1f609; #x1f34e;个人主页#xff1a;Leo的博客 #x1f49e;当前专栏#xff1a; Java从入门到精通 ✨特色专栏#xf… ✅作者简介大家好我是Leo热爱Java后端开发者一个想要与大家共同进步的男人 个人主页Leo的博客 当前专栏 Java从入门到精通 ✨特色专栏 MySQL学习 本文内容SpringSecurity6 | 自动配置(下) ️个人小站 个人博客欢迎大家访问 个人知识库 Leo知识库欢迎大家访问 ✨✨ 粉丝福利订阅✨✨ Leo哥收集了一些关于面试以及其他学习资源这里分享给大家各位卷王快收下吧!!! 目录 1.前言2.问题引出3.再看自动装配3.1run方法到注解解读器3.2加载Bean 6.参考文献7.总结 学习参考 讲师孙帅老师课程孙哥说SpringSecurity6 1.前言 大家好我是Leo哥上一节我们揭开了为什么引入依赖之后就会进行登录鉴权这一神秘面纱了解复习了关于SpringBoot的自动配置以及如何一步一步的通过自动配置让我们请求加上认证权限。本次我们接着讨论关于自动配置相关问题。好了话不多说让我们开始吧。 2.问题引出 既然我们知道了有关SpringBoot自动装配的一些基本流程。具体的方法调用路径或者叫配置路径是这样的首先是三个核心的注解 SpringBootApplication- EnableAutoConfigurationImport(AutoConfigurationImportSelector) 然后通过Import注解去加载他的所有配置文件到SpringBoot中。这样加载到SpringSecurity的核心文件。最终调用到上边的方法导致所有的方法都得进行登录认证。 那么这些个注解尤其是**Import**是如何生效的呢具体是怎么生效的呢在什么时候被加载呢其实上一篇文章我们已经有了一些简单的了解这节课我们随着Leo哥的视角通过源码方式来深入学习一下。 3.再看自动装配 3.1run方法到注解解读器 我们找到我们项目的启动类。 然后通过Ctrl 鼠标左键点进去run方法。 我们查看这个里面的构造方法 然后我们找到run()方法 可以看到这个prepareContext这个方法。它接受6个参数分别是bootstrapContextcontextenvironmentlistenersapplicationArguments和printedBanner并对这些参数进行处理以准备上下文。 然后我们通过Ctrl 鼠标左键点到prepareContext这个里面去查看。 那么他在这里做了什么准备工作呢我们来简单分析一下 它的功能是在Spring应用启动过程中准备并设置应用上下文ApplicationContext 设置环境并处理应用上下文: context.setEnvironment(environment): 将配置环境设置到应用上下文中。postProcessApplicationContext(context): 对应用上下文进行后处理可能涉及一些自定义配置或修改。addAotGeneratedInitializerIfNecessary(this.initializers): 如果需要添加Ahead-of-Time (AOT) 生成的初始化器到应用的初始化器列表中。applyInitializers(context): 应用之前添加的所有初始化器到应用上下文。 通知监听器上下文已准备好: listeners.contextPrepared(context): 通知Spring应用运行监听器上下文已准备完成。bootstrapContext.close(context): 关闭引导上下文。 启动信息日志: 如果启用了启动日志this.logStartupInfo则记录启动信息和配置文件信息。 注册Spring Boot特定的单例Bean: 向Bean工厂注册springApplicationArguments和springBootBanner如果存在的话。 处理Bean工厂配置: 设置允许循环引用setAllowCircularReferences和允许Bean定义覆盖setAllowBeanDefinitionOverriding根据配置决定。 懒加载和属性源排序处理: 如果启用了懒加载this.lazyInitialization则添加相关的BeanFactoryPostProcessor。添加一个用于属性源排序的BeanFactoryPostProcessor。 加载应用的源: 如果没有使用AOT生成的工件那么将从getAllSources()获取所有源并使用load(context, sources.toArray(new Object[0]))加载它们。 通知监听器上下文已加载: listeners.contextLoaded(context): 通知监听器上下文加载完成。 主要作用 识别入口类读取入口类的所有内容包括注解在内。并注册到注解解读器announationreader中方便后续注解进行解析。 通过getAllSources()获取所有源信息也就是我们当前的入口类信息然后把这些source放到一个set集合中最后去加载load接下来我们点开load方法继续查看。 首先它检查logger是否处于调试模式debugEnabled。如果处于调试模式它会记录一条调试日志显示正在加载的源sources。然后它创建一个BeanDefinitionLoader实例。这个实例是用于加载Bean定义的。它使用getBeanDefinitionRegistry(context)方法获取BeanDefinitionRegistry然后使用createBeanDefinitionLoader()方法创建一个BeanDefinitionLoader实例。如果beanNameGenerator属性不为null它将beanNameGenerator设置为loader的属性。如果resourceLoader属性不为null它将resourceLoader设置为loader的属性。如果environment属性不为null它将environment设置为loader的属性。最后调用loader的load()方法来加载Bean定义。 到这里前面的工作已经基本完成了读取入口类中重要的信息包括注解包括入口类本身。将入口类中的注解注册到注解解读器annotationreader当中。 3.2加载Bean 真正解析Bean的工作是从refreshContext当中进行的。 首先通通过prepareContext方法进行准备然后通过refreshContext进行装载工作那么他具体是怎么进行转载的呢下面我们点进去这个方法继续查看。 这部分代码涉及应用上下文的刷新动作。这里我逐行解释一下 注册关闭钩子shutdown hook: if (this.registerShutdownHook): 首先检查一个布尔标志this.registerShutdownHook判断是否需要注册一个shutdown hook。这个标志通常是在Spring Boot的配置中设置的用以确定我们是否希望在JVM关闭时能够自动清理和关闭Spring上下文。shutdownHook.registerApplicationContext(context): 如果需要注册shutdown hook这行代码执行注册操作。具体来说shutdownHook是一个管理器可能是Spring Boot中的一个组件负责注册和执行关闭Spring应用上下文的逻辑。当JVM进程结束时这个shutdown hook将得到执行。 最后跑到了一个applicationContext的refresh方法当中。 刷新应用上下文: refresh(context)这是调用ApplicationContext的 refresh()方法该方法是启动和重新启动Spring上下文的核心方法。它会执行以下关键步骤 准备上下文环境比如设置必要的属性源、验证必要的环境变量等。实例化和初始化所有的Bean包括Spring配置中声明的Bean以及注解声明的Bean。如果有的话运行BeanFactory后处理器。触发任何实现ApplicationContextAware接口的Bean让它们能够感知到自己所处的ApplicationContext。最后发送上下文刷新事件这将通知所有监听器上下文已经完全初始化和可用。 这个refreshContext方法的目的是确保SpringBoot应用中的ApplicationContext处于最新状态具备服务请求的能力。这通常发生在应用启动时或者需要重新加载上下文配置的任何时候。 接下来会进行Bean处理的13方法其中一个比较关键的方法 invokeBeanFactoryPostProcessors 我们点过去这个方法 invokeBeanFactoryPostProcessors 方法接收一个 ConfigurableListableBeanFactory 类型的参数 beanFactory。 PostProcessorRegistrationDelegate.invokeBeanFactoryPostProcessors(beanFactory, getBeanFactoryPostProcessors()) 这一行调用了 PostProcessorRegistrationDelegate 类的 invokeBeanFactoryPostProcessors 方法传入了两个参数即当前的 beanFactory 和获取的一些BeanFactory后处理器列表通过 getBeanFactoryPostProcessors() 获取。 接下来的注释提到了检测 LoadTimeWeaver 并准备进行织入weaving。具体地说它通过以下条件进行检查 NativeDetector.inNativeImage() 确保不在本机镜像环境下。beanFactory.getTempClassLoader() null 确保临时类加载器为空。beanFactory.containsBean(LOAD_TIME_WEAVER_BEAN_NAME) 确保BeanFactory中包含名为 LOAD_TIME_WEAVER_BEAN_NAME 的bean。 如果以上条件都满足那么会执行以下两个操作 beanFactory.addBeanPostProcessor(new LoadTimeWeaverAwareProcessor(beanFactory)) 添加一个 LoadTimeWeaverAwareProcessor 的Bean后处理器。beanFactory.setTempClassLoader(new ContextTypeMatchClassLoader(beanFactory.getBeanClassLoader())) 设置临时类加载器为 ContextTypeMatchClassLoader 类的实例该实例使用当前的 beanFactory 的类加载器。 总结 经常refresh()的层层调用2进到AbstractApplicationContext类中refresh0方法该方法主要有13 个步骤用于对bean对象进行解析加载其中第5步invokeBeanFactoryPostProcessors()进行核心加 载类上的**Configurer**、Bean、Import等注解。 6.参考文献 https://springdoc.cn/spring-security/servlet/architecture.htmlhttp://springboot.fun/ 7.总结 以上便是本文的全部内容本人才疏学浅文章有什么错误的地方欢迎大佬们批评指正我是Leo一个在互联网行业的小白立志成为更好的自己。 如果你想了解更多关于Leo可以关注公众号-程序员Leo后面文章会首先同步至公众号。
http://www.hkea.cn/news/14348028/

相关文章:

  • 酒店用品网站源码千锋教育成立于哪一年
  • 郑州网站seo多少钱建设银行信用卡账网站
  • 网站多网合一太仓建设工程网站
  • 小学校园门户网站建设方案网站的c4d动画是怎么做的
  • 东莞做网站网络公司老吕爱分享 wordpress
  • 国内自动化网站建设wordpress整合问答系统
  • 班级网站建设组织机构沈阳成创网站建设公司
  • html5 网站开发手工制作钟表
  • 做企业网站域名需要解析吗网站的设计 哪家网络公司好
  • wordpress中文分类问题seo整站优化公司持续监控
  • 怎么去掉网站首页尾缀大连网络代运营
  • 帮人做钓鱼网站西安网站设计公司
  • 石景山青岛网站建设自建博客网站
  • 有专门做预算的网站没网站点击排名优化
  • 多语言网站建设价格wordpress主页显示浏览数
  • 免费十八种禁用网站游戏珠海哪个公司做网站好
  • 建应用网站wordpress主题二次元
  • 网站后台设置关键词在哪设优化师培训
  • 网站 翻页 实现临淄信息网招聘最新信息
  • 在线看mv视频网站入口软件下载微网站开发报价
  • 现在建设一个基础的网站多少钱网站建设需求和页面需求怎么提
  • wordpress站点自动推送墙外行人 wordpress
  • 厦门网站建设厦门seo微信棋牌游戏代理平台
  • 个人网站可以做淘客免费发广告平台
  • 求一个做烧肉的网站单网页网站如何做
  • 那种投票网站里面怎么做pos机网站模板
  • 网站策划报告企业开展网站建设
  • 网站建设属于行政那个模块大学生个人简历模板免费
  • 电子商务网站建设计划面试学校网站开发
  • 触屏网站meta标签html静态网页模板代码