aop cglibproxy 获取源对象
时间: 2023-12-13 22:01:04 浏览: 79
AOP(面向切面编程)是一种编程思想,它可以通过在程序运行过程中动态地将代码织入到原有的代码中,从而实现特定的横切关注点。而CGLib(Code Generation Library)是一个功能强大的动态代理框架,它可以在运行期间生成源对象的子类,并重写源对象的方法,从而实现对源对象的动态代理。
在AOP中,我们可以通过CGLibProxy来获取源对象的代理对象。CGLibProxy通过继承源对象的方式来创建代理对象,它会创建一个源对象的子类,并在子类中重写源对象的方法,以实现对源对象的增强或修改。这样,当我们调用代理对象的方法时,实际上是调用了重写后的方法,从而实现了AOP所需的横切逻辑。
通过AOP和CGLibProxy,我们可以实现诸如日志记录、性能监控、事务管理等横切关注点,而不需要修改源对象的代码。这样既能保持源对象的纯粹性,又能实现对源对象的动态代理和增强,实现了代码的模块化和解耦。因此,AOP和CGLibProxy在实际的软件开发中具有广泛的应用价值,可以帮助我们更好地管理和维护复杂的业务逻辑。
相关问题
aop获取方法中对象的属性值
在AOP中获取方法中对象的属性值,可以使用JoinPoint参数来获取方法参数及对象,然后通过反射获取对象的属性值。具体实现可以参考以下代码:
```java
@Aspect
@Component
public class MyAspect {
@Before("execution(* com.example.demo.service.UserService.*(..)) && args(user)")
public void before(JoinPoint joinPoint, User user) {
try {
Field nameField = user.getClass().getDeclaredField("name"); // 获取name属性
nameField.setAccessible(true);
Object name = nameField.get(user); // 获取name属性的值
System.out.println("Before method " + joinPoint.getSignature().getName() + " execute, user name is " + name);
} catch (NoSuchFieldException | IllegalAccessException e) {
e.printStackTrace();
}
}
}
```
以上代码中,通过@Aspect注解标注切面类,通过@Before注解标注方法,匹配UserService中所有方法,并且参数列表中包含User类型的参数。在before方法中获取JoinPoint参数,通过反射获取User对象的name属性的值,并输出日志,完成获取方法中对象的属性值的操作。
springaop中的目标对象
在Spring AOP中,目标对象是指被通知的对象,也就是我们需要对其进行增强处理的对象。它可以是任何普通的Java类,可以是接口的实现类,也可以是没有实现接口的类。在AOP中,目标对象是被动态代理的对象,AOP框架会在内存中临时为目标对象生成一个AOP对象,并在特定的切点对其方法进行增强处理。这个AOP对象包含了目标对象的全部方法,并且在特定的切点处执行相应的通知。所以在Spring AOP中,目标对象就是我们要对其进行增强处理的对象。<span class="em">1</span><span class="em">2</span><span class="em">3</span>
#### 引用[.reference_title]
- *1* [Spring AOP与动态代理](https://download.csdn.net/download/weixin_38697753/13755219)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"]
- *2* *3* [Spring aop获取目标对象,方法,接口上的注解](https://blog.csdn.net/u010180738/article/details/84504007)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"]
[ .reference_list ]
相关推荐
![rar](https://img-home.csdnimg.cn/images/20210720083606.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)