社区
Java
帖子详情
一个很常见的设计的问题(AOP应用)
伍子V5
2007-04-11 02:22:49
系统里面很多表都有inmen和intime字段
要求记录数据增删改查的用户和时间
如果inmen存放在session里
则在service层的方法就无法直接获取inmen值
如果在service的方法都加上inmen和intime属性传值
则这样的设计显得很蹩脚
不知道通过AOP是否可以将这种功能和业务逻辑干净地分开
希望各位朋友分享一下好的经验
...全文
786
16
打赏
收藏
一个很常见的设计的问题(AOP应用)
系统里面很多表都有inmen和intime字段 要求记录数据增删改查的用户和时间 如果inmen存放在session里 则在service层的方法就无法直接获取inmen值 如果在service的方法都加上inmen和intime属性传值 则这样的设计显得很蹩脚 不知道通过AOP是否可以将这种功能和业务逻辑干净地分开 希望各位朋友分享一下好的经验
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
16 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
wangx1949
2007-05-09
打赏
举报
回复
那你往service层传什么参数?
没有FormBean或TO吗
computerclass
2007-05-08
打赏
举报
回复
mark
youandi79
2007-04-30
打赏
举报
回复
感觉没必要用aop。
强制Service的第一个参数为某种类型,调用Service的时候将用户信息作为参数传入
ServiceProxyHandler.java
public class ServiceProxyHandler implements InvocationHandler {
public Object invoke(Object proxy, Method method, Object args[]) throws Throwable {
if(!(args[0] instanceof ClientSession)) {
throw new ProcessingException("MSGID");
}
// LOG START
// TRANSACTION START
obj = invoke(method, args);
// LOG END
// TRANSACTION END
}
}
Action.java中service.doXXX(getClientSession(req), ....);
Db连接的时候也是通过ClientSession来创建的,这样即使在数据层也可以得到用户信息。
southben
2007-04-24
打赏
举报
回复
我觉得你要根据具体的情况,aop不便于系统的调试,如果不是很大的系统,建议使用filter的方式,
junit777
2007-04-23
打赏
举报
回复
不要为了aop而去aop
高无忌
2007-04-23
打赏
举报
回复
在保存到数据库后用filter作为切点,织入AOP切面
yeah920
2007-04-20
打赏
举报
回复
upp
lee5593
2007-04-15
打赏
举报
回复
如果要用aop来实现的话,首先必须让方法将领域对象当作参数传入,然后才能进行拦截赋值,然后采用java反射机制强制取到相应的属性直接进行赋值操作,需要处理好异常
yanluo129
2007-04-13
打赏
举报
回复
现在我们的系统采用
springMVC+spring+springJDBC
数据库是这样设计的
table
id
title
content
user_id
datetime
也就是说每插入一条记录都需要记录它的user_id和datetime
user_id存放在session里
datetime取当前时间
我现在就是头疼怎么在切入的模块里取session
另外怎样把与业务字段在一个表里的数据更新进去
难道每做一次插入/更新业务数据都需要再更新一次以保存user_id和datetime
这样的设计是不是会影响性能
===============================
切入的模块式可以取得被切入模块的参数的
也就是切入以后的效果是相当于在一个类中,你可以对原模块里的数据进行操作
重复保存数据问题 你可以将连接点选择在 保存数据之前,
也就是 在插入user_id和datetime数据后在一同保存入数据库
这些都取决于你选择的连接点
chinagaici
2007-04-13
打赏
举报
回复
可以,用一个filter或者aop在逻辑开始的时候把username保存到数据库的一个变量里,然后,写一个trigger去插入日期和时间, 所以, 你的业务逻辑层就可以不管这两个字段了
伍子V5
2007-04-13
打赏
举报
回复
现在我们的系统采用
springMVC+spring+springJDBC
数据库是这样设计的
table
id
title
content
user_id
datetime
也就是说每插入一条记录都需要记录它的user_id和datetime
user_id存放在session里
datetime取当前时间
我现在就是头疼怎么在切入的模块里取session
另外怎样把与业务字段在一个表里的数据更新进去
难道每做一次插入/更新业务数据都需要再更新一次以保存user_id和datetime
这样的设计是不是会影响性能
yanluo129
2007-04-13
打赏
举报
回复
也就是切入以后的效果是相当于在一个类中,你可以对原模块里的数据进行操作
========================
补充下 : 是指可以使用AOP的具体手段得到原模块的各种属性
伍子V5
2007-04-12
打赏
举报
回复
有没有朋友能够讲的更详细一些
我也知道可以
但就是一时不知道如何下手
yanluo129
2007-04-12
打赏
举报
回复
你使想将log功能分离吧;
1.在原系统设计里面完全不需要考虑LOG功能
2.将LOG功能模块化
3.在原系统里选择连接点,使用AOP将LOG模块功能织入系统
比如选择用户某个操作为连接点
用AOP方法将LOG计时功能连接到该操作,就得到纪录该用户操作时间功能
schumiXsuse
2007-04-11
打赏
举报
回复
aop could used in log , security , transcaction and so on.....
yanluo129
2007-04-11
打赏
举报
回复
可以 AOP就是为了实现逻辑分离设计的
spring
AOP
底层源码解析
本课程是一门短小、精悍、专门介绍spring
Aop
应用
和原理以及源码
设计
的课程。 整个课程将由浅入深,介绍spring5源码的构建、spring5
AOP
在开发当中如何
应用
、spring
Aop
的术语理解、spring
Aop
和aspectj的优缺点,spring...
Spring
AOP
常见
使用场景、术语及
设计
模式
应用
在程序运行时,当调用 UserService 的 login 或 saveUser 方法时,
AOP
框架会自动拦截这些方法,并根据...Join Point:连接点,用于描述程序中的
一个
执行点,例如
一个
方法的调用、
一个
属性的赋值、
一个
异常的抛出等等。
AOP
技术的
应用
对于
一个
业务而言,我们如何在不修改源代码的基础上对对象功能进行拓展,例如现有
一个
公告(通知)业务: interface NoticeService{ boolean send(String notice); } public class NoticeServiceImpl implements ...
Spring
AOP
学习--Spring
AOP
简介及原理
Spring是
一个
广泛
应用
的框架,Spring
AOP
则是Spring提供的
一个
标准易用的
aop
框架,依托Spring的IOC容器,提供了极强的
AOP
扩展增强能力,对项目开发提供了极大地便利。 前文提到
AOP
的实现有AspectJ、JDK动态代理、...
Spring
AOP
常见
面试题整理
可是有一天
一个
朋友微信发了一张图,问了两个
问题
: 1、Spring
AOP
的
设计
原理是什么? 2、在Spring
AOP
中关注点(concern)和横切关注点(cross-cutting concern)有什么不同? 我发现完全蒙圈,根本答不上来啊,真是...
Java
50,523
社区成员
85,601
社区内容
发帖
与我相关
我的任务
Java
Java相关技术讨论
复制链接
扫一扫
分享
社区描述
Java相关技术讨论
java
spring boot
spring cloud
技术论坛(原bbs)
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章