对Spring的理解

1

Spring是个开源框架,为了解决企业级应用开发而创作出来。Spring不仅仅局限于服务端开发,而且任何的java应用都能借助于spring变得更简单,可测试性强,松耦合性好(彼此之间的信息最少)。

2

Spring框架有哪些特征?

1)轻量

从大小与开销两方面而言Spring都是轻量的。完整的Spring框架可以在一个大小只有1MB多的JAR文件里发布。并且Spring所需的处理开销也是微不足道的。

2)控制反转(IOC)

可以不用new方法来创建对象,Spring框架可以实现所有对象的创建和依赖关系维护。

举例:(传统的程序设计:)
在这里插入图片描述
使用IOC/DI容器后程序设计:

在这里插入图片描述

3)面向切面编程(AOP)

AOP解决了什么问题?
主要是在程序开发中用来解决一些系统层面上的问题,比如日志,食物,让权等待。

举例:从事务的层面来理解AOP
比如我们现在要做一个ATM系统。

假设有这样的两个流程:

1.开始 -> 验证用户 -> 取款 -> 结束。
2.开始 -> 验证用户 -> 显示余额 -> 结束。

我们可以发现,验证用户的代码明显重复了,这不符合我们的低耦合,高内聚的思想。这是aop就起作用了。

作用实例图:

在这里插入图片描述
我们可以写一个验证用户的类,然后依次跟取款,查询,转账绑定,就不用费事的写三遍了。为什么说是面向切面,因为我们从图中可以看出,验证用户这一条线,切了取款,查询,转账的操作。

关键代码举例:

<!-- 注解形式 开启aop -->
  <aop:aspectj-autoproxy ></aop:aspectj-autoproxy>
  
  <!-- 创建对象 -->
     <bean id="User" class="cn.its.aop.User"></bean>
       <bean id="Verification" class="cn.its.aop.Verification"></bean>

User.java

package cn.its.aop;
 
public class User {
  
	
	public void Withdraw() {
		
		System.out.println("我要取一个亿");
 
	}
	
	 public  void query() 
      {
	 System.out.println("我要查我还有多少钱");
      }
}

Verification.java

package cn.its.aop;
 
import org.aspectj.lang.annotation.Aspect;
import org.aspectj.lang.annotation.Before;
import org.springframework.stereotype.Component;
//@Component(value="user") 对象注解
//aop注解
//Transactional 事务注解
 
@Aspect  //切面
public class Verification {
     @Before(value = "execution(* cn.itcast.aop.User.*(..))")//表示User内所有的方法 都要验证
	 public void before1(){
	         System.out.println("我要验证你 是不是我的用户");
		 System.out.println("|");
		 System.out.println("V");
		 
	 }
}

运行结果:

我要验证你是不是我的用户
|
V
我要取一个亿

我要验证你是不是我的用户
|
V
我要查我还有多少钱。

3

方便集成各种优秀的框架

4

方便程序的测试,spring对junit4支持。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值