利用静态工厂和工厂实例方法出现的问题

来源:3-2 自由编程

軍度

2022-04-08 18:41:10

问题描述:

老师我这个就是springIoc容器与Bean管理哪章的3-2自由编程,我那个编程做出来了,只是后面学习了工厂实例后想改成用两种工厂实例的方式,但是就是运行时出现问题

相关代码:

package cn.bhu.beans;

public class Dog {
	private String name;
	private String age;

	public Dog() {
		super();
	}

	public Dog(String name, String age) {
		super();
		this.name = name;
		this.age = age;
	}

	public String getName() {
		return name;
	}

	public void setName(String name) {
		this.name = name;
	}

	public String getAge() {
		return age;
	}

	public void setAge(String age) {
		this.age = age;
	}

	@Override
	public String toString() {
		return "Dog [username=" + name + ", age=" + age + "]";
	}

}

相关代码:

package cn.bhu.beans;

public class Cat {
	private String name;
	private String age;

	public Cat() {
		super();
	}

	public Cat(String name, String age) {
		super();
		this.name = name;
		this.age = age;
	}

	public String getName() {
		return name;
	}

	public void setName(String name) {
		this.name = name;
	}

	public String getAge() {
		return age;
	}

	public void setAge(String age) {
		this.age = age;
	}

	@Override
	public String toString() {
		return "Cat [username=" + name + ", age=" + age + "]";
	}

}

相关代码:

package cn.bhu.factory;

import cn.bhu.beans.Cat;

public class CatStaticFactory {
   public static void create1() {
	   Cat one=new Cat();
	   one.setName("喵喵");
	   one.setAge("2");
   }
}

相关代码:

package cn.bhu.factory;

import cn.bhu.beans.Dog;

public class DogFactoryInstance {
	   public void create2() {
		   Dog two=new Dog();
		   two.setName("汪汪");
		   two.setAge("5");
	   } 
}

相关代码:

package cn.bhu.test;

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

import cn.bhu.beans.Cat;
import cn.bhu.beans.Dog;

public class Application {

	public static void main(String[] args) {
		ApplicationContext ac = new ClassPathXmlApplicationContext("applicationContext.xml");
		Cat cat = (Cat) ac.getBean("cat1");
		System.out.println(cat.toString());
		
		Dog dog = (Dog) ac.getBean("dog1");
		System.out.println(dog.toString());
		
	}

}

相关代码:

<?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
        https://www.springframework.org/schema/beans/spring-beans.xsd">
   <bean id="cat1" class="cn.bhu.factory.CatStaticFactory"
		factory-method="create1">
	</bean> 
	<bean id="factory1" class="cn.bhu.factory.DogFactoryInstance"></bean>
	<bean id="dog1" factory-bean="factory1" factory-method="create2">
	</bean>
</beans>


写回答

1回答

好帮手慕阿园

2022-04-09

同学你好,同学是否是报如下错误

https://img.mukewang.com/climg/6250eb390973083313480044.jpg

如果是,该错误是表示注入 bean 失败异常,使用静态工厂和工厂实例方法实例化时在创建对象的方法中是需要返回具体对象的,如下

https://img.mukewang.com/climg/6250ecd6090dc25f08390264.jpg

所以同学的代码中是需要添加返回值的,如下

https://img.mukewang.com/climg/6250ed9609c0fdd603130135.jpg

https://img.mukewang.com/climg/6250ed8509b28ebb02370126.jpg

祝学习愉快~

0

0 学习 · 9886 问题

查看课程