S_a_k_Uの日記みたいなDB

~サクゥーと呼ばないで~

AOPとインターフェース

たまたまAOPトランザクションをかけるテストクラスにはインターフェースを定義していなかった。
その時点では、getBeanしてテストクラスでキャストしてた。

【ApplicationContextファイル】

    
        
             #別途Bean定義済み
        
    
    
        
            
        
    



【Beanクラス】
package hoge;
public class HogeA {
    public HogeA() {
        super();
    }
}

【Beanを取得するクラス】
public class HogeB {
    public HogeB() {
        super();
    }
    public static void main(String args[]) {
        AppplicationContext context = ClassPathXmlApplicationContext("【ApplicationContextファイル】")
        HogeA hogeA = (HogeA) context.getBean("hogeA"); ←ClassCastExceptionにならない
    }
}


んで、途中でAOPとインターフェースの関係について記述を見かけて、テストクラスにインターフェースを定義してみた。
そしたら、getBeanしてテストクラスでキャストしたらClassCastExceptionになった。

【Beanクラス】
package hoge;
public class HogeA interface IHogeA {
    public HogeA() {
        super();
    }
}

【Beanを取得するクラス】
public class HogeB {
    public HogeB() {
        super();
    }
    public static void main(String args[]) {
        AppplicationContext context = ClassPathXmlApplicationContext("【ApplicationContextファイル】")
        HogeA hogeA = (HogeA) context.getBean("hogeA"); ←ClassCastExceptionになる
    }
}


んで、インターフェースでキャストしたらOKに。

【Beanを取得するクラス】
public class HogeB {
    public HogeB() {
        super();
    }
    public static void main(String args[]) {
        AppplicationContext context = ClassPathXmlApplicationContext("【ApplicationContextファイル】")
        IHogeA hogeA = (IHogeA) context.getBean("hogeA"); ←ClassCastExceptionにならない
    }
}


なぜにインターフェースを定義していないときは、テストクラスでキャストしてもOKなのに、インターフェースを定義した途端ダメになるんじゃ?