2015-05-26 2 views
0

У меня есть своеобразное требование вызова родительского класса PostContruct вместо дочернего классавызова метода класса Parent PostConstruct вместо класса ребенок

import javax.annotation.PostConstruct; 

public class Parent { 

    public Parent(){ 
     System.out.println("In parent contructor"); 
    } 

    @PostConstruct 
    public void test(){ 
     System.out.println("In parent post construct"); 
     // call the child's class method 
     this.test() 
    } 
} 


import org.springframework.stereotype.Service; 

    @Service("Child") 
    public class Child extends Parent{ 

     public void test(){ 
      System.out.println("In child post construct method"); 
     } 
    } 

Таким образом, используя класс аннотаций ребенка служба в Spring загружается, используя PostContruct аннотацию тестовый класс ребенка метод, но наше требование - вызвать родительский класс, из которого мы можем вызвать метод тестирования класса ребенка.

Есть ли способ добиться того же, мы не хотим вводить новые методы или метод изменений логики

+1

Ehrm. делать то, что вы разместили здесь, приведет к переполнению стека, если вы не переопределите этот метод. Создайте метод, который вызывается из реализации testMethod' en, не переопределяя методы. То же самое делается и в нескольких классах самого весеннего каркаса. –

ответ

1

Если вам не нужно конкретное поведение от ребенка вы можете просто не переопределить его. Если у вас нет textMethod в дочернем, вероятно, будет использоваться метод родителя.

Если у вас есть конкретное поведение для добавления к вашему потомку, добавьте аннотацию @Override и вызовите super.testMethod() всякий раз, когда вам это нужно.

Смежные вопросы