Заменить приватный метод Spring Bean - PullRequest
0 голосов
/ 01 сентября 2018

У меня есть требование заменить частный метод пружинных бобов, могу ли я добиться с помощью замены пружины.

Мой код: Класс заменителя:

public class PrivateCarRep extends Car implements MethodReplacer{

@Override
public Object reimplement(Object obj, Method method, Object[] args) throws 
Throwable {

    // new property of Car.breaks() method.
    System.out.println("New  privateBreaksIs Done from Shiv");

    return obj;
}

}

Car.java

package org.websparrow.beans;

public class Car {
private void privateBreaks() {
    System.out.println("Old car break. privateBreaks");
}
}

Конфигурация My Spring:

<bean id="PrivateCarRep" class="org.websparrow.beans.PrivateCarRep"/>

<bean id="car" class="org.websparrow.beans.Car">
    <replaced-method name="privateBreaks" replacer="PrivateCarRep" />
</bean>

Дорогие все, я уже знаю, что я не могу заменить приватный метод с помощью пружинного заменителя, но есть ли обходной путь для этого весной ..

Ответы [ 2 ]

0 голосов
/ 03 сентября 2018

Боюсь, вы не можете этого сделать, я думаю, что метод должен быть защищен или общедоступен.

0 голосов
/ 01 сентября 2018

Вам нужно определить PrivateCarRep как компонент:

<bean id="privateCarReplacer" class="com.xx.yy.zz.PrivateCarRep" />

<bean id="car" class="org.websparrow.beans.Car">
    <replaced-method name="privateBreaks" replacer="privateCarReplacer" />
</bean>
...