热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

用了spring注入了,还用设计接口吗?

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

32 个解决方案

#1


可以忽略了,但是最好还有,

#2


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

#3


这两者有关系吗?

#4


接口注入,沒接口,如何注入。。。。。。。。。。。。。。。。。

#5


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

#6


引用 4 楼  的回复:
接口注入,沒接口,如何注入。。。。。。。。。。。。。。。。。


请问能浅谈一下IOC吗?

#7


引用 2 楼  的回复:
如果不写接口,我还用spring注入干嘛?还不如直接在类中new了。


反向注入啊!

#8


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

我举个小例子哈。。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();
}
}

#9


引用 4 楼  的回复:
接口注入,沒接口,如何注入。。。。。。。。。。。。。。。。。

我举个小例子哈。。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();
}
}

#10


去了解下java接口的好处吧。

#11


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

#12


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

#13


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

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

#14


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

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

#15


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

#16


引用 14 楼  的回复:
引用 5 楼  的回复:

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

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




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




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

#17


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

#18


引用 16 楼  的回复:
引用 14 楼 的回复:

引用 5 楼 的回复:

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

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




……


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

#19


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


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

#20


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

#21


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

#22


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

#23


楼主知道面向对象的特征吗?知道为什么用多态吗??

#24


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

#25


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

#26


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

#27


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

#28


我建议写好接口,你先注释一下。留在那不用。放到一个包了。

#29


什么玩意? 

#30


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

#31


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

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


肤浅,没看到内在的东西

#32


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

推荐阅读
  • PHP 修改 XML 文件内容的方法详解
    本文详细介绍了如何使用 PHP 对 XML 文件进行修改,包括读取、遍历、修改和保存等操作步骤,帮助读者更好地理解和应用这些技术。 ... [详细]
  • 本文介绍了如何在Spring框架中使用AspectJ实现AOP编程,重点讲解了通过注解配置切面的方法,包括方法执行前和方法执行后的增强处理。阅读本文前,请确保已安装并配置好AspectJ。 ... [详细]
  • 本文介绍了 Go 语言中的高性能、可扩展、轻量级 Web 框架 Echo。Echo 框架简单易用,仅需几行代码即可启动一个高性能 HTTP 服务。 ... [详细]
  • Cookie学习小结
    Cookie学习小结 ... [详细]
  • 作为一名新手开发者,我正在尝试使用 ASP.NET 和 Vue.js 构建一个单页面应用,涉及多个复杂组件(如按钮、图表等)。希望有经验的开发者能够提供指导。 ... [详细]
  • C语言是计算机科学和编程领域的基石,许多初学者在学习过程中会感到困惑。本文将详细介绍C语言的基本概念、关键语法和实用示例,帮助你快速上手C语言。 ... [详细]
  • java解析json转Map前段时间在做json报文处理的时候,写了一个针对不同格式json转map的处理工具方法,总结记录如下:1、单节点单层级、单节点多层级json转mapim ... [详细]
  • vue引入echarts地图的四种方式
    一、vue中引入echart1、安装echarts:npminstallecharts--save2、在main.js文件中引入echarts实例:  Vue.prototype.$echartsecharts3、在需要用到echart图形的vue文件中引入:   importechartsfrom"echarts";4、如果用到map(地图),还 ... [详细]
  • 事件是程序各部分之间的一种通信方式,也是异步编程的一种实现形式。本文将详细介绍EventTarget接口及其相关方法,以及如何使用监听函数处理事件。 ... [详细]
  • 本文介绍如何使用 Python 的 DOM 和 SAX 方法解析 XML 文件,并通过示例展示了如何动态创建数据库表和处理大量数据的实时插入。 ... [详细]
  • 深入解析Struts、Spring与Hibernate三大框架的面试要点与技巧 ... [详细]
  • 本文详细解析了使用C++实现的键盘输入记录程序的源代码,该程序在Windows应用程序开发中具有很高的实用价值。键盘记录功能不仅在远程控制软件中广泛应用,还为开发者提供了强大的调试和监控工具。通过具体实例,本文深入探讨了C++键盘记录程序的设计与实现,适合需要相关技术的开发者参考。 ... [详细]
  • 在 CentOS 7 系统中安装 Scrapy 时遇到了一些挑战。尽管 Scrapy 在 Ubuntu 上安装简便,但在 CentOS 7 上需要额外的配置和步骤。本文总结了常见问题及其解决方案,帮助用户顺利安装并使用 Scrapy 进行网络爬虫开发。 ... [详细]
  • 深入理解Java中的多态性概念及其应用
    多态是面向对象编程中的三大核心特性之一,与封装和继承共同构成了面向对象的基础。多态使得代码更加灵活和可扩展,封装和继承则为其提供了必要的支持。本文将深入探讨多态的概念及其在Java中的具体应用,帮助读者全面理解和掌握这一关键知识点。 ... [详细]
  • Linux 实时网络流量监控工具 iftop 使用指南
    iftop 是一款强大的实时网络流量监控工具,通过安装和配置该工具,用户可以实时监控网络接口的流量情况。本文将详细介绍 iftop 的安装步骤、常用参数及操作命令。 ... [详细]
author-avatar
久居我心入我怀
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有