//墨盒接口
public interface Ink {
// 获得颜色方法
public String getColor();
}
//彩色墨盒实现类
public class ColorInk implements Ink {
public String getColor() {
// TODO Auto-generated method stub
return "得到财色墨盒";
}
}
//灰色墨盒实现类
public class GreyInk implements Ink {
public String getColor() {
// TODO Auto-generated method stub
return "灰色墨盒";
}
}
墨盒工厂
public class InkFactory2 {
public Ink getInk(String string) {
if (string.equalsIgnoreCase("color")) {
return new ColorInk();
}else {
return new GreyInk();
}
}
}
测试类
public static void main(String[] args) {
InkFactory2 iFactory2=new InkFactory2();
Ink ink=null;
ink= iFactory2.getInk("color");
System.out.println(ink.getColor());
ink= iFactory2.getInk("grey");
System.out.println(ink.getColor());
将工厂模式交给spring管理,通过依靠配置文件,bean的配置实现工厂实例
<beans>
<bean id="color" class="com/pb/ColorInk.java" />
<bean id="grey" class="com/pb/GreyInk" />
</beans>
测试
//通过上下文获得配置文件信息。(此处报错)
ApplicationContext aContext=new
ClassPathXmlApplicationContext("applicationContext.xml");
Ink ink=null;
//通过getbean的方法传参 “color”获得工厂实例。
ink=(Ink) aContext.getBean("color");
System.out.println(ink.getColor());
ink=(Ink) aContext.getBean("grey");
System.out.println(ink.getColor());
然后重点来了,报错,这就是本文另一个目的了.
" org.springframework.beans.factory.CannotLoadBeanClassException: Cannot find class [com/pb/ColorInk.java] for bean with name 'color' defined in class path resource [applicationContext.xml]; nested exception is java.lang.ClassNotFoundException: com/pb/ColorInk.java
at
java.lang.ClassNotFoundException: com/pb/ColorInk.java
还有一个疑问:
<bean id="color" class="com/pb/ColorInk.java" />
<bean id="grey" class="com/pb/GreyInk" />
配置的class 有没有src 有没有java,有什么区别和意义吗,不过不管哪种配置,报错的内容都一样。
然后百般努力,搜索,求助,
<bean id="color" class="com.pb.ColorInk" />
<bean id="grey" class="com.pb.GreyInk" />
正常输出。
这就是. //的区别。一个符号错了的的路径错误。
有位前辈memories告诉我一个方法,推荐给大家
配置文件中有文件名后缀的用/,没有的用.
实在是大赞,明了实用。
还有有谁明确一下这两者的区别以及应用场合吗?
谢谢!!!
共同学习,写下你的评论
评论加载中...
作者其他优质文章