`
Spiritualize_彭韬
  • 浏览: 25724 次
  • 性别: Icon_minigender_1
社区版块
存档分类
最新评论

Spring Bean的注入

 
阅读更多

一.设值注入

      1.建立InjectionDaoImpl和InjectionServiceImpl两个类分别为InjectionDao和InjectionService两个接口的实现类,且InjectionDAO为InjectionServiceImpl的一个属性

        

public class InjectionServiceImpl implements InjectionService{

	private InjectionDAO injectionDAO;
	
	//设置注入
	public void setInjectionDAO(InjectionDAO injectionDAO) {
		this.injectionDAO = injectionDAO;
	}

	@Override
	public void save(String arg) {
		System.out.println("Service 接受参数:" + arg);
		arg = arg + ":" + this.hashCode();
		injectionDAO.save(arg);
	}

}

  2.spring-injection.xml

 

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://www.springframework.org/schema/beans
        http://www.springframework.org/schema/beans/spring-beans.xsd" >
        
	<bean id="injectionService" class="main.com.pt.ioc.injection.service.InjectionServiceImpl">
		<property  name="injectionDAO" ref="injectionDAO"></property>	
	</bean>
	<bean id="injectionDAO" class="main.com.pt.ioc.injection.dao.InjectionDaoImpl"></bean>
	
 </beans>

 二.构造注入

       1.同上定义一个仿数据库操作有四个类

public class InjectionServiceImpl implements InjectionService{

	private InjectionDAO injectionDAO;
	
	//构造注入
	public InjectionServiceImpl(InjectionDAO injectionDAO){
		this.injectionDAO = injectionDAO;
	}

	@Override
	public void save(String arg) {
		System.out.println("Service 接受参数:" + arg);
		arg = arg + ":" + this.hashCode();
		injectionDAO.save(arg);
	}

}

 2.spring-injection.xml

   

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://www.springframework.org/schema/beans
        http://www.springframework.org/schema/beans/spring-beans.xsd" >
        
	<bean id="injectionService" class="main.com.pt.ioc.injection.service.InjectionServiceImpl">
		<constructor-arg name="injectionDAO" ref="injectionDAO"></constructor-arg>	
	</bean>
	<bean id="injectionDAO" class="main.com.pt.ioc.injection.dao.InjectionDaoImpl"></bean>
	
 </beans>

 

三.测试方法

     

@RunWith(BlockJUnit4ClassRunner.class)
public class TestInjection extends UnitTestBase{

	public TestInjection(){
		super("classpath*:spring-injection.xml");
	}
	
	@Test
	public void testSetter(){
		InjectionService service = super.getBean("injectionService");
		service.save("对不起,你是傻逼");
	}	

}

    

分享到:
评论
1 楼 Caelebs 2016-05-13  
    service.save("对不起,你是傻逼"); 

相关推荐

    spring bean的生命周期

    - **XML配置**:在传统的Spring应用中,Bean的定义通常写在XML配置文件中,如`springbean-xml`中的配置。 - **注解配置**:使用`@Component`,`@Service`,`@Repository`和`@Controller`注解标记类,配合`@...

    Spring定义bean的三种方式和自动注入

    - `byType`:如果Bean的属性类型只有一个匹配的Bean,那么Spring会自动注入。 `@Autowired`注解则更加智能,它会根据属性类型找到合适的Bean进行注入,如果存在多个匹配的Bean,可以通过`@Qualifier`注解指定特定的...

    spring bean XML配置入门

    一旦XML配置加载到Spring容器中,容器将根据配置创建Bean实例,并按照定义进行初始化、依赖注入,最后完成Bean的生命周期管理。 10. **实践操作**: 在实际开发中,我们可以使用Eclipse的Spring插件来简化Bean...

    Spring Bean创建初始化流程.docx

    在`doCreateBean()`方法中,Spring会创建Bean的实例,`createBeanInstance(beanName, mbd, args)`执行Bean实例的创建,而`populateBean(beanName, mbd, instanceWrapper)`则负责填充Bean的属性,将依赖注入到Bean中...

    Spring bean 动态注册,jar包热替换

    Spring bean 一般通过配置文件和注解进行加载,如果要实现jar或class文件,动态实现spring bean 的动态加载,并通过UrlClassLoader完成jar和class文件的加载。可以实现jar的热替换。spring的bean动态加载则需要对...

    Spring (bean怎样注入值)学习实例

    在Spring框架中,Bean的注入是其核心特性之一,它允许开发者通过声明式的方式管理对象的依赖关系。本文将深入探讨如何在Spring中通过XML配置文件对Bean进行值的注入,包括List、Set和Map等集合类型的注入。 首先,...

    Spring Bean重复执行两次(实例被构造两次)问题分析

    在Spring框架中,Bean的生命周期管理是其核心特性之一,然而有时我们可能会遇到Spring Bean重复执行两次的问题,即实例被构造两次。这个问题可能是由多种原因引起的,涉及到Spring的初始化过程和容器的行为。以下是...

    关于spring boot中几种注入方法的一些个人看法

    @Autowired 是 Spring 中最常用的注入方法之一,它可以对类成员变量、方法及构造函数进行标注,完成自动装配的工作。@Autowired 的工作原理是,在启动 Spring IoC 时,容器自动装载了一个 ...

    spring依赖注入bean

    **Spring 依赖注入 (DI) 与 Bean** Spring 框架的核心特性之一就是依赖注入(Dependency Injection,简称 DI),这是一种设计模式,它允许我们控制组件之间的耦合,而不是让组件自行创建它们所依赖的对象。这有助于...

    通过@Autowired注解注入bean的顺序,以及@bean注入.rar

    `@Autowired`注解由Spring提供,用于自动装配bean的依赖。当我们在字段、构造函数、方法或方法参数上使用`@Autowired`时,Spring会自动查找与所需类型匹配的bean,并将其注入到相应的位置。如果找到多个匹配的bean,...

    详解Spring 中如何控制2个bean中的初始化顺序

    需要注意的是,bean 属性的注入是在初始化方法调用之前。因此,在使用 DependsOn 注解时,需要了解 Spring 中 bean 的加载过程,以免出现错误。 其他实现方式 除了上述两种方式外,还有其他方式可以控制 2 个 bean...

    实例化Spring bean的两种工厂方法

    - **注意事项:**使用工厂方法时,Spring容器无法自动检测Bean的类型,因此在进行类型匹配或依赖注入时,需要明确指定Bean的类型。另外,如果工厂方法抛出异常,Spring容器会捕获并处理,导致Bean无法正常创建。 4...

    spring bean的生命周期测试代码

    2. **属性注入**:Spring会根据Bean定义中的依赖注入(DI)信息,将其他Bean的引用或值设置到当前Bean的属性上。这可以通过setter方法、构造器注入、字段注入等方式完成。 3. **初始化**:在所有属性注入完成后,...

    day38 17-Spring的Bean的属性注入:注解方式

    在Spring框架中,Bean的属性注入是核心功能之一,它允许开发者在不编写代码的情况下配置对象的依赖关系。本文将详细讲解使用注解方式进行Bean属性注入的方法,以及相关的源码和工具应用。 首先,让我们了解Spring中...

    spring bean life cycle

    在Spring框架中,Bean生命周期是核心概念之一,它涉及到Bean的创建、初始化、使用和销毁等阶段。了解和掌握Bean生命周期对于开发高质量的Spring应用至关重要。以下是对Spring Bean生命周期的详细解析。 首先,Bean...

    day38 12-Spring的Bean的属性的注入:名称空间p

    在Spring框架中,Bean的属性注入是核心功能之一,它允许我们通过配置文件或注解来设置Bean实例的属性值,使得对象的初始化更加灵活。本文将深入探讨Spring中的"名称空间p",这是一种用于配置Bean属性注入的方式,...

    Spring bean 管理

    在Spring中,Bean的管理包含多个方面:创建Bean实例、配置Bean属性、控制Bean的生命周期以及Bean作用域的定义。接下来将详细解释这些知识点。 1. Spring的工厂类: Spring通过工厂模式设计了一系列工厂类来创建对象...

    day38 11-Spring的Bean的属性的注入:对象属性

    在本篇内容中,我们将深入探讨Spring如何处理Bean的属性注入,包括对象属性的注入方式、相关注解以及最佳实践。 1. **属性注入的基本概念** - Spring通过依赖注入(Dependency Injection,简称DI)来管理Bean的...

    Spring Bean 加载顺序 .

    在Spring框架中,Bean的加载顺序是理解Spring IoC(Inversion of Control,控制反转)容器工作原理的关键部分。这个过程涉及到Bean定义的解析、实例化、初始化等多个步骤。让我们详细探讨Spring Bean加载顺序的各个...

Global site tag (gtag.js) - Google Analytics