不会,因为注解的不是同一个类
看你的springxml配置好像是spring-beanannatation.xml, 但是在你的实体类StringStore中没用注解,你是用的XML配置的方式吗?如果是的话,那么问题就在XML中,你可能只声明了Init-method方法,所以注释会出错。但是没配置destroy-method,所以注不住释都不出错。
hashCode是jdk根据对象的地址或者字符串或者数字算出来的int类型的数值
好像是4-2
.class文件是不能直接看源码的,eclipse貌似有插件可以反编译class文件
如果你想看的话建议去百度找ConfigurableBeanFactory对应的源码
好吧,我已经找到ConfigurableBeanFactory 的文档了
https://docs.spring.io/spring-framework/docs/2.5.x/api/org/springframework/beans/factory/config/ConfigurableBeanFactory.html
@Scope(scopeName="prototype") 这行代码修改成@Scope("prototype")即可
因为prototype是多例模式啊,JVM会自动回收使用完的实例的,当然不会执行销毁方法了
代理方式:一共两种,一种是接口的代理,一种是targetClass
你好,根据你的问题我试了下,正如你所说的那样,为此我打开ScopedProxyMode.TARGET_CLASS源码,注释内容: Create a class-based proxy (uses CGLIB).,通过这可以看到这个代理模式是基于类的。希望能够帮到你。
prototype 作用域和singleton不一样,prototype不会自动销毁对象,同一个容器中每次请求都会创建新的对象。你在prototype的注解的时候,在手动关闭容器。即可输出。 加一句 ctx.registerShutdownHook(); 即可手动关闭容器销毁对象,这样就能执行到destroy的方法
没代码说什么啊,贴出你的代码让我看看。
动态代理imooc里有专门的课程讲解,可以作为参考
点那个Change Attached Source按钮,选择spring的jar包的位置
代理方式主要有两种:针对接口的代理、针对类的代理,实现方式有所区别。前者是jdk动态代理,后者是cglib代理。