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

算卦网站开发网站开发飞沐

算卦网站开发,网站开发飞沐,计算机多媒体毕业设计网站建设,网站菜单设置#x1f389;#x1f389;欢迎光临#xff0c;终于等到你啦#x1f389;#x1f389; #x1f3c5;我是苏泽#xff0c;一位对技术充满热情的探索者和分享者。#x1f680;#x1f680; #x1f31f;持续更新的专栏《Spring 狂野之旅#xff1a;从入门到入魔》 欢迎光临终于等到你啦 我是苏泽一位对技术充满热情的探索者和分享者。 持续更新的专栏《Spring 狂野之旅从入门到入魔》 本专栏带你从Spring入门到入魔  这是苏泽的个人主页可以看到我其他的内容哦 努力的苏泽http://suzee.blog.csdn.net/ springboot帮我们做了什么 一个字--自动 通常搭建一个基于spring的web应用我们需要做以下工作 1、pom文件中引入相关jar包包括spring、springmvc、redis、mybaits、log4j、mysql-connector-java 等等相关jar ... 2、配置web.xmlListener配置、Filter配置、Servlet配置、log4j配置、error配置 ... 3、配置数据库连接、配置spring事务 4、配置视图解析器 5、开启注解、自动扫描功能 6、配置完成后部署tomcat、启动调试 ...... 这些都是Spring boot在背后默默为我们做的工作 那 有没有想过为什么  本文给大家来解读Spring的源码 拆解他的自动配置 一步一步解释为什么Springboot为何那么强大 进入他的细节源码之前 首先关注 ---架构 解读SpringBootApplication Target(ElementType.TYPE) // 注解的适用范围其中TYPE用于描述类、接口包括包注解类型或enum声明 Retention(RetentionPolicy.RUNTIME) // 注解的生命周期保留到class文件中三个生命周期 Documented // 表明这个注解应该被javadoc记录 Inherited // 子类可以继承该注解 SpringBootConfiguration // 继承了Configuration表示当前是注解类 EnableAutoConfiguration // 开启springboot的注解功能springboot的四大神器之一其借助import的帮助 ComponentScan(excludeFilters { // 扫描路径设置具体使用待确认Filter(type FilterType.CUSTOM, classes TypeExcludeFilter.class),Filter(type FilterType.CUSTOM, classes AutoConfigurationExcludeFilter.class) }) public interface SpringBootApplication { ... }Configuration 这里的Configuration 对我们来说不陌生它就是 JavaConfig 形式的 Spring Ioc 容器的配置类使用的那个ConfigurationSpringBoot 社区推荐使用基于 JavaConfig 的配置形式所以这里的启动类标注了Configuration 之后本身其实也是一个 IoC 容器的配置类。 举几个简单例子回顾下XML 跟 config 配置方式的区别 表达形式层面 基于 XML 配置的方式是这样 ?xml version1.0 encodingUTF-8? beans xmlnshttp://www.springframework.org/schema/beansxmlns:xsihttp://www.w3.org/2001/XMLSchema-instancexsi:schemaLocationhttp://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsddefault-lazy-inittrue!--bean定义-- /beans而基于 JavaConfig 的配置方式是这样 Configuration public class MockConfiguration{//bean定义 }任何一个标注了Configuration 的 Java 类定义都是一个 JavaConfig 配置类。 注册 bean 定义层面 基于 XML 的配置形式是这样 bean idmockService class..MockServiceImpl... /bean而基于 JavaConfig 的配置形式是这样的 Configuration public class MockConfiguration{Beanpublic MockService mockService(){return new MockServiceImpl();} }任何一个标注了Bean 的方法其返回值将作为一个 bean 定义注册到 Spring 的 IoC 容器方法名将默认成该 bean 定义的 id。 表达依赖注入关系层面 为了表达 bean 与 bean 之间的依赖关系在 XML 形式中一般是这样 bean idmockService class..MockServiceImplpropery name dependencyService refdependencyService / /beanbean iddependencyService classDependencyServiceImpl/bean而基于 JavaConfig 的配置形式是这样的 Configuration public class MockConfiguration{Beanpublic MockService mockService(){return new MockServiceImpl(dependencyService());}Beanpublic DependencyService dependencyService(){return new DependencyServiceImpl();} }ComponentScan ComponentScan注解用于指定Spring容器扫描组件的基础包路径。它会自动扫描指定包及其子包下的类并将被Component及其派生注解标注的类识别为Spring的组件将其实例化并纳入容器管理。 // 在包com.example中定义了两个被Component注解标记的类UserService和UserRepository// UserService.java package com.example;import org.springframework.stereotype.Component;Component public class UserService {// ... }// UserRepository.java package com.example;import org.springframework.stereotype.Component;Component public class UserRepository {// ... }// AppConfig.java package com.example;import org.springframework.context.annotation.ComponentScan; import org.springframework.context.annotation.Configuration;Configuration ComponentScan(com.example) // 指定扫描的基础包路径 public class AppConfig {// 配置其他的Bean } ComponentScan的原理可以从源代码的角度来解释。在Spring的源代码中ComponentScan注解被解析为一个Bean扫描器。当Spring容器启动时扫描器会根据指定的包路径将带有Component及其派生注解的类解析为BeanDefinition对象并注册到BeanFactory中。这样Spring容器就知道这些类是组件并可以对其进行实例化和管理。 EnableAutoConfiguration EnableAutoConfiguration注解用于启用Spring Boot的自动配置功能。它会根据项目的依赖和配置自动加载和配置一系列的Spring Bean简化了项目的配置过程。 EnableAutoConfiguration的原理可以从源代码的角度来解释。在Spring Boot的源代码中EnableAutoConfiguration注解被解析为一个自动配置处理器。当Spring Boot应用启动时处理器会根据classpath下的META-INF/spring.factories文件中的配置加载并执行一系列的自动配置类。这些自动配置类根据约定和条件自动创建和配置相应的Bean对象完成项目的自动化配置。 Import(AutoConfigurationImportSelector.class)注解 图中看出 AutoConfigurationImportSelector 继承了 DeferredImportSelector 继承了 ImportSelector ImportSelector有一个方法为selectImports。 Overridepublic String[] selectImports(AnnotationMetadata annotationMetadata) {if (!isEnabled(annotationMetadata)) {return NO_IMPORTS;}AutoConfigurationMetadata autoConfigurationMetadata AutoConfigurationMetadataLoader.loadMetadata(this.beanClassLoader);AnnotationAttributes attributes getAttributes(annotationMetadata);ListString configurations getCandidateConfigurations(annotationMetadata,attributes);configurations removeDuplicates(configurations);SetString exclusions getExclusions(annotationMetadata, attributes);checkExcludedClasses(configurations, exclusions);configurations.removeAll(exclusions);configurations filter(configurations, autoConfigurationMetadata);fireAutoConfigurationImportEvents(configurations, exclusions);return StringUtils.toStringArray(configurations);} AutoConfigurationImportSelector是Spring Boot内部的一个选择器类它会根据项目的依赖和配置选择要自动配置的类。该选择过程是基于条件注解如ConditionalOnClass、ConditionalOnProperty等进行的只有满足条件的自动配置类才会被选择。 AutoConfigurationPackage // 在包com.example中定义了一个主配置类ApplicationConfig// ApplicationConfig.java package com.example;import org.springframework.boot.autoconfigure.AutoConfigurationPackage; import org.springframework.boot.autoconfigure.SpringBootApplication;SpringBootApplication AutoConfigurationPackage // 标注了AutoConfigurationPackage注解 public class ApplicationConfig {// 主配置类的内容// ... } 当Spring Boot启动时它会扫描并解析主配置类ApplicationConfig。在解析过程中Spring Boot会检测到AutoConfigurationPackage注解并执行相应的处理。 AutoConfigurationPackage注解被解析为一个特殊的Bean定义处理器。处理器会读取主配置类ApplicationConfig的包路径com.example并将该包路径注册到Spring的BeanFactory中。 注册完成后Spring容器会将com.example包及其子包作为组件扫描的范围。这意味着Spring会扫描该包下的所有类并根据条件注解如ConditionalOnClass、ConditionalOnMissingBean等来决定是否自动配置相应的Bean。 通过将主配置类所在的包及其子包作为自动配置的包我们可以确保自动配置类能够正确地扫描和应用到我们的应用程序中。
http://www.ho-use.cn/article/10820770.html

相关文章:

  • 无锡企业网站的建设电力公司在哪个网站做推广最好
  • 赣县城乡规划建设局网站wordpress菜单.html
  • wordpress全站模板外贸营销俱乐部
  • 怎么才能提高网站点击量 免费wordpress get_category_parents
  • 花都五屏网站建设php做网站多少钱
  • 网站手机端做app开发公司网站开发 建设
  • 昆明公司网站开发工作室怎么开
  • 网站制作网站建设单位东营网站建设服务电话
  • 个人网站建设论文绪论常州网站建设软件
  • 北京电商网站开发平台网站排名易下拉排名
  • 如何调整网站板块位置济南正规网站制作品牌
  • 推广网站哪家做的好福州网站制作培训
  • 人工智能的网站python 可以做网站吗
  • 搜索引擎中 哪些网站可以获得更好的排名海外服务器价格
  • 在线免费建网站网站地址栏
  • 软件公司做网站吗阿里企业邮箱登录
  • 知名网站定制报价七牛云 wordpress
  • 银川公司网站建设专业营销网站带客
  • 酒店网站建设方案建设网站基础知识
  • 最牛网站设计公司做外贸需要几个网站
  • 广西网站建设哪里有如何申请二级域名
  • 做网站交互效果用什么软件网站开发报价明细
  • 怎么做网站服务器系统游戏门户网站开发资源
  • 文山网站开发wordpress 手册
  • 腾讯快速建站平台空气炸锅做糕点的网站
  • 网站建设怎么付款关键词优化的发展趋势
  • 石家庄网站定做模板网站建设开发
  • 漳平建设局网站重庆网站建设方案详细方案
  • 做移动网站快速排电子商务网站建设初学视频教程
  • 优质做网站哪家正规手机网页游戏排行榜前十