0 0

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

在我的项目中,使用了SPRING的CACHE:
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN" "http://www.springframework.org/dtd/spring-beans.dtd">
<beans>
    <bean id="cacheManager"
          class="org.springmodules.cache.provider.oscache.OsCacheManagerFactoryBean">
        <!-- Optional properties -->
        <property name="configLocation" value="classpath:oscache_config.properties"/>
    </bean>
    <bean id="cacheProviderFacade"
          class="org.springmodules.cache.provider.oscache.OsCacheFacade">
        <property name="cacheManager" ref="cacheManager"/>
    </bean>

    <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>


   <bean id="userDaoTarget" class="com.logictown.BHT.dao.springJdbc.UserDaoImpl">
        <property name="dataSource" ref="dataSource"/>
    </bean>

</beans>


UserDao有如下接口:
    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);


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


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

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); 


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

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

怎么配cachingModels呢?
2008年11月24日 16:52

1个答案 按时间排序 按投票排序

0 0

采纳的答案

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

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

2008年11月24日 19:54

相关推荐

    OverloadReturn,字节码重写器,用于创建只因返回类型而异的方法重载。.zip

    在Java编程语言中,方法重载(Method Overloading)是一种常见的多态性表现形式,它允许我们在同一个类中定义多个同名方法,只要这些方法的参数列表不同即可。然而,Java并不支持仅通过返回类型来区分的方法重载。...

    java面试题

    答:多形:一个类中多个同名方法。继承:子类继承父类。 jsp内置对象? 答:request 用户端请求 response 回应 pageContext 网页属性 session 会话 out 输出 page 当前网页 exception 错误网页 application ...

    10道 基础 Java 面试题

    方法重载是指在同一个类中可以定义多个同名的方法,只要它们的参数列表不同。 Java 中如何避免空指针异常? Java 中可以使用 null 判断和异常捕获来避免空指针异常。具体来说,可以使用 if 语句判断对象是否为空,...

    最新企业java笔试面试题大全.pdf

    方法重载是指在同一个类中,可以有多个同名方法,但是它们的参数列表不同(参数类型、个数、顺序至少有一个不同)。 4. Java中向下转型和向上转型的概念。向上转型是指将子类类型的对象赋值给父类类型的引用,如将...

    74个java面试题,只有题目没有答案

    重载是指多个方法同名但参数不同,重写是指子类继承父类的方法。 49. Java hashCode 和 equals 方法 * Java 中什么是 hashCode 和 equals 方法?hashCode 方法用于返回对象的哈希码,equals 方法用于比较两个对象...

    《面向对象编程与设计(Java)》课后作业及参考解答.pdf

    静态多态性在编译时确定,通过方法重载实现,即在同一个类中定义多个同名但参数列表不同的方法。动态多态性在运行时决定,基于方法重写,即子类可以重写父类的方法,使得父类引用可以调用子类的方法,表现出不同的...

    java方向模拟笔试题

    即使返回类型不同,但只要方法名和参数列表完全一致,则会被视为同一个方法,因此编译器无法区分这些方法。 8. **final与finally分别是什么含义?** - `final`:用来修饰类、方法或变量。当用于修饰类时,该类不能...

    测试基础知识项目等等等

    - **同一类中进行方法重载**:在同一类中定义多个同名但参数不同的方法。 **虚拟机实现多态的技术**主要依赖于动态绑定机制,在运行时根据对象的实际类型确定调用哪个方法。这种机制使得多态成为可能,并增强了程序...

    Java面试宝典

    - **方法重载(Overloading)**:在一个类中定义多个同名方法,但参数列表不同。 **2. Overload和Override的区别?Overloaded的方法是否可以改变返回值的类型?** - **Overload**:在同一类中,方法名相同但参数列表...

    面试宝典总结

    - **重载(Overloading)**: 在同一个类中,允许存在一个以上的同名方法,只要它们的参数列表不同即可。 - **重写(Overriding)**: 子类继承父类后,可以重新定义父类中的方法,实现不同的功能。重写要求方法名、参数...

    面经-基础篇水印2.pdf

    9. 重载和重写的区别:重载是指多个方法同名但参数不同,而重写是指子类对父类方法的重写。 10. Java 面向对象编程三大特性:封装、继承、多态。 11. String StringBuffer 和 StringBuilder 的区别:String 是不可变...

    JAVA 面试题整理.doc

    17. **Overload 和 Override**:Overload(重载)是在同一类中定义多个同名方法,但参数列表不同;Override(重写)是指子类重新实现父类的同名方法。重载方法可以改变返回类型,但重写方法必须保持返回类型和参数...

    C#面试题资料

    - **方法重载**:允许在同一类中定义多个同名但参数列表不同的方法。 4. **面向对象编程**: - **类与对象**:类是对象的蓝图,对象是类的实例。 - **封装**:通过访问修饰符(public, private, protected等)...

    ssh面试题及框架集合

    重载是在同一类中定义多个同名方法,但参数列表不同,用于实现不同功能。 了解这些基本概念和技术,对于准备SSH框架相关的面试或者进行Java Web开发是非常重要的。它们不仅涉及到具体的框架使用,还涵盖了面向对象...

    大数据面试复习----常问问题分析.docx

    5. **重载和重写**:重载(Overloading)发生在同一个类中,方法名相同但参数列表不同;重写(Overriding)发生在子类中,子类方法与父类方法同名同参数列表,但有不同的实现。 6. **多线程**:Java通过Thread类...

    从J2SE到J2EE知识点介绍

    方法重载允许在同一个类中定义多个同名但参数列表不同的方法,而方法覆盖则是在子类中重新定义父类的方法。 6. **接口(Interface)**:接口定义了一组方法签名,是实现多继承的手段。内部类(Inner Class)可以在...

    java程序员面试题——863面试集

    - **Overload** (重载): 同一个类中多个同名方法,参数列表不同。 - **Override** (重写): 子类覆盖父类中的方法,方法签名完全相同。 13. **Set 中元素的唯一性判断** - Set 使用 `equals()` 方法来判断元素...

    java知识复习大纲.docx

    - **重载**(Overload):在同一个类中定义多个同名的方法,这些方法的参数列表不同(参数个数、类型或顺序不同),但返回类型可以相同也可以不同。 2. **内存泄漏与内存溢出的区别**: - **内存溢出**:当程序...

    java程序员面试宝典 含答案

    重载(Overload)是在同一类中定义多个同名方法,但参数列表不同。 - **集合类**:如List(ArrayList、LinkedList)、Set(HashSet、TreeSet)和Map(HashMap、HashTable)等,各有其特点和使用场景。 - **容器类...

Global site tag (gtag.js) - Google Analytics