어떻게 재정의 EJB3 세션 콩 방법으로 일반적인 주장 가능한 경우에는 모두가?[마감]
-
08-06-2019 - |
문제
이 있다고 가정은 다음 EJB3 개의 인터페이스/클래스:
public interface Repository<E>
{
public void delete(E entity);
}
public abstract class AbstractRepository<E> implements Repository<E>
{
public void delete(E entity){
//...
}
}
public interface FooRepository<Foo>
{
//other methods
}
@Local(FooRepository.class)
@Stateless
public class FooRepositoryImpl extends
AbstractRepository<Foo> implements FooRepository
{
@Override
public void delete(Foo entity){
//do something before deleting the entity
super.delete(entity);
}
//other methods
}
그리고 또 다른 콩에 액세스하는 FooRepository
콩:
//...
@EJB
private FooRepository fooRepository;
public void someMethod(Foo foo)
{
fooRepository.delete(foo);
}
//...
그러나,다른 무엇보다 더 중요한 방법을 실행하지 않을 때 삭제 방법 FooRepository
콩 라고 합니다.대신만의 구현을 삭제하는 방법에 정의된 AbstractRepository
이 실행됩니다.
내가 뭘 잘못된 또는 그것은 단순히 제한 Java/EJB3generics 및 상속이라 함께 아직?
해결책
나는 그것을 시도한 pojo 및 작동하는 것 같다.나는 코드를 수정하는 비트입니다.나는 생각한 귀하의 인터페이스트,하지만 나는 확실하지 않다.
정"Foo"었다 구체적인 유형,그러나 그렇지 않으면 내가 할 수 있는 몇 가지 더 많은 테스트를 위한 당신.
나는 그냥을 쓴 주요 방법을 이 테스트합니다.이 도움이 되었으면 좋겠습니다!
public static void main(String[] args){
FooRepository fooRepository = new FooRepositoryImpl();
fooRepository.delete(new Foo("Bar"));
}
public class Foo
{
private String value;
public Foo(String inValue){
super();
value = inValue;
}
public String toString(){
return value;
}
}
public interface Repository<E>
{
public void delete(E entity);
}
public interface FooRepository extends Repository<Foo>
{
//other methods
}
public class AbstractRespository<E> implements Repository<E>
{
public void delete(E entity){
System.out.println("Delete-" + entity.toString());
}
}
public class FooRepositoryImpl extends AbstractRespository<Foo> implements FooRepository
{
@Override
public void delete(Foo entity){
//do something before deleting the entity
System.out.println("something before");
super.delete(entity);
}
}
다른 팁
을 작성할 수 있습니 단위 테스트에 대한 FooRepository 클래스로 사용 POJO.는 경우에는 예상대로 작동한 다음 나는 익숙하지 않는 어떤 이유는 다르게 기능 안 컨테이너입니다.
내가 심는 다른 무언가가있에는 것은 아마도 쉽게 디버깅을 테스트하는 경우로 POJO.
제휴하지 않습니다 StackOverflow