~~~~~~~Spring~~~~~~

本文深入解析Spring框架的核心概念,包括IOC和AOP,以及如何利用Spring简化企业级应用开发。涵盖Spring模块介绍,bean元素配置,作用范围与生命周期管理,属性注入方式,注解配置步骤,与JUnit整合测试,及AOP编程支持。

0.为什么学习Spring?

方便解耦,简化开发
Spring就是一个大工厂,可以将所有对象创建和依赖关系维护,交给Spring管理。
AOP编程的支持
Spring提供面向切面编程,可以方便的实现对程序进行权限拦截,运行监控等功能。
声明式事务的支持
只需要通过配置就可以完成对事务的管理,而无需手动编程。
方便程序的测试
Spring对Junit4支持,可以通过注解方便的测试Spring程序。
方便集成各种优秀框架
Spring不排斥各种优秀的开源框架,其内部提供了各种对优秀框架(Struts,Hibernate,MyBatis等)的直接支持。
降低JavaEE API的使用难度
Spring对JavaEE开发中非常难用的一些API(JDBC,JavaMail,远程调用等),都提供了封装,使这些API应用难度大大降低。

1.Spring是什么

Spring是由Rod Jojnson创建的一个开源框架。Spring为简化企业级开发而生,使用Spring,JavaBean就可以实现很多以前要靠EJB才能实现的功能。同样的功能,在EJB中要通过繁琐的配置和复杂的代码才能够实现,而在Spring中却非常的优雅和简洁。 **任何Java应用都可以从Spring中受益。**简单来说,Spring是一个分层的JavaSE/EEfull-stack(一站式)轻量级开源框架。

2.Spring概念----Spring的核心是IOC和AOP

2.1 IOC(DI)

以前对象的创建是由我们开发人员自己维护,包括依赖关系也是自己注入。使用了spring之后,对象的创建以及依赖关系可以由spring完成创建以及注入。反转控制就是反转了对象的创建方式从我们自己创建反转给了程序(spring)。

DI:依赖注入,反转控制(IOC)最经典的实现。实现IOC思想需要DI做支持。
注入方式

  • set方法注入
  • 构造方法注入
  • 字段注入

注入类型

  • 值类型注入 8大基本数据类型
  • 引用类型注入 将依赖对象注入

2.2 AOP

3.Spring概念----Spring模块

Spring模块图

4.Spring概念----applicationContext&BeanFactory

4.1 BeanFactory接口

1.spring原始接口。针对原始接口的实现类,功能较为单一;
2.BeanFactory接口实现类的容器。特点是每次在获得对象时才会创建对象。

4.2 ApplicationContext

1.每次容器启动时就会创建容器中配置的所有对象.并提供更多功能;
2.从类路径下加载配置文件:ClassPathXmlApplicationContext;
3.从硬盘绝对路径下加载配置文件:FileSystemXmlApplicationContext(“d:/xxx/yyy/xxx”)。
结论1BeanFactory是在getBean的时候才会生成类的实例;ApplicationContext是在加载applicationContext.xml时就会被创建。
结论2web开发中,使用applicationContext. 在资源匮乏的环境可以使用BeanFactory。

5.Spring配置详解----bean元素

applicationContext.xml中的配置:
bean元素配置

6.Spring配置详解----bean元素进阶

6.1 scope属性----Bean的作用范围

singleton(默认值):单例对象,被标识为单例的对象在spring容器中只会存在一个实例;
prototype:多例原型,被标识为多例的对象,每次再获得才会创建,每次创建都是新的对象,整合strut2时,ActionBean必须配置为多例的;
request(了解):web环境下,对象与request生命周期一致;
session(了解):web环境下,对象与session生命周期一致;

6.2 Bean的生命周期的配置

通过配置标签上的init-method作为Bean的初始化时候执行的方法,配置destroy-method作为Bean的销毁时候执行的方法。
销毁方法想要执行,需要时单例创建的Bean而且在工厂关闭的时候,Bean才会被销毁。

7.Spring配置详解----Spring生成bean的三种方式

  • 空参构造方法
  • 静态工厂(了解)
  • 实例工厂(了解)
    applicationContext.xml
    工厂类
    测试类

8.Spring配置详解----Spring的分模块配置

在这里插入图片描述

9.Spring属性注入

注入方式

  • set方法注入
    在这里插入图片描述
  • 构造函数注入
    在这里插入图片描述
  • p名称空间注入
    在这里插入图片描述
  • spel注入
    语法: #{SpEL}
    在这里插入图片描述

复杂类型注入

数组
在这里插入图片描述在这里插入图片描述
List
在这里插入图片描述在这里插入图片描述
Map
在这里插入图片描述
Properties
在这里插入图片描述

10.使用注解配置spring

步骤:

  1. 导包(4+2+1[aop])
  2. 为主配置文件[applicationContext.xml]引入新的命名空间
  3. 使用注解代理配置文件
    在这里插入图片描述
  4. 在类中使用注解完成配置

将对象注册到容器中

在这里插入图片描述

修改对象的作用范围

在这里插入图片描述

值类型注入

有两种方法,第一种是在属性上设置,破坏了封装性
在这里插入图片描述
第二种是通过set方法赋值,推荐使用
在这里插入图片描述

引用类型注入

有两种方法,第一种方法是自动装配
在这里插入图片描述
第二种方法是手动注入,推荐使用
在这里插入图片描述

初始化和销毁方法

在这里插入图片描述

11.spring与junit整合测试

  1. 导包 4+2+aop+test
  2. 配置注解
    在这里插入图片描述
  3. 测试
    在这里插入图片描述

12.AOP

什么是AOP

AOP (Aspect Oriented Programing) 称为:面向切面编程,它是一种编程思想。
AOP采取横向抽取机制,取代了传统纵向继承体系重复性代码的编写方式。AOP 是 OOP(面向对象编程)的思想延续。
AOP 思想: 基于代理思想,对原来目标对象,创建代理对象,在不修改原对象代码情况下,通过代理对象,调用增强功能的代码,从而对原有业务方法进行增强 !

为什么要学习AOP

在不修改源码的情况下,对程序进行增强。
AOP可以进行权限校验,日志记录,性能监控,事务控制

AOP底层实现

代理机制:
Spring的AOP底层用到两种代理机制:
*JDK的动态代理(优先):针对实现了接口的类产生代理。
* Cglib的动态代理(没有接口):针对没有实现接口的类产生代理。应用的是底层的字节码增强的技术,生成当前类的子类对象。第三方代理技术,cglib代理,可以对任何类生成代理,代理的原理是对目标对象进行继承代理,如果目标对象被final修饰,那么该类无法被cglib代理。

动态代理

动态代理原理

AOP名词解释

Joinpoinit(连接点):目标对象中,所有可以增强的方法。
Pointcut(切入点):目标对象,已经增强的方法
Advice(通知/增强):增强的代码
Target(目标对象):被代理对象
Weaving(织入):将通知应用到切入点的过程
Proxy(代理):将通知织入到目标对象之后,形成代理对象
aspect(切面):切入点+通知

未完待续 持续加载ing…

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值