**1.配置相关-applicationContext.xml**
~~~
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:context="http://www.springframework.org/schema/context"
xmlns:aop="http://www.springframework.org/schema/aop"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/context
https://www.springframework.org/schema/context/spring-context.xsd http://www.springframework.org/schema/aop https://www.springframework.org/schema/aop/spring-aop.xsd">
<!--指定包和该包下的子包,扫描注解-->
<context:component-scan base-package="com.nobb"/>
<!--开启注解配置切面开关-->
<aop:aspectj-autoproxy/>
</beans>
~~~
**2.使用注解注册通知对象-com.nobb.advice.MyAdvice**
~~~
package com.nobb.advice;
import org.aspectj.lang.ProceedingJoinPoint;
import org.aspectj.lang.annotation.*;
import org.springframework.stereotype.Component;
/**
* 通知
*/
//交给spring管理 并命名为myAdvice
//<bean name="myAdvice" class="com.nobb.advice.MyAdvice"></bean>
@Component("myAdvice")
//声明在该类中配置切面
@Aspect
public class MyAdvice {
//声明切点
@Pointcut("execution(* com.nobb.service.*ServiceImpl.*(..))")
public void myPc(){
}
//切点+前置通知
@Before("myPc()")
public void before(){
System.out.println("前置通知");
}
//切点+后置通知
@AfterReturning("myPc()")
public void after(){
System.out.println("后置通知");
}
//切点+异常通知
@AfterThrowing("myPc()")
public void afterThrowing(){
System.out.println("异常通知");
}
//切点+最终通知
@After("myPc()")
public void end(){
System.out.println("最终通知");
}
//环绕通知,
@Around("execution(* com.nobb.service.*ServiceImpl.*(..))")
public Object around(ProceedingJoinPoint pjp){
Object o = null;
try{
System.out.println("环绕通知-前置");
//执行业务代码
o = pjp.proceed();
System.out.println("环绕通知-后置");
}catch(Throwable throwable){
throwable.printStackTrace();
System.out.println("环绕通知-异常");
}finally{
System.out.println("环绕通知-最终");
}
return o;
}
}
~~~
**3.UserServiceImpl**
~~~
package com.nobb.service;
import org.springframework.stereotype.Service;
//将UserServiceImpl 交给spring管理 并命名为userService
@Service("userService")
public class UserServiceImpl implements UserService {
@Override
public void save() {
System.out.println("save()");
}
@Override
public void delete() {
System.out.println("delete()");
}
@Override
public void update() {
System.out.println("update()");
}
@Override
public void find() {
System.out.println("find()");
}
}
~~~
**4.测试代码**
~~~
import com.nobb.service.UserService;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.test.context.ContextConfiguration;
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
import javax.annotation.Resource;
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration("classpath:applicationContext3.xml")
public class AopTest {
@Resource(name="userService")
private UserService userService;
@Test
public void fun1(){
userService.save();
}
}
~~~
- mybatis
- 基础
- maven依赖
- 主配置文件
- 实体映射表
- Mapper接口
- xxxMapper.xml
- 代码测试
- CURD
- 查询操作
- 新增操作
- 修改操作
- 删除操作
- 生命周期&作用域
- 实体类型配置别名
- 进阶查询
- 列名与属性名不对应
- 多条件sql查询
- 模糊查询
- 获取保存后的主键
- 动态sql
- where配合If
- where配合choose
- where配合foreach
- Sql片段
- 关联查询
- 表结构设计及实体类
- 多对一&一对一
- 一对多
- 多对多
- 嵌套查询(多条sql)
- 多对一&一对一
- 一对多
- 多对多
- 加载策略
- 缓存
- 一级缓存
- 二级缓存
- 配置进阶
- properties
- mapper注册
- 连接池
- 注解开发
- spring
- 基础
- maven依赖
- bean创建
- 基础配置
- 测试代码
- 简单原理
- 构造方法创建对象
- 静态工厂创建对象
- 动态工厂创建对象
- 作用域
- 初始化&销毁方法
- 单例和原型作用域
- 依赖注入
- 构造方法注入
- set方法注入
- 集合&数组属性注入
- 配置文件模块化
- 注解配置
- 配置相关
- 注解释义
- 纯注解配置
- 小结
- Spring整合junit
- 依赖管理
- 使用
- Aop
- 依赖管理
- 配置相关
- aopDemo(非环绕通知)
- 名词解释
- 环绕通知
- xml混合注解Aop开发
- 纯注解Aop
- Aop事务
- 代理相关
- 动态代理观光代码
- cglib代理观光代码
- SpringMVC
- 基础
- 依赖管理
- 配置web.xml
- spring-mvc.xml
- idea tomcat配置
- Hello Controller
- Api解析
- @Controller
- @RequestMapping
- 编码问题解决
- 获取请求头信息
- 获取Cookie的值
- json相关
- 依赖管理
- 接收json请求参数
- 以json形式返回给客户端
- restful风格
- 转发
- 重定向
- 页面传值
- Request域
- Session域
- Aop异常处理
- 拦截器
- 番外篇
- Tomcat
- Servlet
- 创建
- 线程安全问题
- 生命周期相关
- Filter
- Listener
- ssm整合
- mybatis基础篇
- mybatis依赖
- mybatis实体
- Mapper接口
- mybatis配置
- 测试代码
- spring基础篇
- 依赖
- AccountService接口
- AccountServiceImpl
- 测试代码
- springmvc
- 依赖
- web.xml
- spring-mvc.xml
- AccountController
- spring整合mybatis
- 依赖
- 配置
- spring整合springmvc
- web.xml
- SpringBoot
- maven配置
- 引入SpringBoot技术
- 入口及测试控制器
- 打包插件
- 配置相关
- 配置实践
- 配置自动适配
- 配置校验
- 配置文件制定
- SpringBoot整合Junit
- 整合mybatis
- 依赖管理
- 配置相关
- @Mapper
- 整合freemarker
- 依赖管理
- 配置相关
- 测试控制器
- 目录相关
- 验证器
- maven依赖
- 验证器定义
- 控制器接收参数
- 全局异常通知
- filter跨域解决方案
- 模板相关问题
- 上传解决方案
- redis相关
- maven依赖管理
- 配置相关
- cache简单封装
- json处理
- SpringCloud
- 简介
- 版本号
- eureka
- 简介
- 组件
- eureka服务依赖
- eureka配置
- 项目启动
- 父类依赖库
- eureka_cli
- eureka客户端依赖
- 配置项
- 启动项
- eureka集群原理
- ribbon
- maven
- 配置
- 微服务实战
- 项目架构
- 基类依赖
- eureka注册中心
- 1依赖相关
- 2.配置相关
- 3.启动项
- 业务service
- supergo-manager-service
- 依赖
- 配置
- 数据源监控
- 启动项
- feign调用
- supergo-manager-feign
- 依赖
- 调用代码
- 接口层
- supergo-manager-web
- 依赖
- 配置项
- 启动项
- 通用mapper
- 逆向工程
- 数据库连接配置
- 逆向工程配置
- 操作
- base-service
- 简介
- 跨域
- 网关层
- zuul
- 依赖项
- 配置
- 启动项