Spring 学习总结 使用静态工厂创建Bean

创建Bean时,class属性必须指定,此时为静态工厂类。 factory-method指定静态工厂方法名。

接口:

public interface Being {
	public void testBeing();
}

Dog类

public class Dog implements Being{

	private String msg;

	public void setMsg(String msg) {
		this.msg = msg;
	}

	@Override
	public void testBeing() {
		System.out.println(msg + " 狗爱啃骨头");

	}

}

Cat类

public class Cat implements Being{

	private String msg;

	public void setMsg(String msg) {
		this.msg = msg;
	}

	@Override
	public void testBeing() {
		System.out.println(msg + " 猫爱吃老鼠!");

	}

}

 

Bean里配置

<?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-3.0.xsd">
	<bean id="dog" class="com.springtest2.factory.BeingFactory"
		factory-method="getBeing">
		<constructor-arg value="dog" />
		<property name="msg" value="我是狗" />
	</bean>

	<bean id="cat" class="com.springtest2.factory.BeingFactory"
		factory-method="getBeing">
		<constructor-arg value="cat" />
		<property name="msg" value="我是猫" />
	</bean>

</beans>

 调用测试

	private static void testFactory(){
		ApplicationContext context = new ClassPathXmlApplicationContext(new String[]{"beans_factory.xml"});
		Being b1 = context.getBean("dog", Being.class);
		b1.testBeing();

		Being b2 = context.getBean("cat", Being.class);
		b2.testBeing();
	}

输出结果

时间: 2024-12-06 07:53:39

Spring 学习总结 使用静态工厂创建Bean的相关文章

Spring基础(3) : 静态工厂和实例工厂创建bean

public class Factory { public static Person staticCreate(){ Person p = new Person(); p.name="staticCreate"; return p; } public Person instanceCreate(){ Person p = new Person(); p.name="instanceCreate"; return p; } } public static void

spring学习笔记(5)装配Bean 实例工厂 【资源来自网络 版权非本人】

实例工厂:必须现有工厂的实例对象,通过实例对象创建对象.所有的方法都是非静态的(这一点和静态工厂有区别) (直接看代码) 工厂(和静态工厂的区别就是非静态 其他都一样) package c_inject.c_factory; /* * 实例工厂 */ public class MyBeanFactory { public UserService createService(){ return new UserserviceImpl(); } } 配置(配置和静态的有点区别  仔细看看吧 ) <?

spring学习笔记(6)装配Bean 的种类和区别 【资源来自网络 版权非本人】

Bean的种类 1.普通Bean:之前操作的都是普通bean <bean  id="" class="A"> Spring 就直接创建A 然后返回 2.FactoryBean:是一个特殊的Bean,具有工厂生产对象的能力,但是只能生产特定的对象 bean必须实现Factorybean的接口,此接口提供一个getObject()来获得特定的bean. <bean id="" calss="Factorybean"

Spring学习笔记--声明一个简单的Bean

spring依赖的maven dependencyhttp://mvnrepository.com/artifact/org.springframework 在pom.xml中添加如下依赖: <!-- http://mvnrepository.com/artifact/org.springframework/spring-context --> <dependency> <groupId>org.springframework</groupId> <a

Spring学习之路(三)bean注解管理AOP操作

在类上面.方法上面.属性上面添加注解:并用bean来管理: 书写方法:@注解名称(属性名称=值) 第一步:导入jar包 导入spring-aop.jar(spring注解包): 第二步:创建实体类(注解对象) package com.aop; import org.springframework.context.annotation.Scope; import org.springframework.stereotype.Component; /** * value的值是自定义属性值 * @Co

Spring学习总结(0)——Spring详解

一:spring的基本用法: 1,关于spring容器: spring容器是Spring的核心,该 容器负责管理spring中的java组件, ApplicationContext ctx  = new ClassPathXmlApplicationContext("bean.xml");//这种方式实例化容器,容器会自动预初始化所有Bean实例 ctx.getBean("beanName"); ApplicationContext 实例正是Spring容器. Ap

4.spring对象的创建(静态工厂 实例工厂 泛型,嵌套类型)

1.原料类 namespace CreateObjects{    public class GenericClass<T>    { }} PersonDao 类 包含嵌套类型 namespace CreateObjects{    public class PersonDao    {        public class Person         {            public override string ToString()            {         

spring学习(02)之bean实例化的三种方式

bean实体例化的三种方式 在spring中有三中实例化bean的方式: 一.使用构造器实例化:(通常使用的一个方法,重点) 二.使用静态工厂方法实例化: 三.使用实例化工厂方法实例化 第一种.使用构造器实例化: 这种实例化的方式可能在我们平时的开发中用到的是最多的,因为在xml文件中配置简单并且也不需要额外的工厂类来实现. 比如 <?xml version="1.0" encoding="UTF-8"?> <beans xmlns="h

JAVAWEB开发之Spring详解之——Spring的入门以及IOC容器装配Bean(xml和注解的方式)、Spring整合web开发、整合Junit4测试

Spring框架学习路线 Spring的IOC Spring的AOP,AspectJ Spring的事务管理,三大框架的整合 Spring框架概述 什么是Spring? Spring是分层的JavaSE/EE full-stack(一站式)轻量级开源框架. 所谓分层: SUN提供的EE的三层结构:web层.业务层.数据访问层(也称持久层,集成层). Struts2是web层基于MVC设计模式框架. Hibernate是持久的一个ORM的框架. 所谓一站式:Spring框架有对三层的每层解决方案.