`

spring的init-method和destroy-method方法使用

阅读更多
http://static.springsource.org/spring/docs/2.0.x/reference/beans.html
3.5.1.2. Destruction callbacks
<bean id="datasource"
class="org.apache.commons.dbcp.BasicDataSource"
destroy-method="close">
<property name="driverClassName" value="$[]" />
</bean>
destroy-method指定了当要销毁bean datasource之前要做的操作,也就是这个bean的收尾工作。
这里是指定了close()方法。
Closes and releases all idle connections that are currently stored in the connection pool associated with this data source.
http://commons.apache.org/dbcp/apidocs/org/apache/commons/dbcp/BasicDataSource.html
也可以像下面这样设置全局的init方法
<beans default-init-method="init">
    <bean id="blogService" class="com.foo.DefaultBlogService">
        <property name="blogDao" ref="blogDao" />
    </bean>
</beans>

要注意的是init和interceptor一起使用的情况,当bean和intereptor分开定义时,可以绕过proxy访问这个bean了。但是,还是不要在init里关联interceptor,因为
这样bean的生命周期会与proxy/interceptors耦合:
Finally, please be aware that the Spring container guarantees that a configured initialization callback is called immediately after a bean has been supplied with all of it's dependencies. This means that the initialization callback will be called on the raw bean reference, which means that any AOP interceptors or suchlike that will ultimately be applied to the bean will not yet be in place. A target bean is fully created first, then an AOP proxy (for example) with its interceptor chain is applied. Note that, if the target bean and the proxy are defined separately, your code can even interact to the raw target bean, bypassing the proxy. Hence, it would be very inconsistent to apply the interceptors to the init method, since that would couple the lifecycle of the target bean with its proxy/interceptors, and leave strange semantics when talking to the raw target bean directly.
分享到:
评论

相关推荐

    架构师面试题系列之Spring面试专题及答案(41题).docx

    init-method 和 destroy-method 是两个非常重要的属性,它们用于指定 Bean 的初始化方法和销毁方法。 init-method 属性用于指定 Bean 的初始化方法,这个方法会在 Bean 实例化完成后被调用。 destroy-method 属性...

    详解java代码中init method和destroy method的三种使用方式

    `initMethod` 和 `destroyMethod` 属性分别指定了bean初始化和销毁时要调用的方法。例如: ```java @Bean(initMethod = "init", destroyMethod = "destroy") Test1 test1() { return new Test1(); } ``` 在...

    spring-context-4.2.xsd.zip

    此外,`&lt;bean&gt;`元素还支持通过`init-method`和`destroy-method`属性指定bean的初始化和销毁方法,以进行自定义的生命周期管理。 `spring-context-4.2.xsd`还定义了处理bean作用域(scope)、AOP代理(proxy)、事件...

    08-IoC配置-bean的生命周期控制

    Spring IOC容器可以管理Bean的生命周期,允许在Bean生命周期的特定点执行定制的任务。 Spring IOC容器对Bean的生命周期...在 Bean 的声明里设置 init-method 和 destroy-method 属性, 为 Bean 指定初始化和销毁方法。

    Spring--2.Spring 中的 Bean 配置-2-1

    - 可以通过`init-method`和`destroy-method`属性指定Bean的初始化和销毁方法,例如: ```xml &lt;bean id="exampleBean" class="com.example.ExampleClass" init-method="init" destroy-method="destroy"/&gt; ``` 7....

    Spring.pdf

    值得注意的是,Spring 2.5版本后引入了注解的方式,可以使用@PostConstruct和@PreDestroy来代替XML中的init-method和destroy-method,从而更简洁地指定Bean的初始化和销毁方法。 容器本身也具备了极高的扩展性,...

    spring-2.0.8-sources.jar.zip

    2.0.8版本的Bean工厂支持了更丰富的生命周期回调方法,如init-method和destroy-method,使开发者能更好地控制Bean的初始化和销毁过程。 七、JDBC和ORM支持 Spring 2.0.8加强了对JDBC的抽象,提供了JdbcTemplate和...

    Spring IOC Bean标签属性介绍(教学视频+源代码)

    Spring IOC Bean标签属性介绍 0.Bean标签属性介绍 1.0 新建一个Maven工程 1.1 pom.xml ...1.9 init-method和destroy-method 1.9.1 实体类JavaBean User加自定义的初始化方法和销毁方法 1.9.3 加了lazy

    Spring ApplicationContext.xml配置的12个技巧演示教学.pdf

    9. 使用 init-method 和 destroy-method 来管理 Bean 的生命周期 init-method 和 destroy-method 可以用来管理 Bean 的生命周期,例如,在Bean 实例化时执行某些操作。 10. 使用 profile 来管理不同的环境 ...

    14、加载spring启动首先进入的类方法注解1

    在Spring的XML配置文件中,我们可以使用`init-method`和`destroy-method`属性来指定初始化和销毁的方法。例如: ```xml &lt;bean id="personService" class="com.myapp.core.annotation.init.PersonService" init-...

    spring笔记

    总的来说,理解Spring配置文件中的bean定义,以及`init-method`、`destroy-method`的使用,对于有效地管理对象的生命周期至关重要。同时,掌握`@ModelAttribute`在Spring MVC中的工作原理,可以帮助我们更高效地进行...

    Spring--2.Spring 中的 Bean 配置-1

    在XML中,可以使用`init-method`和`destroy-method`属性指定。对于注解配置,可以使用`@PostConstruct`和`@PreDestroy`注解。 5. **依赖注入**: Spring的核心特性之一就是依赖注入(Dependency Injection,DI)。它...

    Spring-MyBatis-Ajax重点详解

    在多例对象时候,创建对象时候执行 init-method 属性指定的方法,每个对象都会调用一次 init 方法。关闭容器时候,不会执行 destroy-method 属性指定的方法。 懒惰初始化可以使用 lazy-init 属性来设置对象“懒惰”...

    spring-2.5.6源码

    2.5.6版本支持Bean的生命周期回调方法,如初始化方法(init-method)和销毁方法(destroy-method),以及自定义的生命周期处理器。 五、Spring的IoC容器 IoC容器是Spring的核心,负责管理Bean的实例化、配置和组装...

    Spring--2.Spring 中的 Bean 配置-3

    此外,Bean的初始化和销毁方法可以使用`init-method`和`destroy-method`属性(在XML中)或`@PostConstruct`和`@PreDestroy`注解(在Java或注解配置中)来定义。这些方法会在Bean生命周期的特定时刻被调用。 最后,...

    spring-beans

    初始化阶段可以调用`init-method`指定的方法,销毁阶段则调用`destroy-method`指定的方法。此外,Spring提供了多种扩展点,如 BeanPostProcessor 和 InstantiationAwareBeanPostProcessor,允许自定义处理Bean的创建...

    spring.docx

    例如,`scope`属性可以设置bean的作用域(如singleton、prototype等),`init-method`和`destroy-method`用于指定bean初始化和销毁时执行的方法。 此外,`pom.xml`文件展示了Maven的依赖管理,其中引入了Spring的...

    spring2.0-reference_final_zh_cn

    开发者可以自定义生命周期回调方法,如`init-method`和`destroy-method`,或者实现`InitializingBean`和`DisposableBean`接口。 4. **数据访问集成**:Spring提供了对多种数据库访问技术的支持,包括JDBC、ORM...

    spring容器初始化bean和销毁bean之前进行一些操作的方法

    3. 配置`init-method`:在Bean的定义中,可以使用`init-method`属性指定初始化方法的名称。容器会在所有属性注入后调用这个方法。 同样,对于销毁Bean前后的操作,也有以下方式: 1. 实现DisposableBean接口:该...

    Spring配置文件spring-context.zip

    5. `init-method`和`destroy-method`:指定bean初始化和销毁时要调用的方法。 6. `&lt;import&gt;`:引入其他配置文件,方便模块化和复用。 7. `&lt;context:component-scan&gt;`:通过注解扫描特定包下的类,自动发现并注册带...

Global site tag (gtag.js) - Google Analytics