首页 > 其他分享 >7_Spring

7_Spring

时间:2023-03-06 23:02:30浏览次数:30  
标签:装配 容器 对象 Spring bean AOP

Spring

初始Srping

  1. Spring发展到今天已经形成了一种开发的生态圈,Spirng提供了若干项目,每个项目用于完成特点的功能
  2. 我们常说的Spring就是指Spirng Framework

Spring Framework 系统架构

  1. Spirng Framework是Spring生态圈中最基础的项目,是其他项目的基础
  2. image-20230305221202508
    1. Core Container:核心容器
    2. Data Access/Intergration:数据访问与数据集成
    3. AOP:面向切面编程;Aspects:AOP思想实现
    4. Transactions :事务
  3. 学习路线:
    1. 第一部分:核心容器(核心概念IOC/DI、容器基本操作)
    2. 第二部分:整合(整合数据层技术MyBatis)
    3. 第三部分:AOP(核心概念、AOP基础操作、AOP应用开发)
    4. 第四部分:事务(事务应用开发)

核心概念

  1. IOC(Inversion of Control)控制反转

    使用对象时,由主动new产生对象转换为由外部提供对象,此过程中对象控制权由程序转移到外部,此思想成为控制反转

  2. Spring技术对IOC思想进行了实现

    1. Spring提供了一个容器,成为Ioc容器,用来充当Ioc思想中的外部
    2. Ioc容器负责对象的创建、初始化等一系列工作,被创建或管理的对象在Ioc容器中统称为Bean
  3. DI(Dependency Injection) 依赖注入

    在容器中建立bean与bean之间的依赖关系的整个过程,称为依赖注入

  4. 目标:充分解耦

    1. 使用IOC容器管理bean (IOC)
    2. 在Ioc容器内将有依赖关系的bean进行关系绑定 (DI)

IOC入门案例

  1. 导入spring的坐标spring-context,对应版本是5.2.10.RELEASE

  2. 创建applicationContetx.xml文件,配置bean。其中bean标签标识配置bean,id熟悉表示给bean起名字,class属性表示给bean定义类型

  3. 获取IOC容器:

    ApplicationContetx ctx = new ClassPathXmlApplicationContext("applicationContetx.xml");

  4. 获取bean,调用实例方法

    BookDao bookDao = (BookDao)ctx.getBean("bookDao")

DI入门案例

  1. 思路分析

    1. 基于Ioc管理bean
    2. Service中使用new形式创建的Dao对象是否保留?:否
    3. Service中需要的Dao对象如何进入到Service中?:提供方法
    4. Service与Dao间的关系如何描述?:配置
  2. 删除业务层中使用new的方式来创建Dao层的对象

  3. 提供对应的set方法

  4. 配置Service与Dao的关系:Property标签表示配置当前bean的属性,name属性表示配置哪一个具体的属性,ref属性表示参照哪一个bean

bean配置

  1. bean别名配置

    name:定义bean的别名,可定义多个,使用,或者;或者 空格 进行分隔

  2. bean作用范围

    1. scope:定义bean的作用范围,可选范围为:singleton单例(默认)、prototype(非单例)

    2. 适合交给容器进行管理的bean:表现层对象,业务层对象,持久层对象,工具类对象

    3. 不适合交给容器进行管理的bean:封装实体的域对象

bean实例化

  1. bean本质上就是对象,创建bean使用构造方式完成

bean实例化--静态工程

  1. 定义OrderDaoFactor静态工程类,在静态代码块中 返回一个 new OrderDaoImpl()

  2. xml配置

bean实例化--实例工厂与FactoryBean

bean生命周期

  1. 概念

    1. 生命周期:从创建到消亡的完整过程

    2. bean生命周期:bean从创建到消亡的完整过程

    3. bean生命周期控制:在bean创建后到销毁前做一些事情

  2. 初始化容器

    1. 创建对象(内存分配)
    2. 执行构造方法
    3. 执行属性注入
    4. 执行bean初始化
  3. 使用bean

    ​ 执行业务操作

  4. 关闭/销毁容器

    执行bean销毁方法

自动装配

  1. Ioc容器根据bean所依赖的资源在容器中自动查找并注入到bean中的过程成为自动装配
  2. 自动装配方式:按类型、按名称、按构造方法、不启动自动装配

  1. 特征:
    1. 自动装配引用类型依赖注入,不能对简单类型进行操作
    2. 使用按类型装配时(byType)必须保证容器中相同类型的bean唯一,推荐使用
    3. 使用按名称装配时(byName)必须保证容器中具有指定名称的bean,因变量名与配置耦合,不推荐
    4. 自动装配优先级低于setter注入与构造器注入,同时出现时自动装配失效
  2. @Resource
    1. 默认是按照组件名称进行装配的;

AOP简介

  1. 概念:AOP面向切面编程,是一种编程范式,指导开发者如何组织程序结构

  2. 作用:在不惊动原始设计的基础上为其进行功能增强

  3. AOP核心概念:

    1. 连接点:程序执行进程中的任意位置,粒度为执行方法、抛出异常、设置变量等

      在SpringAOP中理解为 方法的执行

    2. 切入点:匹配连接点的式子

      在SpringAOP中,一个切入点可以指描述一个具体方法,也可以匹配多个方法

    3. 通知:在切点去执行的操作,也就是共性功能

      在SpringAOP中,功能最终以方法的形式呈现

    4. 通知类:定义通知的类

    5. 切面(Aspect):描述通知与切入点的关系

AOP入门案例

  1. 思路分析
    1. 导入坐标/包 (aspect的包)
    2. 制作连接点方法(原始操作,Dao接口与实现类)
    3. 制作共性功能(通知类和通知)
    4. 定义切入点 (@Pointcut和pt()方法)
    5. 绑定切入点与通知关系,并指定通知添加到原始连接点的具体执行位置(@Before("pt()"))
    6. 定义通知类受Spring容器类管理,并定义当前类为切面类(@Componet和@Aspect)
  2. 通知与切入点与绑定关系
    1. 现在SpringConfig中添加注解@EnableAspectJAutoProxy,实现Aspect包的注解
    2. image-20230305233034237

AOP工作流程

标签:装配,容器,对象,Spring,bean,AOP
From: https://www.cnblogs.com/cxk6/p/17185850.html

相关文章

  • Spring Cloud Alibaba项目搭建
    一、简介作为微服务的解决方案之一的SpringcloudAlibaba拥有众多优秀的开源框架,那么我们就使用这么框架搭建一个项目,并以此来研究一下这些优秀框架的源码。所使用到......
  • 将springmvc.xml配置到resources目录
    web.xml配置<?xmlversion="1.0"encoding="UTF-8"?><web-appxmlns="http://xmlns.jcp.org/xml/ns/javaee"xmlns:xsi="http://www.w3.org/2001/XMLSchema-in......
  • SpringBoot SSM vue课程作业在线批阅系统
    SpringBootSSMvue课程作业在线批阅系统登录新闻公告在线留言课程管理指定课代表作业下发作业审批评分在线预览使用技术:SpringBoot或SSM +Mybatis+Mysql......
  • SpringBoot(十):thymeleaf + JSR303实现表单验证
    一、Person类packagecom.jms.pojo;importlombok.Data;importjavax.validation.constraints.*;@DatapublicclassPerson{@NotBlank(message="姓名不......
  • SpringBoot中基于拦截器实现登录验证功能
    拦截器简介拦截器是属于springmvc体系的,只能拦截controller的请求。拦截器(Interceptor)是一种动态拦截方法调用的机制,在SpringMVC中动态拦截控制器方法的执行。Interceptor......
  • springdatajpa基本管理实现
    springdatajpa近期由于想提升自己,所以简单的学了学springdatajpa,下面将简单利用springdatajpa实现数据的基础管理第一步导入依赖implementation'org.springframework.......
  • Spring Boot
    1、什么是SpringBoot?Spirngboot可以轻松创建独立的、生产级的基于Spring的应用程序,可以直接运行。简化spring应用的初始搭建和开发过程,使用properties文件或者.yml文件......
  • Spring Boot
    1.阿里云镜像:2.RestFul风格补充学习 3.修改配置文件篇 只要是Maven项目,配置文件基本都在resources目录下。Springboot配置文件即.yml/properties 修改tomcat......
  • springboot项目jar包混淆加密
    混淆工具jar包混淆工具挺多的,实现原理不尽相同,这里使用的classfinal加密执行以下命令java-jarclassfinal-fatjar.jar-fileyourproject.jar-libjarsa.jar,b.jar-......
  • Springboot上传并解析Zip包
    packagecom.c2f.hbos.mcc.common.utils;importcom.c2f.hbos.mcc.core.catalog.enums.SHMedicationCatalogDataSourceEnum;importorg.apache.commons.compress.utils.......