2017-05-05 4 views
0

私はSpring Core cert試験を勉強しています。私はフレームワークのテストをしています。春 - cglibまたはjdk動的プロキシがBeanに適用されたかどうかを知る方法

CGLIBまたはJDKライブラリによってBeanがプロキシされているかどうかを知る方法があるかどうかを知りたいと思います。

私はすでにSpringがJDKを使用してプロンプトを表示するような、基本的な概念を知っています。また、Beanをクラスに直接宣言すると、CGLIBを使用して継承によって代理されます。

私が知りたいのは、どのライブラリが使用されたかをチェックするためにデバッグ中に何を探すべきかです。

私はそれをデバッグするとき、私は作成された豆のインスタンスの違いを参照しないでください。私は今の機能は、ポストプロセッサで追加する必要があるときにプロキシが唯一のバネによって作成されていることを理解し、まだ:私は...何のインターフェースを持っていない豆で

EDITをConcreteBean $ CGLIBのようなものを見て期待していましたCGLIBが適用されたかどうかを見つけるためにデバッガで何を探すべきかを知りたい。 Beanが、それが述べ春CGLIBプロキシ$$ EnhancerBySpringCGLIBによって包まれ

@RunWith(SpringJUnit4ClassRunner.class) 
@ContextConfiguration(classes = MainConfig.class) 
public class ProxiesTest { 

    @Autowired 
    RandomBean randomBean; 
    @Autowired 
    ConcreteBean concreteBean; 

    public void setUp() { 
    } 

    @Test 
    public void randomBeanTest() { 
     randomBean.doSomething(); 
    } 
    @Test 
    public void concreteBeanTest() { 
     concreteBean.doSomething(); 
    } 
} 

public class ConcreteBean { 
    public void doSomething() { 
     String concreteBean = "hello"; 
    } 

    @PreDestroy 
    public void destroy() { 
     System.out.print("ConcreteBean Destroy"); 
    } 
} 

public interface RandomBean { 

    public void doSomething(); 

    public void destroy(); 
} 
public class RandomBeanImpl implements RandomBean { 

    @Autowired 
    ApplicationContext context; 

    public void doSomething() { 
     context.getParentBeanFactory(); 
    } 

    public void destroy() { 
     System.out.print("RandomBean destroyed"); 
    } 
} 
@Configuration 
@ComponentScan(basePackages = "com.certification.postprocessors") 
public class MainConfig { 

    @Bean 
    public ConcreteBean concreteBean(){ 
     return new ConcreteBean(); 
    } 

    @Bean 
    public RandomBean randomBean() { 
     return new RandomBeanImpl(); 
    } 
} 

答えて

関連する問題