rsm*_*011 5 java spring spring-aop
我正在使用 Spring AOP,我希望能够定义一个切入点,只要调用包内的方法(其名称在属性文件中定义),就会触发该切入点。也就是说,我的切入点看起来像
@Pointcut("within(${base.packageName}.*)")
public void MyPointCut() {}
Run Code Online (Sandbox Code Playgroud)
然后如果我的配置文件有
base.packageName=foo.bar
Run Code Online (Sandbox Code Playgroud)
那么在运行时切入点的行为就像这样
@Pointcut("within(foo.bar.*)")
public void MyPointCut() {}
Run Code Online (Sandbox Code Playgroud)
我尝试了几种不同的方法(例如,在切入点表达式中使用 SpEL、配置实现静态切入点接口的类),但没有任何效果。
spring 有没有办法根据配置文件中的值定义切入点?
事实上,你不能这样做,可能是设计使然。
我将在这里向您提出一些建议,并希望您考虑其后果。
您要求能够动态地定义面向方面的构造的值。您将其放置在未经验证的外部可访问源中。如果一个敌对者,从安全角度考虑,要改变切入点并执行其他一些代码(甚至可能是任意的),你会认为安全吗?
AOP 虽然非常有价值,但也让大多数安全研究人员感到紧张。
| 归档时间: |
|
| 查看次数: |
3300 次 |
| 最近记录: |