博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
确切的说spring框架是做什么的?(翻译自stackoverflow的一个回答)
阅读量:7172 次
发布时间:2019-06-29

本文共 1809 字,大约阅读时间需要 6 分钟。

问题: 确切的说spring框架是做什么?

描述:我听到了许多关于spring,大家都说在web的世界里做开发spring是非常好的一个框架。但是确切的说它是做什么的?我在开发中如何使用它,有没有示例?

回答:

使用spring可以使你的代码耦合度很低,它最基本的概念是依赖注入。
我将尽我所能给你一个最简单的示例。

问题: 你需要实现一个用户系统并且已经声明了一个接口:UserLister

public interface UserLister{    List
getUsers();}

实现上面的接口,你需要访问数据库获取到所有用户。

public class UserListerDB implements UserLister{    public LisT
getUsers(){ //DB access code here }}

在你的视图里,你需获得一个实例(记住,下面的仅仅是例子):

public class SomeView{    private UserLister userLister;        public void render(){        List
users=userLister.getUsers(); view.render(users); }}

注意到没有上面的代码并没有初始化变量 userLister,那么我们应该怎么做呢?如果我明确的指定实例对象:

UserLister userLister =new UserListerDB();

如果这样做了,类的实现和视图的耦合度是比较高的。如果我想切换数据库的实现,例如从多个分离的文件获取所有的用户(请记住,这仅仅是个示例)在这种情况下我将再一次修改我的代码(如果他被应用到很多地方,那么悲剧了):

UserLister userLister =new UserListerCommaSeparatedFile();

如果这个是一个小项目改动的地方还能接受,如果是个很大的项目并且上面的代码被应用到了很多地方,那么它的维护将是一场噩梦。

spring要做的(依赖注入)

spring所要做的是使用xml连接类,这种方式下spring实例和初始化所有的对象并且注入到正确的地方。(servlet,web frameworks,business classes ,DAOs,etc,etc........)

回到上面的示例,使用spring我们仅仅需要在xml 确定userLister的具体的实现:

在这种方式下当视图被创建的时候,它将直接使用 userLister(spring 已经注入了实例,因为在上面的xml 已经声明了):

List
users=userLister.getUsers(); // This will actually work without adding and line of code

这种方式棒极了,不是吗?

  • 如果你想使用userLister 接口的另一个实现怎么办?仅仅改变xml
  • 如果 userLister接口,你还没有准备实现怎么办?编写一个模拟实现,简化视图的开发
  • 如果我不想使用spring怎么办?那就不使用了!你的应用程序和它是不耦合的, 控制反转状态:“应用程序控制框架,而不是框架控制应用程序“

还有其他的依赖注入可以选择,但在我看来 spring非常著名并且 简单,优雅,稳定,SpringSource的人已经编写了很多的POJOs能够使spring和其他的框架集成,并且spring是非入侵式的。

spring也有很多其他的子项目,例如:spring mvc ,spring WebFlow,spring Security 。

希望能够帮助你,不论如何,我鼓励你去读以下

的依赖注入和控制反转的文章,因为他比我讲的好。在我看来,它是我看过最好的关于spring 的书。

补充: 框架是帮助我们编码,但是不要成为框架的奴隶。

关注我的公众号第一时间阅读有趣的技术故事

扫码关注:

也可以在微信搜索公众号即可关注我:codexiulian

渴望与你一起成长进步!

转载地址:http://ggbzm.baihongyu.com/

你可能感兴趣的文章
DELL PowerEdge 2950 RAID5数据恢复手记
查看>>
SDSQliteOpenHelper将数据库建立在SD卡上
查看>>
微软下载中心使用Silverlight搜索
查看>>
深入浅出WPF(1)——什么是WPF
查看>>
配置springmvc在其他类中(spring容器外)获取注入bean
查看>>
安装rrdtool1.4.2的脚本
查看>>
Powershell与运维之系统管理(一)磁盘管理
查看>>
多核内存共享和分布式内存系统的区别
查看>>
经典星号查看器查看密码
查看>>
window 2008 由于不是正版问题老是自动重启
查看>>
VB Script判断文件夹下文件的数量并发MAIL预警
查看>>
音视频开发:码率、延时、花屏、卡顿
查看>>
Wireless MiTM Attacks
查看>>
RHCE 学习笔记(3)- 文件,目录和帮助
查看>>
加入百度运维大家庭,步入成长快车道
查看>>
Magent搭建Memcached集群
查看>>
快速构建cacti监控系统
查看>>
SQL Server 2012 Always on Listener 配置和作用
查看>>
简单而不简陋﹣wp7视觉点滴
查看>>
013 把模型对象存入session的危险性
查看>>