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

网站建设产品经理职责资源网站不好找了

网站建设产品经理职责,资源网站不好找了,网站备案中国开头,软件开发工具的基本功能有哪些1. 传统的 Spring 注入方式&#xff08;基于 XML 配置&#xff09; 在传统的 Spring 中&#xff0c;依赖注入&#xff08;DI&#xff09;通常通过 XML 配置文件来进行管理。常见的方式有两种&#xff1a; 通过 <property> 元素进行属性注入&#xff1a; <bean id&qu…

1. 传统的 Spring 注入方式(基于 XML 配置)

在传统的 Spring 中,依赖注入(DI)通常通过 XML 配置文件来进行管理。常见的方式有两种:

  • 通过 <property> 元素进行属性注入
  <bean id="car" class="com.example.Car"><property name="engine" ref="engine"/></bean>
  • 通过 <constructor-arg> 元素进行构造器注入
  <bean id="car" class="com.example.Car"><constructor-arg ref="engine"/></bean>

这些注入方式的核心思想是 控制反转(IoC),即 Spring 容器负责管理类的实例化和依赖关系的注入。

2. Spring Boot 中的自动装配机制

在 Spring Boot 中,自动装配机制通过 @Autowired 注解简化了开发过程,消除了 XML 配置的复杂性。以下是其基本的工作原理:

2.1 @Autowired 注解

@Autowired 注解可以用来自动装配 Bean。在 Spring Boot 中,容器会根据类型自动找到匹配的 Bean 并注入到指定字段、构造函数或方法中。

  • 字段注入
  @Autowiredprivate Car car;
  • 构造器注入(推荐的方式):
  private final Car car;@Autowiredpublic MyService(Car car) {this.car = car;}
2.2 自动配置的原理(@EnableAutoConfiguration

Spring Boot 的自动配置通过 @EnableAutoConfiguration 注解启动。这是一个非常重要的注解,负责启用 Spring Boot 的自动配置功能。背后涉及的几个关键步骤如下:

  • @EnableAutoConfiguration 注解会触发 AutoConfigurationImportSelector 类的加载,AutoConfigurationImportSelector 类的作用是根据条件筛选出需要自动配置的类。
  • AutoConfigurationImportSelector.selectImports() 方法负责从多个候选配置类中筛选出需要导入的类。最终这些类会被注册为 Spring 容器的 Bean。
2.3 自动配置类的加载过程

自动配置类的筛选和加载过程较为复杂,但可以总结为以下几个步骤:

  1. 加载候选配置类:通过 getCandidateConfigurations() 方法,Spring Boot 会加载出所有可能的自动配置类。
  2. META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports 中读取配置:在 Spring Boot 启动时,会读取 META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports 文件中的内容,这个文件列出了所有的自动配置类的全类名。
  3. 将自动配置类注册为 Bean:这些自动配置类会被加载并注册为 Spring 上下文中的 Bean,从而实现自动装配。
2.4 @Component 注解与自动装配

在 Spring 中,可以通过 @Component 及其派生注解(如 @Controller@Service@Repository 等)来声明一个类为 Bean。Spring Boot 在启动时会扫描带有这些注解的类,并将其自动注册到 Spring 容器中。

@Component
public class MyBean {// Bean 的逻辑
}

这些 Bean 可以通过 @Autowired 注解自动注入到其他类中。

2.5 自动装配的条件控制(@Conditional)

Spring Boot 还提供了条件装配机制。使用 @Conditional 注解可以让开发者根据某些条件决定是否进行自动配置。例如,@ConditionalOnProperty 可以根据配置文件中的某些属性值来决定是否装配某个 Bean。

@Configuration
@ConditionalOnProperty(name = "my.feature.enabled", havingValue = "true")
public class MyAutoConfiguration {// 如果配置了 my.feature.enabled=true,则这个配置会生效
}

3. 总结

  • @Autowired 注解:通过注解自动注入 Bean,Spring Boot 会自动进行依赖注入,无需显式配置。
  • @EnableAutoConfiguration:这是 Spring Boot 实现自动配置的核心,负责自动配置 Bean 并将其注入到容器中。
  • 自动配置的加载机制:Spring Boot 通过 META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports 文件来加载自动配置类,并根据条件决定是否加载。
  • @Component 等注解:通过这些注解声明 Bean,Spring Boot 会自动进行类扫描并将其加入容器。

4.DI注入的理解

传统的Spring注入是通过Spring XML配置文件中的 <bean> 标签中的 <property> 进行设值注入,也可以通过 <constructor-arg> 进行构造器注入,这两种方式都是控制反转(IoC)的注入方式,即通过外部容器管理对象的依赖关系。

现在有了 @Autowired 注解后,想要注入对象,首先需要确定Bean对象。可以通过 @Component@Controller@Service@Repository 等注解来定义Bean对象。接着在需要注入的字段上添加 @Autowired 注解实现自动装配。

Spring会通过启动类上的 @SpringBootApplication 注解找到类内部的 @EnableAutoConfiguration 注解,这个注解负责自动装配。具体来说,@EnableAutoConfiguration 注解通过 @Import(AutoConfigurationImportSelector.class) 导入 AutoConfigurationImportSelector 类,该类负责筛选出需要自动配置的类。

AutoConfigurationImportSelector 类中有一个 selectImports 方法,该方法的作用是将筛选出来的类名对应的Bean对象注入到IOC容器中,实现自动装配。筛选的条件是通过一个配置文件来确定的。要找到这个配置文件,需要查看 selectImports 方法中的 autoConfigurationEntry,该方法通过 getAutoConfigurationEntry 实现。进一步跟踪 getAutoConfigurationEntry 方法,可以看到它返回一个 AutoConfigurationEntry 对象,其中有一个参数 configurations,这个 configurations 是由 getCandidateConfigurations 方法实现的。继续跟踪 getCandidateConfigurations 方法,可以看到返回值 configurations 是由 ImportCandidates.load 方法实现的,该方法的参数是 AutoConfiguration.class 配置类。

在报错信息中可以看出,这些配置类的全类名最终会存储在 META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports 文件中。因此,通过这一系列调用,Spring Boot会自动装配这些类,并将它们生成为相应的Bean对象。

Spring Boot 的自动装配大大简化了开发流程,避免了大量的配置工作,开发者只需关注业务逻辑即可。

http://www.yayakq.cn/news/495921/

相关文章:

  • wps如何做网站wordpress如何添加商桥
  • 修改网站图标泰安市最新消息
  • 简单大气的网站漯河网站推广哪家好
  • 上住房和城乡建设部网站有什么做门窗展厅的设计网站
  • 渭南网站建设远景单页面个人网站
  • 做网站用js的好处网站模板样式修改
  • 商城微网站建设多少钱网站在百度的图标显示不正常
  • 学校网站建设客户需求调查问卷皖icp合肥网站开发公司
  • 德州网站开发公司新手怎么开始做微商
  • 温州网站建设(首选国鼎网络)服装企业营销网站建设
  • 微信软文范例宁波网站推广优化公司
  • 网站建设和推广需要多少费用无锡百度信息流
  • 关键词搜索工具好站网商务推广
  • 网站的弹窗对话框怎么做引擎搜索对人类记忆的影响
  • 网站改版模版源码之家打不开
  • 做炒作的网站网站推广的内涵
  • flashxml网站模板网站修改标题有影响吗
  • 北方明珠网站建设医院咨询
  • 建设部网站最新消息凡科商城小程序怎么样
  • 台州cms建站系统wordpress微信公众号开发教程
  • 建设项目竣工环保验收公示网站网站分析总结
  • 求个没封的w站2021软件营销型网站建设首选
  • 哪个网站可以做创意短视频wordpress 开店
  • 连云港企业做网站做淘宝客导购网站推广
  • 有做学历在网站能查的到的精神文明建设网站
  • wordpress全站静太化网页美工设计一套多少钱
  • 城市介绍网站模板企业门户网站开发公司
  • 如果在各大网站做免费的网络推广wordpress多主题插件下载地址
  • 革吉网站建设wordpress加入购买功能
  • 延庆手机网站建设济南网站优化