Spring4.0学习笔记(7) —— 通过FactoryBean配置Bean

1、实现Spring 提供的FactoryBean接口

package com.spring.facoryBean;

import org.springframework.beans.factory.FactoryBean;

public class CarFactoryBean implements FactoryBean<Car> {

    private String brand;

    public void setBrand(String brand) {
        this.brand = brand;
    }

    public Car getObject() throws Exception {
        return new Car(brand);
    }

    public Class<?> getObjectType() {
        return Car.class;
    }

    public boolean isSingleton() {
        return true;
    }
}

2、配置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"
    xmlns:p="http://www.springframework.org/schema/p"
    xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd">

    <!--
        通过FactoryBean 来配置Bean 的实例
        class : 指向FactoryBean的全类名
        property : 配置FactoryBean的属性

        实际返回的是FactoryBean 的 getObject 方法的得到的实例

     -->
    <bean id="car" class="com.spring.facoryBean.CarFactoryBean">
        <property name="brand" value="BMW"></property>
    </bean>
</beans>

3、bean文件

package com.spring.facoryBean;

public class Car {

    public Car(String brand) {
        this.brand = brand;
    }

    @Override
    public String toString() {
        return "Car [brand=" + brand + "]";
    }

    private String brand;

    public void setBrand(String brand){
        System.out.println("setBrand...");
        this.brand = brand;
    }

    public void init(){
        System.out.println("init...");
    }

    public void destroy(){
        System.out.println("destroy...");
    }

}

4、main方法实现

package com.spring.facoryBean;

import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;

public class main {
    public static void main(String[] args) {
        ApplicationContext ctx = new ClassPathXmlApplicationContext("bean-beanFactory.xml");
        Car car = (Car)ctx.getBean("car");
        System.out.println(car);
    }
}
时间: 2024-10-07 05:30:13

Spring4.0学习笔记(7) —— 通过FactoryBean配置Bean的相关文章

【51CTO】Spring4.0学习笔记

9.通过工厂方法配置 9.1静态工厂  注意不是配置静态工厂方法实例,而是配置bean实例 class 属性指向静态工厂的全类名 factory-method  指向静态工厂方法的名字 constructor-arg   如果工厂方法需要传入参数 则使用它传入参数     <bean id="car" class="com.alan.factory.CarFactory" factory-method="getCar">       

Spring框架学习笔记(3)——配置bean

1.属性注入 (1)根据setter方法属性注入,这里使用的是property标签.需要bean属性提供对应的setter方法,比如笔记(1)里的 HelloWorld使用的就是这种方法. <!-- 根据setter方法属性注入 --> <bean id="helloworld" class="com.broadtext.beans.Helloworld"> <property name="name" value=&

Spring4.0学习笔记(2) —— 自动装配

Spring IOC 容器可以自动装配Bean,需要做的是在<bean>的autowire属性里指定自动装配的模式 1)byType 根据类型自动装配,若IOC 容器中有多个目标Bean类型一致的Bean,Spring将无法判定哪个Bean最适合该属性,不能执行自动装配 2)byName 根据名称自动装配,必须将目标Bean名称和属性名设置的完全相同 配置方法: Address.java package com.spring.autowire; public class Address { p

Spring4.0学习笔记(5) —— 管理bean的生命周期

Spring IOC 容器可以管理Bean的生命周期,Spring允许在Bean生命周期的特定点执行定制的任务 Spring IOC 容器对Bean的生命周期进行管理的过程: 1.通过构造器或工厂方法创建Bean的实例 2.为Bean的属性设置值和对其他Bean的引用 3.调用Bean的初始化方法 4.Bean可以使用了 5.当容器关闭时,调用Bean的销毁方法 bean文件 package com.spring.cycle; public class Car { public Car(){ S

Spring框架学习笔记(4)——配置bean more

1.配置List属性 <!-- 配置List属性 --> <bean id="person4" class="com.broadtext.beans.collection.Person"> <property name="name" value="hjj"></property> <property name="age" value="24&q

一起学ASP.NET Core 2.0学习笔记(二): ef core2.0 及mysql provider 、Fluent API相关配置及迁移

不得不说微软的技术迭代还是很快的,上了微软的船就得跟着她走下去,前文一起学ASP.NET Core 2.0学习笔记(一): CentOS下 .net core2 sdk nginx.supervisor.mysql环境搭建搭建好了.net core linux的相关环境,今天就来说说ef core相关的配置及迁移: 简介: Entity Framework(以下简称EF) 是微软以 ADO.NET 为基础所发展出来的对象关系对应 (O/R Mapping) 解决方案,EF Core是Entity

thinkphp学习笔记4—眼花缭乱的配置

1.配置类别 ThinkPHP提供了灵活的全局配置功能,ThinkPHP会依次加载管理配置>项目配置>调试配置>分组配置>扩展配置>动态配置,所以后面的配置权限要大于前面的,因为后面的配置会覆盖前面同名配置,同事会生辰配置缓存文件无需重复解析,减小开销. 惯例配置:在惯例配置内对大多数常用参数进行默认配置,因为惯例配置最先加载,优先级别最低,如果不需要做特殊配置的话,完全可以保持默认值,惯例配置位于ThinkPHP/Conf/convention.php,内容摘抄如下: &l

学习笔记——Maven settings.xml 配置详解

文件存放位置 全局配置: ${M2_HOME}/conf/settings.xml 用户配置: ${user.home}/.m2/settings.xml note:用户配置优先于全局配置.${user.home} 和和所有其他系统属性只能在3.0+版本上使用.请注意windows和Linux使用变量的区别. settings.xml详解 声明规范 <?xml version="1.0" encoding="UTF-8"?> <settings x

struts2学习笔记(6)------配置struts2中的异常处理

我们平常的异常处理是直接在方法中手动捕捉异常,当捕捉到特定异常后,返回特定逻辑视图名.这样的缺点是代码与异常处理耦合太多,一旦要改变异常处理方式,需要修改代码! struts2提供给了一种更好的方式来处理异常------声明式的方式管理异常处理,我们可以通过再方法里将出现的异常throw出去,抛给struts2框架处理,然后再struts2中默认开启着异常映射功能,该功能在struts-default.xml中配置的一个拦截器,如下: <interceptor name="exceptio