Spring学习笔记(1)——快速入门

认识Spring框架

Spring框架是Java应用最广的框架,其成功来源于理念,而不是技术本身。理念包括IoC(Inversion of Control,控制反转)和AOP(Aspect Oriented Programming,面向切面编程)。

什么是Spring

  1. Spring是一个轻量级的DI(Dependency Injection,依赖注入)/IoC和AOP容器的开源框架。
  2. Spring提倡以“最少侵入”的方式来管理应用中的代码,这意味着我们可以随时安装或者卸载Spring。
  3. 适用范围:任何Java应用 | 根本使命:简化Java开发
  4. Spring正在涉足和创新的领域有移动开发、社交API集成、NoSQL数据库、云计算以及大数据等。

Spring常用术语

  • 框架:是能完成一定功能的半成品
  • 非侵入式设计:无需继承框架提供的任何类。这样在更换框架时,之前写过的代码几乎可以继续使用。
  • 轻量级和重量级:轻量级一般就是非侵入性的、所依赖的东西非常少、资源占用非常少、部署简单等等。重量级正好相反。
  • JavaBean:即符合JavaBean规范的Java类。
  • POJO:即Plain Old Java Objects,简单老式Java对象。它可以包含业务逻辑或持久化逻辑,但不担当任何特殊角色且不集成或不实现任何其它Java框架的类或接口。

注:一个Spring组件可以是任意形式的POJO。

  • 容器:从程序设计角度看就是装对象的对象,因为存在放入、拿出等操作,所以容器还要管理对象的生命周期

Spring的优势

  • 低侵入、低耦合(降低组件之间的耦合度,实现软件各层之间的解耦)
  • 声明式事物管理(基于切面和惯例)
  • 方便集成其他框架(如MyBatis、Hibernate)
  • 降低Java开发难度
  • Spring框架中包括了J2EE三层的每一层的解决方案(一站式)

Spring能帮我们做什么

  1. Spring能帮我们根据配置文件创建及组装对象之间的依赖关系
  2. Spring面向切面编程能帮助我们无耦合的实现日志记录,性能统计,安全控制。
  3. Spring能非常简单的帮我们管理数据库事务。
  4. Spring还提供了与第三方数据访问框架(如Hibernate、JPA)无缝集成,而且自己也提供了一套JDBC访问模板来方便数据库访问。
  5. Spring能方便的与Java EE(如Java Main、任务调度)整合,与更多技术整合(比如缓存框架)。
  6. Spring的框架结构:
    Spring的框架结构
  • Data Access/Integration层包含有JDBC、ORM、OXM、JMS和Transaction模块。
  • Web层包含了Web、Web-Servlet、WebSocket、Web-Porlet模块。
  • AOP模块提供了一个符合AOP联盟标准的面向切面编程的实现。
  • Core Container(核心容器)包含有Beans、Core、Context和SpEL模块。
  • Test模块支持使用JUnit和TestNG对Spring组件进行测试。

Spring Ioc 和 DI 简介

IoC:Inversion of Control(控制反转)

  • 读作“反转控制”更好理解,是一种设计思想,就是将原本在程序中手动创建对象的控制权,交由Spring框架来管理
  • 正控:若要使用某个对象,需要自己去负责对象的创建。
  • 反控:若要使用某个对象,只需要从Spring容器中获取需要使用的对象,不关心对象的创建过程,也就是把创建对象的控制权反转给了Spring框架
  • 好莱坞法则:Don’t call me, I’ll call you.

一个例子:
IoC解读
总结:

  • 传统方式:通过new关键字主动创建一个对象
  • IoC方式:直接从Spring那里去获取一个对象。(对象的创建权本从自己手里交给了Spring)

DI:Dependency Injection(依赖注入)

  • 指Spring创建兑现搞得过程中,将对象依赖属性(简单值,集合,对象)通过配置设值给该对象。
  • IoC和DI其实是同一个概念的不同角度描述,DI相对IoC而言,明确描述了被注入对象依赖IoC容器配置依赖对象

Ioc是如何实现的

  1. 读取标注或者配置文件
  2. 使用反射的API,基于类名实例化对应的对象实例
  3. 将对象实例通过构造函数或者setter,传递给引用变量

Srping AOP 简介

IoC是Spring的核心,AOP是Spring最为重要的功能之一,在数据库事务中AOP被广泛使用。

AOP(Aspect Oriented Program,面向切面编程)

面向切面编程吧功能分为核心业务功能和周边功能。

  • 核心业务:比如登录,增加数据,删除数据等都叫核心业务
  • 周边功能:比如性能统计,日志,事务管理等等。

周边功能在Spring的面向切面编程AOP思想里,即被定义为切面
AOP把核心业务功能和切面功能分别独立进行开发,然后把切面功能和核心业务功能“编织”在一起,这就叫AOP。

AOP 的目的

AOP能够将那些与业务无关,却为业务模块所共同调用的逻辑或责任(例如事务处理、日志管理、权限控制等)封装起来,便于减少几桶的重复代码,降低模块间的耦合度,并有利于未来的可拓展性和可维护性。

AOP 当中的概念

  • 切入点(Pointcut):在哪些类,在哪些方法上切入(where)
  • 通知(Advice):在方法执行的什么时候(when:方法前、后、前后)实际做什么(what:增强的功能)
  • 切面(Aspect):切面=切入点+通知,就是在什么时机,什么地方,做什么增强。
  • 织入(Weaving):把切面加入到对象,并创建出代理对象的过程。(由Spring来完成)

AOP 编程

  1. 在某一packet下创建某一service类,进行处理、服务。
  2. 在xml文件中装配该service bean。
  3. 在TestSpring中编写测试代码,运行。
  4. 在packet:aspect下准备日志切面LoggerAspect类。
  5. 在xml文件中声明业务对象和日志切面(配置AOP)。
  6. 再次运行TestSpring中的测试代码,代码并没有改变,但在业务方法运行之前和运行之后,都分别输出了日志信息。

文章转自https://www.cnblogs.com/wmyskxz/p/8820371.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值