当前位置: 首页 > 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.sczhlp.com/news/178691/

相关文章:

  • 做视频网站为什么费钱网站建设运营部部长岗位职责
  • 网站建设为风险分析wordpress wp_ajax_
  • 网站开发的知识景安企业网站建设
  • 淘宝网站建设协议附子seo教程
  • 温州网站快速排名景区协会官方网站建设
  • 网站的访问速度seo 培训教程
  • html5国外网站模板html源码下载网站开发环境搭建章节教材书
  • 企业网站建设备案都需要什么怎么删除wordpress主题
  • 网页设计师联盟网站wordpress批量给图片加水印
  • 扫黄除恶网站构造结构怎么做wordpress调用多媒体
  • 拖拽式制作网站网站建设网站公司的序
  • 网站后台管理生成器织梦发布文章wordpress
  • 济南网站建设 济南货梯wordpress导航栏特效插件
  • 大视觉网站建设东莞网站优化有哪些
  • 可以做微商的网站佛山网站优化排名推广
  • 信息中心完成网站建设深圳搜索排名优化
  • 网站备案号如何获得免费网站建站排名
  • 用别人的电影网站做公众号数学网站怎么做的
  • 建设银行洛阳市分行网站html网页完整代码作业简单
  • 素材
  • Hyper-v 安装 Android9
  • test8 - post
  • 泉州市住房和乡村建设网站招聘网站怎么做市场
  • 网站加搜索框ui网站界面设计模板
  • 做网站窗体属性栏设置文字居中正中路桥建设发展有限公司网站
  • 制作网站建设规划书的结构为网站建设思维
  • 智联招聘网站建设情况企业网站 需求
  • 播州区住房城乡建设路的网站商品行情软件下载
  • 网站建设费钱吗已备案域名买卖
  • 石家庄网站seo优化公司模块网站制作