`

Spring的手动注入,动态注入

 
阅读更多
参数说明:
Object bean,就是一个已经被创建的实例;
ApplicationContext:Spring的Context;
AutowireCapableBeanFactory.AUTOWIRE_BY_NAME:按照名字来注入,注入类型。
/**
	 * 调用spring注入新创建对象的相关属性(根据属性名进行注入)
	 * 
	 * @param bean
	 * @param appContext
	 */
	public static void autowireBean(Object bean, ApplicationContext appContext) {
		autowireBean(bean, appContext, AutowireCapableBeanFactory.AUTOWIRE_BY_NAME);
	}

	/**
	 * 调用spring注入新创建对象的相关属性
	 * 
	 * @param bean
	 * @param appContext
	 * @param autowireMode
	 */
	public static void autowireBean(Object bean, ApplicationContext appContext, int autowireMode) {
		if (bean == null || appContext == null) {
			return;
		}

		AutowireCapableBeanFactory factory = appContext.getAutowireCapableBeanFactory();
		factory.autowireBeanProperties(bean, autowireMode, false);

		String beanName = ClassUtils.getUserClass(bean).getName();
		factory.initializeBean(bean, beanName);
	}
分享到:
评论

相关推荐

    spring依赖注入的实现原理

    Spring能够自动发现并管理标记为`@Component`及其子注解的类,省去了手动配置。 10. **装配(Wiring)** 装配是将Bean实例与它们的依赖关系连接起来的过程。Spring支持自动装配和基于XML或注解的显式装配。 ### ...

    spring依赖注入三种方式 测试源码

    当一个Bean需要另一个Bean作为依赖时,Spring会自动管理这些关系,无需开发者手动进行对象间的引用。 总之,Spring的依赖注入极大地简化了对象之间的协作,降低了系统的复杂性。通过构造器、setter方法或接口注入,...

    SPRING DI注入例子

    Spring框架的Dependency Injection(DI,依赖注入)是其核心特性之一,它允许开发者在运行时通过容器来管理对象及其依赖关系,而不是硬编码这些依赖。这样可以提高代码的可测试性和可维护性,降低了组件之间的耦合度...

    自己的代码模拟spring的依赖注入

    Spring框架通过IoC容器来实现DI,让我们无需手动创建对象,而是由框架来管理这些对象及其依赖关系。现在,我们将深入探讨如何通过自己的代码来模拟Spring的依赖注入。 首先,理解依赖注入的概念至关重要。依赖注入...

    第五章 Spring4 自动装配、方法注入

    依赖注入通过框架在运行时动态地将依赖关系注入到目标对象,使得对象无需关心依赖是如何创建和管理的。 Spring的自动装配是依赖注入的一种形式,它允许Spring容器根据配置信息自动为bean的属性赋值。Spring提供了...

    模拟Spring的依赖注入

    然而,Spring框架提供了更强大、更全面的功能,如自动扫描、类型安全的依赖注入、AOP(面向切面编程)等,这些都是手动模拟难以企及的。在实际开发中,利用Spring框架可以极大地提升开发效率和代码质量。

    Spring依赖注入DI.zip

    Spring框架的依赖注入(Dependency Injection,简称DI)是其核心特性之一,它使得应用程序的组件之间可以松散耦合,增强了代码的可测试性和可维护性。在Spring框架中,DI通过控制反转(Inversion of Control,IoC)...

    spring注入文件写法

    在Spring框架中,注入是一种将依赖关系从代码中解耦并允许对象在运行时自动配置的方法。本示例主要展示了如何使用Spring配置文件来实现数据源、Hibernate会话工厂、事务管理和DAO注入。以下是详细的知识点解析: 1....

    面试官常问的spring依赖注入和bean的装配问题.pdf

    在Spring Boot中,尽管自动化配置十分便捷,但仍然可以通过@Primary、@Qualifier、@Resource等注解来手动装配依赖。 总结来说,Spring框架的依赖注入和Bean装配是面试中的热点问题,掌握它们对于每一个Spring开发者...

    spring mvc 自动注入+dwr

    在 Spring MVC 中,自动注入是一种依赖注入(Dependency Injection, DI)的方式,它允许框架自动为对象设置所需的依赖,而无需手动进行实例化和配置。 1. **依赖注入的概念** 依赖注入是面向切面编程(AOP)的核心...

    spring setter 和构造 注入 例子 spring 4.2.0

    Spring会自动寻找匹配类型的Bean来注入,无需手动配置。此外,还可以使用`@Qualifier`注解来指定注入特定的Bean。 总结来说,Spring的setter和构造注入是实现依赖注入的关键技术,它们提供了灵活且强大的方式来管理...

    spring依赖注入的理解.docx

    当从容器中获取`Person`对象时,Spring会自动将相应的`Car`实例注入到`Person`中,无需程序员手动操作。 总之,依赖注入是Spring框架的核心特性,它通过反转对象的创建控制权,实现了组件间的松耦合,提高了代码的...

    Spring2.5注入

    ### Spring2.5注入详解 #### 一、Spring框架与注解注入的演变 Spring框架作为企业级Java应用开发的主流框架之一,自其诞生以来便致力于简化Java应用的复杂度,提供了一套完整的轻量级开发解决方案。随着版本的不断...

    特殊情况(ActionForm,Servlet, Filter, Listener)下Spring如何注入对象

    1. **Servlet**: 可以在Servlet的init()方法中,通过ApplicationContextAware接口获取Spring上下文,然后手动从上下文中获取依赖的bean。 2. **Filter**: 同样,可以在Filter的init()方法中获取ApplicationContext...

    spring+quartz动态定时任务创建 +mybatis

    Spring作为一个全面的轻量级容器,提供了依赖注入、AOP(面向切面编程)、MVC(模型-视图-控制器)等特性,而MyBatis则是一个优秀的持久层框架,简化了数据库操作。当结合Quartz,一个强大的任务调度库,我们可以...

    手动实现的简单Spring框架

    【标题】手动实现的简单Spring框架 在Java Web开发领域,Spring框架是一个极其重要的存在,它提供了丰富的功能,包括依赖注入、AOP(面向切面编程)、MVC(模型-视图-控制器)架构等。本项目是基于对Spring框架核心...

    MyBatis 基于Mapper的增删改查示例(Spring IOC注入)

    Spring通过@Autowired注解自动将Mapper接口注入到需要使用的地方,无需手动创建Mapper实例。这样可以避免硬编码,提高代码可维护性。 5. **增删改查操作**: - **增加(Create)**:在Mapper接口中定义插入方法,...

    Struts2+Spring3+Hibernate3框架整合标签注入版

    在这个工程中,Spring3采用了标签注入的方式,这意味着在XML配置文件中,我们可以使用`<bean>`标签的`autowire`属性来实现自动装配,减少手动配置的工作量。同时,Spring3还集成了Hibernate3,使得数据访问层的管理...

    spring IOC容器依赖注入XML配置

    这样,开发者无需在代码中手动创建和管理对象,而是由Spring容器负责,从而降低了耦合度。 XML配置是Spring早期的主要配置方式,虽然现在有注解配置和Java配置,但理解XML配置仍然是基础。一个基本的Spring配置文件...

    Spring的自动扫描注入.docx

    在注入时,不要手动 new 该注入的类,因为 Spring 会自动注入。使用 @Autowired 后,不需要 getter() 和 setter() 方法,Spring 也会自动注入。 初始化和销毁方法 在 Spring 框架中,可以使用 @PostConstruct 和 @...

Global site tag (gtag.js) - Google Analytics