<dependency><groupId>org.springframework</groupId><artifactId>spring-context</artifactId><version>5.2.5.RELEASE</version></dependency>插件<build><plugins><plugin><artifactId>maven-compiler-plugin</artifactId><version>3.1</version><configuration><source>1.8</source><target>1.8</target></configuration></plugin></plugins></build>
在 src/main/resources/目录现创建一个 xml 文件&#xff0c;文件名可以随意&#xff0c;但 Spring 建议的名称为 applicationContext.xml。 &#xff1a;用于定义一个实例对象。一个实例对应一个 bean 元素。 id&#xff1a;该属性是 Bean 实例的唯一标识&#xff0c;程序通过 id 属性访问 Bean&#xff0c;Bean 与 Bean 间的依赖关系也是通过 id 属性关联的。 class&#xff1a;指定该 Bean 所属的类&#xff0c;注意这里只能是类&#xff0c;不能是接口。
&#xff08;1&#xff09;set 注入 &#xff08;2&#xff09; 构造注入 构造注入是指&#xff0c;在构造调用者实例的同时&#xff0c;完成被调用者的实例化。即&#xff0c;使用构造器设置依赖关系。 标签中用于指定参数的属性有&#xff1a; ➢ name&#xff1a;指定参数名称。 ➢ index&#xff1a;指明该参数对应着构造器的第几个参数&#xff0c;从 0 开始。不过&#xff0c;该属性不要也行&#xff0c; 但要注意&#xff0c;若参数类型相同&#xff0c;或之间有包含关系&#xff0c;则需要保证赋值顺序要与构造器中的参数 顺序一致。
对于引用类型属性的注入&#xff0c;也可不在配置文件中显示的注入。可以通过为标签设置 autowire 属性值&#xff0c;为引用类型属性进行隐式自动注入&#xff08;默认是不自动注入引用类型属 性&#xff09;。根据自动注入判断标准的不同&#xff0c;可以分为两种&#xff1a;
AOP 底层&#xff0c;就是采用动态代理模式实现的。采用了两种代理&#xff1a;JDK 的动态代理&#xff0c;与 CGLIB的动态代理。 AspectJ 中常用的通知有五种类型&#xff1a; &#xff08;1&#xff09;前置通知 &#xff08;2&#xff09;后置通知 &#xff08;3&#xff09;环绕通知 &#xff08;4&#xff09;异常通知 &#xff08;5&#xff09;最终通知 切入点表达式:execution(访问权限 方法返回值 方法声明(参数) 异常类型) 需要在pom文件中添加依赖&#xff1a;
<dependency><groupId>junit</groupId><artifactId>junit</artifactId><version>4.11</version><scope>test</scope></dependency><dependency><groupId>org.springframework</groupId><artifactId>spring-context</artifactId><version>5.2.5.RELEASE</version></dependency><dependency><groupId>org.springframework</groupId><artifactId>spring-aspects</artifactId><version>5.2.5.RELEASE</version></dependency>
B、 Step2&#xff1a;定义切面类 D、Step4&#xff1a;注册 AspectJ 的自动代理 在定义好切面 Aspect 后&#xff0c;需要通知 Spring 容器&#xff0c;让容器生成“目标类&#43; 切面”的代理 对象。这个代理是由容器自动生成的。只需要在 Spring 配置文件中注册一个基于 aspectj 的 自动代理生成器&#xff0c;其就会自动扫描到&#64;Aspect 注解&#xff0c;并按通知类型与切入点&#xff0c;将其织入&#xff0c;并 生成代理 E、 Step5&#xff1a;测试类中使用目标对象的 id
&#64;Pointcut 定义切入点&#xff1a;当较多的通知增强方法使用相同的 execution 切入点表达式时&#xff0c;编写、维护均较为麻烦。 AspectJ 提供了&#64;Pointcut 注解&#xff0c;用于定义 execution 切入点表达式。
(1)在pom文件中添加依赖
<dependency><groupId>org.springframework</groupId><artifactId>spring-context</artifactId><version>5.2.5.RELEASE</version></dependency><dependency><groupId>org.springframework</groupId><artifactId>spring-tx</artifactId><version>5.2.5.RELEASE</version></dependency><dependency><groupId>org.springframework</groupId><artifactId>spring-jdbc</artifactId><version>5.2.5.RELEASE</version></dependency><dependency><groupId>org.mybatis</groupId><artifactId>mybatis</artifactId><version>3.5.1</version></dependency><dependency><groupId>org.mybatis</groupId><artifactId>mybatis-spring</artifactId><version>1.3.1</version></dependency><dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId><version>5.1.9</version></dependency><dependency><groupId>com.alibaba</groupId><artifactId>druid</artifactId><version>1.1.12</version></dependency>
&#xff08;2&#xff09;mybatis.xml的配置 &#xff08;3&#xff09;主配置文件applicationcontext.xml
通过&#64;Transactional 注解方式&#xff0c;可将事务织入到相应 public 方法中&#xff0c;实现事务管理。 采用spring实现注解的事务步骤&#xff1a;
<dependency><groupId>org.springframework</groupId><artifactId>spring-aspects</artifactId><version>5.2.5.RELEASE</version></dependency>
Step2&#xff1a;在容器中添加事务管理器 Step3&#xff1a;配置事务通知 为事务通知设置相关属性。用于指定要将事务以什么方式织入给哪些方法。例如&#xff0c;应用到 buy 方法上的事务要求是必须的&#xff0c;且当 buy 方法发生异常后要回滚业务。 Step4&#xff1a;配置增强器 指定将配置好的事务通知&#xff0c;织入给谁。