当前位置: 首页 > 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/220245/

相关文章:

  • 网站建设的整个流程图手机优化网站建设
  • 浙江省品牌建设联合会网站关于建设网站与营销的好处
  • 柳市网站托管三品合一网站建设案例
  • 如何用自己的电脑做网站服务器asp.net做的网站
  • 沧州网站建设王宝祥黄山旅游攻略自由行路线推荐
  • 第一站商城网上卖货平台有哪些
  • 网站建设工作任务怎么更改网站标题
  • 白山网站seo网页设计软件h
  • 宁波网站建设优化排名雄安做网站的公司
  • 网站访问大小 计算流量wordpress4.2.15漏洞
  • 手机网站建设软件江苏建设信息网证书查询电子证书
  • 上饶哪里做网站东莞网络营销代运营
  • 站长工具站长之家学网络营销要多少钱
  • 宜春建设局网站做外贸需要哪些网站
  • 手机端网站建设广告词收集链接 做网站
  • 郑州网站推广地址做湘菜的网站
  • 网站建设实训感想个人主题网站
  • 做网站到底要不要营业执照企业网站建设在网络营销中的地位与作用
  • 【比赛记录】2025CSP+NOIP 冲刺模拟赛合集Ⅱ
  • CSS3 超实用属性:pointer-events (可穿透图层的鼠标事件)
  • 特级a做爰网站wordpress ping设置
  • 做购物网站哪种服务器好服务外包和劳务外包区别
  • 北京赛车网站开发多少钱哪些网站做企业招聘不要花钱
  • 单位网站 方案《电子商务网站建设》精品课
  • 深圳电子商务网站建设怎么让别人访问自己的网页
  • 网页制作中网站名称怎么做网站如何制作浙江
  • 广州市做网站公司wordpress空格消失
  • 网站访问量很大怎么办网站建设费用预算表
  • 丝芙兰网站做的好差最近的电脑培训班在哪里
  • 青岛网站建设seo优化制作设计挂机宝做网站