手动依赖注入;AutowireCapableBeanFactory简述

2024-09-06 07:12

本文主要是介绍手动依赖注入;AutowireCapableBeanFactory简述,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

概述

spring boot虽然帮我们把bean的依赖注入基本都默认配置好了;但有些时候,业务场景中一些对象实例不在spring生命周期中,但是对象中的属性又需要被spring依赖注入(属性在spring容器管理中);

比如一些servlefilter类,其中的一些属性又需要依赖一些springbean

我遇到的情况是这样的,实现FactoryBean接口获取到的自定义bean因为没有参与springbean的初始化,所以FactoryBean.getBean获取到的bean是没有经过spring的依赖注入的,也就是bean里需要注入的属性都是空的

这个时候可以使用AutowireCapableBeanFactory对刚刚制造出来的对象手动让它经过spring的依赖注入

常用方法简述

org.springframework.beans.factory.config.AutowireCapableBeanFactory

  1. autowireBean(Object existingBean) 功能:自动装配给定的现有
    Bean。此方法会尝试根据现有的依赖关系自动装配 Bean 的属性。
    参数:existingBean - 需要自动装配的现有 Bean
    对象。 返回值:无。
  2. autowireBeanProperties(Object existingBean, int autowireMode, boolean dependent) 功能:自动装配给定的现有 Bean 的属性,使用指定的自动装配模式和依赖标志。
    参数: existingBean - 需要自动装配的现有 Bean 对象。 autowireMode - 自动装配模式,如
    AUTOWIRE_BY_NAME 或 AUTOWIRE_BY_TYPEdependent- 是否将现有Bean
    标记为依赖于自动装配过程中创建的任何其他 Bean
    返回值:无。
  3. initializeBean(Object existingBean, String beanName) 功能:初始化给定的现有
    Bean。这通常包括调用 Aware 接口的方法(如果实现了的话),以及调用任何 @PostConstruct 注解的方法。
    参数:existingBean - 需要初始化的现有 Bean 对象。 beanName - Bean 的名称。
    返回值:初始化后的 Bean
  4. applyBeanPostProcessorsAfterInitialization(Object existingBean, String beanName) 功能:在 Bean 初始化之后,应用所有已注册的 BeanPostProcessor 实例的
    postProcessAfterInitialization 方法。
    参数: existingBean - 需要处理的现有 Bean
    对象。 beanName - Bean 的名称。
    返回值:处理后的 Bean
  5. applyBeanPostProcessorsBeforeInitialization(Object existingBean, String beanName) 功能:在 Bean 初始化之前,应用所有已注册的 BeanPostProcessor 实例的
    postProcessBeforeInitialization 方法。
    参数: existingBean - 需要处理的现有 Bean
    对象。 beanName - Bean 的名称。
    返回值:处理后的 Bean
  6. createBean(String beanName, Class<?> beanClass, Object... args)
    功能:创建一个新的 Bean 实例,并使用给定的构造函数参数进行初始化。
    参数: beanName - 新 Bean 的名称。
    beanClass - Bean 的类。
    args - 构造函数参数。
    返回值:创建的新 Bean 实例。
  7. invokeInitMethods(String beanName, Object bean, Object[] specificArguments) 功能:调用 Bean 的初始化方法,这通常是 @PostConstruct 注解的方法或
    <bean init-method="..."> 配置中指定的方法。
    参数: beanName - Bean 的名称。 bean - Bean 的实例。 specificArguments - 初始化方法的特定参数。
    返回值:无。
  8. destroyBean(String beanName, Object bean) 功能:销毁给定的 Bean。这通常包括调用
    @PreDestroy 注解的方法或 <bean destroy-method="..."> 配置中指定的方法。
    参数:
    beanName - Bean 的名称。 bean - Bean 的实例。
    返回值:无。

这篇关于手动依赖注入;AutowireCapableBeanFactory简述的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1141352

相关文章

Linux云服务器手动配置DNS的方法步骤

《Linux云服务器手动配置DNS的方法步骤》在Linux云服务器上手动配置DNS(域名系统)是确保服务器能够正常解析域名的重要步骤,以下是详细的配置方法,包括系统文件的修改和常见问题的解决方案,需要... 目录1. 为什么需要手动配置 DNS?2. 手动配置 DNS 的方法方法 1:修改 /etc/res

python依赖管理工具UV的安装和使用教程

《python依赖管理工具UV的安装和使用教程》UV是一个用Rust编写的Python包安装和依赖管理工具,比传统工具(如pip)有着更快、更高效的体验,:本文主要介绍python依赖管理工具UV... 目录前言一、命令安装uv二、手动编译安装2.1在archlinux安装uv的依赖工具2.2从github

SpringBoot中@Value注入静态变量方式

《SpringBoot中@Value注入静态变量方式》SpringBoot中静态变量无法直接用@Value注入,需通过setter方法,@Value(${})从属性文件获取值,@Value(#{})用... 目录项目场景解决方案注解说明1、@Value("${}")使用示例2、@Value("#{}"php

javacv依赖太大导致jar包也大的解决办法

《javacv依赖太大导致jar包也大的解决办法》随着项目的复杂度和依赖关系的增加,打包后的JAR包可能会变得很大,:本文主要介绍javacv依赖太大导致jar包也大的解决办法,文中通过代码介绍的... 目录前言1.检查依赖2.更改依赖3.检查副依赖总结 前言最近在写项目时,用到了Javacv里的获取视频

深入浅出Spring中的@Autowired自动注入的工作原理及实践应用

《深入浅出Spring中的@Autowired自动注入的工作原理及实践应用》在Spring框架的学习旅程中,@Autowired无疑是一个高频出现却又让初学者头疼的注解,它看似简单,却蕴含着Sprin... 目录深入浅出Spring中的@Autowired:自动注入的奥秘什么是依赖注入?@Autowired

Spring 依赖注入与循环依赖总结

《Spring依赖注入与循环依赖总结》这篇文章给大家介绍Spring依赖注入与循环依赖总结篇,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧... 目录1. Spring 三级缓存解决循环依赖1. 创建UserService原始对象2. 将原始对象包装成工

Spring-DI依赖注入全过程

《Spring-DI依赖注入全过程》SpringDI是核心特性,通过容器管理依赖注入,降低耦合度,实现方式包括组件扫描、构造器/设值/字段注入、自动装配及作用域配置,支持灵活的依赖管理与生命周期控制,... 目录1. 什么是Spring DI?2.Spring如何做的DI3.总结1. 什么是Spring D

Springboot项目构建时各种依赖详细介绍与依赖关系说明详解

《Springboot项目构建时各种依赖详细介绍与依赖关系说明详解》SpringBoot通过spring-boot-dependencies统一依赖版本管理,spring-boot-starter-w... 目录一、spring-boot-dependencies1.简介2. 内容概览3.核心内容结构4.

2025版mysql8.0.41 winx64 手动安装详细教程

《2025版mysql8.0.41winx64手动安装详细教程》本文指导Windows系统下MySQL安装配置,包含解压、设置环境变量、my.ini配置、初始化密码获取、服务安装与手动启动等步骤,... 目录一、下载安装包二、配置环境变量三、安装配置四、启动 mysql 服务,修改密码一、下载安装包安装地

Java Spring的依赖注入理解及@Autowired用法示例详解

《JavaSpring的依赖注入理解及@Autowired用法示例详解》文章介绍了Spring依赖注入(DI)的概念、三种实现方式(构造器、Setter、字段注入),区分了@Autowired(注入... 目录一、什么是依赖注入(DI)?1. 定义2. 举个例子二、依赖注入的几种方式1. 构造器注入(Con