对于Spring框架的简单认识

Spring 框架

Spring 框架的基本理解

关键字:核心思想IOC/AOP、作用(解耦,简化),简单描述框架组成

Spring框架是一款轻量级的开发框架,核心思想是IOC(控制反转)AOP(面向切面编程),为Java应用程序开发提供组件管理服,用于组件之间的解耦,以及简化第三方JavaEE中间件技术的使用(JMS、任务调度、缓存、ORM框架),是一个基础架构性的开发框架

Spring框架包括:IOC容器、Validation数据校验,AOP面向切面编程、Transactions事务管理、Spring JDBCSpring MVC框架、以及各类第三方JavaEE中间件技术集成。

Spring 框架由哪些模块组成?

关键字:官方文档描述,由7个模块组成

主要包括以下常用的5个模块:

Core:核心模块

Testing:测试模块

Data Access:数据访问模块

Web Servlet:基于Servlet的Web应用开发

Integration:企业级系统集成模块(不同系统之间的交互集成)

Spring IOC(控制反转)

关键字: IOC 名词解释,作用是解耦,使用 IOC 容器管理项目组件之间的耦合关系

解耦高内聚,低耦合编程思想硬编码实现解耦:

1.不要直接new对象,通过反射创建

2.将需要创建的对象独立保存在资源文件中,动态加载

IOC是Spring框架的核心思想之一,主要用于解耦。IOC是指创建对象的控制器转移给Spring框架进行管理。由Spring框架根据配置文件或注解等方式,创建bean对象并管理各个bean对象之间的依赖关系。使对象之间形成松散耦合关系,实现解耦

控制:指的是对象创建(实例化、管理)的权力

反转:控制权交给外部环境(spring框架、IOC 容器)

Spring IOC容器

关键字: IOS 容器的作用,存储形式,初始化过程

IOC容器其实就是一个Mapkey是每个bean对象的ID,value是bean对象本身。IOC容器负责创建bean对象并管理bean的生命周期。并且根据配置好配置文件或注解,管理IOC容器中的每个bean,以及根据bean直接的依赖关系,完成bean之间的注入。

IOC容器属于Spring Core模块,用来创建管理Bean,默认使用单例的方式将bean存储在DefaultListableBeanFactory类的beanDefinitionMap中(一个 ConcurrentHashMap 类型的Map集合);

IOC容器使用ConcurrentHashMap集合存储了BeanDefinition对象,该对象封装了Spring对一个Bean所有配置信息,包括:类名,属性,构造方法参数,依赖,是否延迟加载,是否是单例等配置信息;

    //1.创建工具类
    Properties properties = new Properties();
    //2.加载文件
    InputStream inputStream = Test01.class.getClassLoader().getResourceAsStream("jdbc.properties");
    properties.load(inputStream);
    //3.通过key获取value
    String driver = properties.getProperty("msg1");
    String url = properties.getProperty("msg2");
    String name = properties.getProperty("msg3");
    String pwd = properties.getProperty("msg4");
    //4.获取连接
    Class.forName(driver);
    Connection root = DriverManager.getConnection(url,name,pwd);

Spring DI

DI是对IOC概念的不同角度的描述,是指应用程序在运行时,每一个bean对象都依赖IOC容器注入当前bean对象所需要的另外一个bean对象。

作用

将spring IOC容器所创建的各个组件,使用DI的语法进行关联,耦合(胶水)

bean

Bean代表被IOC容器管理的对象。

通过配置文件或注解,告诉IOC容器帮助我们管理哪些对象。

声明类为Bean的注解

@Component: 定义通用Bean的注解,可标注任意类为Bean。如果一个Bean不知道属于哪个层,可以使用@Component注解标注。
@Repository:定义数据访问层Bean的注解。
@Service:定义业务层Bean的注解。
@Controller:定义控制器Bean的注解。
@Component和@Bean的区别

@Component注解作用于,而@Bean注解作用于方法

@Component通常是通过类路径扫描来实现自动扫描并完成装配Bean到Spring IOC容器。

@Bean注解通常用于注解某个方法,通过@Bean注解告诉了Spring IOC容器,该方法的返回值实例是一个Bean。

Spring IOC容器对Bean管理

一.bean实例化

1.通过构造方法(默认)

2.通过工厂方法

3.通过静态工厂方法

二.bean作用域

含义:spring对于创建javaBean实例的方式

语法:

<bean scope="属性值"></bean>

属性值:

singleton=====>单例(默认)

prototype=====>多例

request=======>一个请求创建一个

session=======>一个会话创建一个

三.bean生命周期

1.实例化

2.属性赋值(DI)

3.初始化

3.1接口 InitializingBean

3.2属性 init-method=“”

4.操作使用

5.销毁

5.1接口 DisposableBean

5.2属性 destory-method=“”

Spring的配置

Spring2.5前 == xml

Spring2.5后 == xml+annotation

Spring3.0后 == annotation+JavaConfig配置类

lombok插件dbUtiljunit测试
idea安装插件核心类:QueryRunner1.坐标
添加坐标.query() 查询2.注解
编写注解.update() 增删改@Test @Before @After

代理

定义

代理模式给某一个对象提供一个代理对象,并由代理对象控制对原对象的引用

静态代理

静态代理是由程序员创建或特定工具自动生成源代码,在对其编译。

在程序员运行之前,代理类.class文件就已经被创建了。

动态代理

动态代理是在程序运行时通过反射机制动态创建的。

动态代理分为:

基于接口的动态代理(jdk自带)

基于子类的动态代理(第三方)

AOP(面向切面编程)

将那些与业务无关,却为业务模块所共用调用的逻辑(例如事务处理、日志管理、权限控制等)封装抽取成一个可重用的模块,这个模块被命名为“切面”(Aspect),便于减少系统的重复代码,降低模块间的耦合度,并有利于未来的可拓展性和可维护性;

Spring AOP 基于动态代理实现:

如果被代理的对象,已经实现某个接口,则Spring AOP 会使用JDK Proxy(反射),基于接口的方式,创建代理对象(JDK动态代理的核心是InvocationHandler接口和Proxy类);

如果被代理的对象,没有实现某个接口,就无法使用JDK Proxy去进行代理,这时候Spring AOP会使用Cglib,基于继承的方式,生成一个被代理对象的子类来作为代理(Cglib动态代理的核心是MethodInterceptor接口和Enhancer类);

AOP通知类型

前置通知(Before)

返回通知(After-returning)

异常通知(After-throwing)

后置通知(After)

环绕通知(Around)

AOP连接点

AOP将所有的方法都视为连接点

AOP切点

切点是AOP中的一个核心概念,它定义了哪些连接点(join point)应该执行某个切面(aspect)

AOP目标对象

目标对象是指实际执行业务逻辑的对象。

AOP织入

AOP切面:切点+通知

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值