weixin_42298684 2008-11-24 16:52
浏览 986
已采纳

AOP怎样拦截重载的方法(同名,但参数不同的方法)?

在我的项目中,使用了SPRING的CACHE:
[code="java"]
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN" "http://www.springframework.org/dtd/spring-beans.dtd">

class="org.springmodules.cache.provider.oscache.OsCacheManagerFactoryBean">
<!-- Optional properties -->


class="org.springmodules.cache.provider.oscache.OsCacheFacade">

<bean id="cacheKeyGenerator" class="org.springmodules.cache.key.HashCodeCacheKeyGenerator"/>

<bean id="userDaoProxy"
      class="org.springmodules.cache.interceptor.proxy.CacheProxyFactoryBean">
    <property name="cacheProviderFacade" ref="cacheProviderFacade"/>
    <property name="cacheKeyGenerator" ref="cacheKeyGenerator"/>
    <property name="cachingModels">
        <props>
            <prop key="get*">refreshPeriod=12;groups=user</prop>
        </props>
    </property>
    <property name="flushingModels">
        <props>
            <prop key="update*">groups=user</prop>
            <prop key="delete*">groups=user</prop>
            <prop key="add*">groups=user</prop>
        </props>
    </property>

    <property name="cachingListeners">
        <list>
            <!--ref bean="cachingListener" /-->
        </list>
    </property>
    <property name="target" ref="userDaoTarget"/>
</bean>




[/code]

UserDao有如下接口:
[code="java"]
int addUser(User user);
User getUser(String userId);
int updateUser(User user);
int deleteUser(String userId);
List getUsers();
User getUserByLongNameAndPassword(String userId,String userPd);
List getUsersByGroup(String groupCode,int page,int pageSize);
List getUsers(User user);
[/code]

上面的配置会为5个get打头的方法启用CACHE,我现在只想对:
[code="java"]
List getUsersByGroup(String groupCode,int page,int pageSize);
[/code]

这一个接口启用CACHE,我该怎么写cachingModels呢?
[b]问题补充:[/b]
UserDao有如下接口:

[code="java"]int addUser(User user);

User getUser(String userId);

int updateUser(User user);

int deleteUser(String userId);

List getUsers();

User getUserByLongNameAndPassword(String userId,String userPd);

List getUsersByGroup(String groupCode,int page,int pageSize);
List getUsersByGroup(String groupCode);

List getUsers(User user); [/code]

getUsersByGroup是重载的方法,我只想CACHE:

List getUsersByGroup(String groupCode,int page,int pageSize);

怎么配cachingModels呢?

  • 写回答

1条回答 默认 最新

  • iteye_19016 2008-11-24 19:54
    关注

    AOP 自动会拦截的 重载的方法名!
    也就是说 你有5个重载的方法,但配置文件只配置了一个方法,等同与你配置了5个将被拦截的方法。

    如果你不想其中的4个重载方法 被拦截,有2种做法
    1:取消重载
    2:手动修改源代码,(重载方法,参数不同)可以 根据参数的不同内部处理

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥15 求差集那个函数有问题,有无佬可以解决
  • ¥15 【提问】基于Invest的水源涵养
  • ¥20 微信网友居然可以通过vx号找到我绑的手机号
  • ¥15 寻一个支付宝扫码远程授权登录的软件助手app
  • ¥15 解riccati方程组
  • ¥15 display:none;样式在嵌套结构中的已设置了display样式的元素上不起作用?
  • ¥15 使用rabbitMQ 消息队列作为url源进行多线程爬取时,总有几个url没有处理的问题。
  • ¥15 Ubuntu在安装序列比对软件STAR时出现报错如何解决
  • ¥50 树莓派安卓APK系统签名
  • ¥65 汇编语言除法溢出问题