Spring应用教程-2 方法注入

我们通常使用lookup方法注入,它可使Spring替换一个Bean的抽象或具体方法,返回查找容器中,其他Bean的结果,被查找的Bean通常是一个non-singleton Bean。

无状态的Bean的作用域一般可以配置成singleton单实例,如果我们向singleton的BeanA注入prototype的BeanB,并希望每次调用BeanA的getBeanB()时都能返回一个新的BeanB,使用传统的注入方式方法将无法实现这样的要求。因为singleton的Bean注入关联Bean的动作只有一次,虽然BeanB的作用域是prototype类型,返回的对象不是最开始注入的那个bean。

如果希望每次调用BeanA的getBeanB()时都能返回一个新的BeanB一种可选的方案是让Bean实现BeanFactoryAware接口,让BeanA能访问容器的引用,以下代码可以实现方式达到目的:

[+] view code

public class Bean_A implements BeanFactoryAware{

private Bean_B bean_B=null;

private BeanFactory beanFactory=null;

@Override

public void setBeanFactory(BeanFactory beanFactory) throws BeansException {

this.beanFactory=beanFactory;

}

public Bean_B getBean_B(){

return beanFactory.getBean("bean_B", Bean_B.class);

}

}

时间: 02-10

Spring应用教程-2 方法注入的相关文章

Spring 自动装配;方法注入

通过配置defalut-autowire属性,Spring IOC容器可以自动为程序注入Bean:默认是no(不启用自动装配). default-autowire的类型有: byName:通过名称自动进行匹配 byType:通过属性自动进行匹配 示例如下: 一个实体类people public class People{ private int id; private String name; private int age; private Dog dog; } beans.xml配置: <?

Spring 4.2 方法注入解决单例Bean的原型Bean依赖问题

当你在单例Bean中使用原型Bean依赖时,注意,依赖在实例化时解析.因此,如果你依赖注入一个原型Bean到单例Bean中,新的原型Bean被实例化然后依赖注入到单例Bean中.提供给单例Bean的原型实例是唯一的. 然而,假设你想单例Bean在运行时多次获取一个新的原型Bean的实例.你不能依赖注入一个原型Bean到你的单例Bean中,因为注入只发生一次,当Spring容器实例化单例Bean时解析并注入它的依赖.如果你在运行时多次需要一个新的原型Bean,可以使用方法注入. 在大多数应用程序情

spring 构造方法注入和setter方法注入的XML表达

1.构造方法注入 1 <?xml version="1.0" encoding="UTF-8"?> 2 <!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN" "http://www.springframework.org/dtd/spring-beans.dtd" > 3 <beans> 4 <bean id="person&quo

Spring查询方法的注入 为查询的方法注入某个实例

//这里是客户端的代码 当调用CreatePersonDao这个抽象方法或者虚方法的时候由配置文件返回指定的实例 为查询的方法注入某个实例 start static void Main(string[] args)        {            IApplicationContext ctx = ContextRegistry.GetContext();            Console.WriteLine("查询方法");            ObjectFactor

Spring应用教程-3 依赖关系配置

注:组件与组件之间的耦合,采用依赖注入管理,但普通的JavaBean属性值,应直接在代码中设置. 1. 注入其他Bean的属性值 我们分析一下,Bean_A的一个属性要依赖Bean_B的一个属性值.这时应该怎么配,我们以前使用的都是通过setter方法来为Bean设置值,现在我们却要使用getter方法来获取Bean的属性值.使用我们现在的知识完全可以解决这个问题(可以先不看下面的分析,对照Spring应用教程-1的第六节:Bean的生命周期自己分析): ①Bean_A的一个属性要依赖Bean_

史上最简单的 Spring MVC 教程(十)

1 前言 在史上最简单的 Spring MVC 教程(九)中,咱们已经实现了图片的上传及显示功能,那么接下来,在本篇博文中,咱们更进一步,以实体类(Person)中的字段"name"和控制器(PersonController)中的方法 updatePersonList 为例,实现参数的校验功能. 2 注解示例 - 参数校验 老规矩,首先给出项目结构图: 在给出代码之前, 咱们先明确参数校验的步骤: 导入参数校验的 jar 包: 在实体上配置需要校验的属性: 在控制器的方法中用注解 @V

Spring MVC 教程

目录  一.前言二.spring mvc 核心类与接口三.spring mvc 核心流程图 四.spring mvc DispatcherServlet说明 五.spring mvc 父子上下文的说明 六.springMVC-mvc.xml 配置文件片段讲解 七.spring mvc 如何访问到静态的文件,如jpg,js,css 八.spring mvc 请求如何映射到具体的Action中的方法 九. spring mvc 中的拦截器:十. spring mvc 如何使用拦截器 十一. spri

Spring框架 教程

Spring教程 Spring教程...1 Spring框架概述...3 Spring是什么?...3 Spring的历史...4 Spring的使命(MissionStatement)...4 Spring受到的批判...4 Spring包含的模块...5 总结...6 Spring的IoC容器...6 用户注册的例子...7 面向接口编程...8 (用户持久化类)重构第一步--面向接口编程... 重构第二步--工厂(Factory)模式... 重构第三步--工厂(Factory)模式的改进.

Spring的生命周期及注入详解

1.web服务启动时,Spring在默认情况下是实例化所有的Bean(而不是需要用时在实例化,就好比数据库连接池),而且只创建一次,而且是单例的,这就是Bean的生命周期. 2.要改变默认的单例模式,可以这么做,把scope属性值设置为prototype(这个属性默认是懒加载的,意思是用到相应的Bean时才实例化): <bean id="a"  class="com.gdut.Student" scope="prototype"/>