私は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();
}
}