博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Spring学习笔记一(Spring核心思想)
阅读量:5965 次
发布时间:2019-06-19

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

通过学习《Spring in action (Third edition)》的第一章,我大概了解了Spring的基本思想:

1,依赖注入(Dependnecy Injection):

在不使用Spring框架的情况下,一个类要跟另一个类建立联系,可能会使用如下的模式:

class A{...}

class B{

private A a;

...       }

这样的话,每次实例化一个B的对象,如b1,必定实例化一个A的对象,如a1,并且b1和a1是紧耦合的,b1牢牢地和a1绑定在一起了。他们之间的关系不能变了。如果有一个a2要与b1建立联系是不可能的。只能在实例化一个b2对象。这样很难进行测试而且程序的灵活性很差。

Spring框架的做法是:

先定义一个接口I,让A实现这个接口I,再定义B,在B中调用接口I,如:

interface I{

method1(){}

}

class A implements I{

method1(){}

}

class B{

I i;

}

然后最重要的,可以再xml中对A,B进行配置:

<?xml version="1.0" encoding="UTF-8"?>

<!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN" "">

<beans>

<!-- 定义bean -->

<bean id="A" class=".....">

<property name="msg">

<value>A</value>

</property>

</bean>

<bean id="B" class=".....">

<constructor-arg ref="A"/>

<property name="msg">

<value>B</value>

</property>

</bean>

</beans>

Spring是通过注入的方式将类A注入到了类B,而且我们可以通过xml将任何实现了I接口的类与类B产生关联。这就是Spring的依赖注入的思想。

2,面向切面编程(AOP):

切面的意思就是,有些类或者说POJO,他们是专门提供某种固定服务的,而且为许多其他的类提供相同的服务,比如日志类logger,安全类security,事务管理类,这些类就像一个个切面一样把其他的类包含在其中。

如果我们不用AOP,那么我们在程序中每个用到这些服务类提供的服务的地方,都要调用该类的方法,非常麻烦。

而用AOP编程,我们可以在xml中来定义各个bean中的方法之间的关系,如

定义了之后,每次只要调用embarkOnQuest()方法,就会在这个方法的前面和后面调用singBeforeQuest和singAfterQuest方法。

3,消除样板式代码简化编程:

在程序开发的时候经常会有重复性的代码,比如:

Spring改变了这种做法:

明显减少了重复性的代码,把程序的重心放在了核心的逻辑上、

 

总结:Spring框架的最终目标就是简化java开发,特别是企业中的java开发。它的核心思想也就是以上这些内容,但是也就是这几个本身就很简单的思想,让Spring能够如愿的实现它的目标。

转载于:https://www.cnblogs.com/hewenwu/p/3797102.html

你可能感兴趣的文章
sql定时自动备份(定时作业)
查看>>
Excel 2013 表格自用技巧
查看>>
ubuntu安装VNC、Xfce桌面
查看>>
浅析支付系统的整体架构
查看>>
二位数组
查看>>
unix文件权限
查看>>
Python 模拟鼠键
查看>>
2017-2018-2 20155224『网络对抗技术』Exp7:网络欺诈防范
查看>>
Source Code Review
查看>>
分享一下我安装启动Jmeter出错时的解决办法
查看>>
java 调用process
查看>>
用a标签实现submit提交按钮的效果
查看>>
毕向东_Java基础视频教程第20天_IO流(1~4)
查看>>
几图理解BeautifulSoup
查看>>
HashMap内部是如何实现的(转)
查看>>
交互设计[3]--点石成金
查看>>
java实现双向循环链表
查看>>
如何使用缓存提高程序性能
查看>>
【trie树】HDU4825 Xor Sum
查看>>
SCCM TP4部署Office2013
查看>>