aop

Spring Boot之AOP面向切面编程-实战篇

不问归期 提交于 2020-02-11 12:49:21
目录 前言 编程范式主要有以下几类 引入pom依赖 aop注解 实现日志分割功能 前言 AOP是一种与语言无关的程序思想、编程范式。项目业务逻辑中,将通用的模块以水平切割的方式进行分离统一处理,常用于日志、权限控制、异常处理等业务中。 编程范式主要有以下几类 AOP(Aspect Oriented Programming)面向切面编程 OOP(Object Oriented Programming)面向对象编程 POP(procedure oriented programming)面向过程编程 FP(Functional Programming)面向函数编程 引入pom依赖 项目根目录 pom.xml 添加依赖 spring-boot-starter-aop <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-aop</artifactId> </dependency> aop注解 @Aspect : 切面,由通知和切入点共同组成,这个注解标注在类上表示为一个切面。 @Joinpoint : 连接点,被AOP拦截的类或者方法,在前置通知中有介绍使用 @Joinpoint 获取类名、方法、请求参数。 Advice : 通知的几种类型 @Before :

5.Spring框架—IOC和AOP使用扩展

对着背影说爱祢 提交于 2020-02-10 18:56:19
Spring框架 — IOC和AOP使用扩展 1.多种方式实现依赖注入 构造函数注入 < bean id = " accountService " class = " com.accp.service.impl.accountServiceImpl " > < constructor-arg name = " name " value = " 张三 " > </ constructor-arg > < constructor-arg name = " age " value = " 18 " > </ constructor-arg > < constructor-arg name = " birthday " ref = " now " > </ constructor-arg > </ bean > 标签的属性: type:用于指定要注入的数据的数据类型,该数据类型也是构造函数中的某个或某些参数 index:用于指定要注入的数据给构造函数中指定索引位置的参数赋值,索引位置从0开始 name:用于指定给构造函数中指定名称的参数赋值 value:用于提供基本类型和String类型的数据 ref:用于指定其他bean类型的数据。它指的是在spring的IOC核心容器出现过的bean对象 使用set方法注入 < bean id = " accountService " class =

Spring使用自定义切面(aop)方法时不生效

十年热恋 提交于 2020-02-10 18:43:46
这里我以shiro+springboot的一个例子为例,理解为主即可 1.先了解怎么做到spring切面编程(aop) 1).制作切面类 2).在userServiceimpl加入切面注解 2.确定在那里使用到被切对象 1).shiro中使用到userService 2.)在 controller使用到 注意其中config(springboot的启动类)对象中加载shiro对象 执行: controller访问的时候发现无法触发切面方法 解决: 这是因为在spring加载shiro(UserRealm类)的时候使用此时切面类还没加载,但是在UserRealm类中又注入了UserServiceImpl类(注意:此时不是代理类,就是个普通类而已,且该类已经注入到spring容器中,不会再注入第二次了),因此在controller调用的userService方法的时候不是代理类,所以无法做到切面。 解决方法:在UserRealm对象中的UserService加上@Lazy注解,延迟注入到Spring容器,让切面类加载完后再注入 来源: CSDN 作者: 风吹底裤飘 链接: https://blog.csdn.net/qq_37431224/article/details/104252084

spring学习(五) ———— 整合web项目(SSM)

故事扮演 提交于 2020-02-10 01:57:05
一、SSM框架整合       1.1、整合思路         从底层整合起,也就是先整合mybatis与spring,然后在编写springmvc。       1.2、开发需求         查询商品列表(从数据库中查询)       1.3、创建web工程                    现在ssm的工程创建就有区别于原先的dao、service、web这样的三层目录了,现在是mapper、service、controller这样的目录,mapper就相当于以前的dao、controller相当于以前的web,改变了名称而已。不要因此看不懂了。       1.4、添加jar包         这种jar包,上网直接百度ssm整合的jar包即可         数据库驱动、Mybatis的核心、依赖包、Mybatis与spring的整合包、Dbcp连接池包、Spring的包(包括springmvc的包)、Aop的依赖包、Jstl包、Common-logging包                     1.5、开始整合mapper(mybatis与spring的整合)         详细的整合思路讲解: mybatis与spring的整合 这里我直接上代码。步骤         1.5.1、SqlMapConfig.xml            <?xml

2020-02-09

血红的双手。 提交于 2020-02-09 21:23:36
2020-02-09 描述 spring aop练习 今日之技术博客 Spring Spring是高度模块化的,可以单独使用Spring的某个库而不需要依赖Spring的其他库。比如,使用Spring Context库不需要依赖Spring Persistence或者Spring MVC库。 spring Maven依赖 依赖 介绍 依赖于 spring-core 这个jar文件包含Spring框架基本的核心工具类,Spring其它组件要都要使用到这个包里的类,是其它组件的基本核心,当然你也可以在自己的应用系统中使用这些工具类。 commons-collections.jar spring-beans 这个jar文件是所有应用都要用到的,它包含访问配置文件、创建和管理bean以及进行Inversion of Control / Dependency Injection(IoC/DI)操作相关的所有类。如果应用只需基本的IoC/DI支持,引入spring-core.jar及spring- beans.jar文件就可以了。 spring-core.jar,cglib-nodep-2.1_3.jar spring-aop 这个jar文件包含在应用中使用Spring的 AOP特性时所需的类。使用基于AOP的Spring特性,如声明型事务管理(Declarative Transaction

Spring学习

99封情书 提交于 2020-02-09 19:48:24
Spring 最近两天回了长沙,待在租房不能出门,复习了一下Spring框架。在Spring框架中,最重要的就是控制反转IOC和面向切面AOP,说一下自己的理解吧,权当自己做了一些笔记。 控制反转IOC 在Spring中通过IOC容器,将对象之间的依赖交由Spring进行统一控制管理,实现程序之间的解耦,IOC包括依赖注入DI和依赖查找,最常被用到的就是依赖注入,是IOC的具体表现。 图片来源于黑马视频 依赖注入DI 实现依赖注入一共有三种注入方式,分别是构造函数注入,Setter注入,基于注解的注入;最常被用到的就是构造函数注入和Setter注入。其中,构造函数注入和Setter注入都在在XML配置,基于注解的注入是通过注解配置。 1, 构造函数注入 使用类中的构造函数,给成员变量赋值。其中,赋值的操作不是我们自己做的,而是通过配置 的方式,让 spring 框架来为我们注入。 涉及到的标签:constructor-arg 属性: index:指定参数在构造函数参数列表的索引位置; type:指定参数在构造函数中的数据类型; name:指定参数在构造函数中的名称(通过这个属性确定为谁赋值); value:它能赋的值是基本数据类型和 String 类型; ref:它能赋的值是其他 bean 类型(必须得是在配置文件中配置过的 bean); 2, Setter注入

Spring

青春壹個敷衍的年華 提交于 2020-02-08 16:59:53
Spring 一、概述: 以下概述内容拷自w3cschool Spring 是最受欢迎的企业级 Java 应用程序开发框架,数以百万的来自世界各地的开发人员使用 Spring 框架来创建性能好、易于测试、可重用的代码。 Spring 框架是一个开源的 Java 平台,它最初是由 Rod Johnson 编写的,并且于 2003 年 6 月首次在 Apache 2.0 许可下发布。 Spring 是轻量级的框架,其基础版本只有 2 MB 左右的大小。 Spring 框架的核心特性是可以用于开发任何 Java 应用程序,但是在 Java EE 平台上构建 web 应用程序是需要扩展的。 Spring 框架的目标是使 J2EE 开发变得更容易使用,通过启用基于 POJO 编程模型来促进良好的编程实践。 两大重点: 1.依赖注入(DI) Spring 最认同的技术是控制反转的依赖注入(DI)模式。控制反转(IoC)是一个通用的概念,它可以用许多不同的方式去表达,依赖注入仅仅是控制反转的一个具体的例子。 当编写一个复杂的 Java 应用程序时,应用程序类应该尽可能的独立于其他的 Java 类来增加这些类可重用可能性,当进行单元测试时,可以使它们独立于其他类进行测试。依赖注入(或者有时被称为配线)有助于将这些类粘合在一起,并且在同一时间让它们保持独立。 到底什么是依赖注入

SSM 整合配置实例

喜夏-厌秋 提交于 2020-02-08 04:40:40
pom 文件 <?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>com.shsxt</groupId> <artifactId>ssm</artifactId> <version>1.0-SNAPSHOT</version> <packaging>war</packaging> <name>ssm Maven Webapp</name> <properties> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> <maven.compiler.source>1.8</maven.compiler.source> <maven.compiler.target>1.8</maven

Spring IOP 没用

烈酒焚心 提交于 2020-02-08 01:11:17
Spring提供了很多轻量级应用开发实践的工具集合,这些工具集以接口、抽象类、或工具类的形式存在于Spring中。通过使用这些工具集,可以实现应用程序与各种开源技术及框架间的友好整合。比如有关jdbc封装的数据访问工具Spring JDBC,有关编写单元测试的spring test包以及spring-mock,有关访问动态脚本语言的Spring Script,另外还有发送邮件的工具Spring Mail、日程及任务处理工具Spring scheduling等。 可以这么说,大多数企业级应用开发中经常涉及到的一些通用的问题,都可以通过Spring提供的一些实用工具包轻松解决 依赖注入的三种方式:(1)接口注入(2)Construct注入(3)Setter注入 控制反转(IoC)与依赖注入(DI)是同一个概念,引入IOC的目的:(1)脱开、降低类之间的耦合;(2)倡导面向接口编程、实施依赖倒换原则; (3)提高系统可插入、可测试、可修改等特性。 具体做法:(1)将bean之间的依赖关系尽可能地抓换为关联关系; (2)将对具体类的关联尽可能地转换为对Java interface的关联,而不是与具体的服务对象相关联; (3)Bean实例具体关联相关Java interface的哪个实现类的实例,在配置信息的元数据中描述; (4)由IoC组件(或称容器)根据配置信息,实例化具体bean类

Spring MVC + Spring + MyBatis 框架整合

有些话、适合烂在心里 提交于 2020-02-08 00:38:48
本文介绍使用SSM框架开发web项目Demo. 一、创建一个web-Poject项目   1.导入相关jar文件至lib下。 “相关jar文件” --提取密码 oraw   2.修改web.xml文件 <?xml version="1.0" encoding="UTF-8"?> <web-app version="3.0" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"> <display-name></display-name> <welcome-file-list> <welcome-file>index.jsp</welcome-file> </welcome-file-list> <!-- 加载spring容器 --> <listener> <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class> <