不考虑webservice,话说如果用spring注入,在扩展,解耦都很好用,还用给service,dao层设计接口吗????

解决方案 »

  1.   

    如果不写接口,我还用spring注入干嘛?还不如直接在类中new了。
      

  2.   

    你知道spring的IOC是怎么实现的吗?如果你明白就不会问这个问题了。
    IOC那是通过动态代理实现的,如果没有了接口,请问spring还如何为你生成代理对象给你使用?如何来实现IOC......
      

  3.   

    我举个小例子哈。。User是个普通的实体类,没有接口,把他注入,也是可以的啊。<bean id="st" class="com.mytest.SpringTest">
    <property name="user">
    <ref bean="user" />
    </property>
    </bean>
    <bean id="user" class="com.mytest.domain.User"/>public class SpringTest {

    private User user;
    public User getUser() {
    return user;
    }
    public void setUser(User user) {
    this.user = user;
    }
    public static void main(String[] args) {
    ApplicationContext context=new ClassPathXmlApplicationContext("beans.xml");
        SpringTest st=(SpringTest)context.getBean("st");
        st.getUser();
    }
    }
      

  4.   

    我举个小例子哈。。User是个普通的实体类,没有接口,把他注入,也是可以的啊。<bean id="st" class="com.mytest.SpringTest">
    <property name="user">
    <ref bean="user" />
    </property>
    </bean>
    <bean id="user" class="com.mytest.domain.User"/>public class SpringTest {

    private User user;
    public User getUser() {
    return user;
    }
    public void setUser(User user) {
    this.user = user;
    }
    public static void main(String[] args) {
    ApplicationContext context=new ClassPathXmlApplicationContext("beans.xml");
        SpringTest st=(SpringTest)context.getBean("st");
        st.getUser();
    }
    }
      

  5.   

    spring注入,说白了就是用配置文件来管理类的实例化和它们间的关联,这跟我们在项目中使用接口的目的都是殊途同归的:减小代码耦合度。
      

  6.   

    所以我感觉用了spring了就不用在弄接口了有次做老师的作业,为了图省事。写了个空的接口摆摆样子给老师看然后直接注入,感觉挺好用的。。
      

  7.   

    spring采用的CGLIB动态代理是使用动态生成class文件的方式,并不是JDK中的Proxy,一定要有接口
      

  8.   

    楼上说的不对吧!应该是在没有接口情况下用cglib有接口使用jdk动态代理。
      

  9.   

    lz,你去看看ioc的原理就明白了,为什么要这样了
      

  10.   

    楼主还没搞清java多态重要性吧,先研究懂为什么很多地方都喜欢用:"Father a=new Son();"
      

  11.   


    其实我的意思是。。举个例子,action要调用service层,如果service层写了接口以及它的实现类serviceImpl,用不用接口只是在<bean>中的class不同而已,那何不直接省去接口,因为每次写方法都要写两次,很麻烦。
      

  12.   


    多态不就是为了降低代码耦合度吗。。spring ioc容器已经可以帮助解耦了,为什么还要重复使用?
      

  13.   

    我懂lz的意思..spring的IOC有两种动态代理,cglib和jdk的.这要看你设置的哪一种了。如果你用的是cglib的动态代理,是可以不需要再设计一个接口.如果用的是jdk的,就必须要有接口了。既然这样,肯定都设计一层接口好些啊,说不定以后项目就想改用jdk的动态代理了,那样的话介个项目不就不能正常运行了吗.
      

  14.   

    如果创建对象用new的话
    一个人访问,内存中就会存放被new出一个对象,如果是一万人或者更多人呢,内存中会存放多少对象,这时候你得好好考虑java的垃圾回收机制了。
    所以在创建对象时,能不new就不new
      

  15.   

    接口是一种协议,面向接口编程,你的程序易于理解,而且后期也好维护。
    service层最好面向接口编程,你的程序会易读,他人也容易理解你写的是什么。
      

  16.   

    jdk自带的Proxy是使用反射的,对性能有不小的影响,但是只要不是AOP的话,只是注入的时候有点影响,如果要用的AOP的话还是CGLIB吧
      

  17.   

    貌似Spring依赖注入不就是强调面向接口编程吗?
      

  18.   

    面向接口的编程是为了让代码更加清晰,后期更好维护,虽然现在的 spring 的有 cglib 帮忙不用强制接口存在了,但还是建议使用接口
      

  19.   

    学习了。
     个人而言,
    我觉得还是2个比较重要吧:
    1.接口是一种规范,例如:多人参与项目,之间肯定会有 方法互调。首先把接口定义好了,人家根本不关心你如何去实现,只要得到他想要的结果,这难道不就是Java一直提倡的思想吗。
    2.还有一种思想,我觉得随便什么东西,能够放入配置文件去管理的尽量放到配置文件管理, 因为真实项目严谨的话,假如你在java代码里面直接new(注:一个项目修改java代码都是很危险的操作,尤其是经过测试人员数次的测试,还有你修改源代码就必须重新打版本,我不知道你们的项目版本是如何管理的),是不是需要重新编译一次?然后更新至服务器,还是你把它放入配置的文件的话。
      

  20.   

    面向接口编程?Spring的Ioc?
    这两个可以有联系,但是不能混在一起。
    Spring支持没有接口的bean注入,这只能说明Spring的灵活性。
    至于为什么要面向接口编程,代码写多了自然就明白鸟
      

  21.   

    面向接口设计是一种良好编程的习惯 不管要不要spring