为了账号安全,请及时绑定邮箱和手机立即绑定

spring的工厂模式和依赖注入的实例解析(*.ClassNotFoundException)

标签:
Java
//墨盒接口

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告诉我一个方法,推荐给大家

配置文件中有文件名后缀的用/,没有的用.

实在是大赞,明了实用。

还有有谁明确一下这两者的区别以及应用场合吗?

谢谢!!!

点击查看更多内容
1人点赞

若觉得本文不错,就分享一下吧!

评论

作者其他优质文章

正在加载中
感谢您的支持,我会继续努力的~
扫码打赏,你说多少就多少
赞赏金额会直接到老师账户
支付方式
打开微信扫一扫,即可进行扫码打赏哦
今天注册有机会得

100积分直接送

付费专栏免费学

大额优惠券免费领

立即参与 放弃机会
意见反馈 帮助中心 APP下载
官方微信

举报

0/150
提交
取消