直接用service实现两个接口:
package com.myapp.core.annotation.init; import javax.annotation.PostConstruct; import javax.annotation.PreDestroy; import org.springframework.beans.factory.DisposableBean; import org.springframework.beans.factory.InitializingBean; public class PersonService implements InitializingBean,DisposableBean{ private String message; public String getMessage() { return message; } public void setMessage(String message) { this.message = message; } @Override public void destroy() throws Exception { // TODO Auto-generated method stub System.out.println("I'm init method using implements InitializingBean interface...."+message); } @Override public void afterPropertiesSet() throws Exception { // TODO Auto-generated method stub System.out.println("I'm init method using implements DisposableBean interface...."+message); } }
spring xml :
<?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:context="http://www.springframework.org/schema/context" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.1.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.1.xsd"> <!-- <context:component-scan base-package="com.myapp.core.jsr330"/> --> <!-- <context:annotation-config /> --> <!-- <bean class="org.springframework.context.annotation.CommonAnnotationBeanPostProcessor" /> <bean id="personService" class="com.myapp.core.annotation.init.PersonService"> <property name="message" value="123"></property> </bean> --> <bean id="personService" class="com.myapp.core.annotation.init.PersonService"> <property name="message" value="123"></property> </bean> </beans>
测试类:
package com.myapp.core.annotation.init; import org.springframework.context.ApplicationContext; import org.springframework.context.support.AbstractApplicationContext; import org.springframework.context.support.ClassPathXmlApplicationContext; public class MainTest { public static void main(String[] args) { AbstractApplicationContext context = new ClassPathXmlApplicationContext("resource/annotation.xml"); PersonService personService = (PersonService)context.getBean("personService"); context.registerShutdownHook(); } }
相关推荐
我们还可以让 Bean 实现 InitializingBean 和 DisposableBean 接口来实现初始化和销毁逻辑。例如: ```java @Component public class Cat implements InitializingBean,DisposableBean { public Cat(){ System....
下面将详细介绍如何通过不同方式定义Spring Bean的初始化和销毁回调方法。 **初始化回调方法** 1. **@PostConstruct注解** 这个Java标准注解用于标记一个方法,该方法将在对象完全构造后但在业务逻辑执行前被调用...
通过实现`postProcessBeforeInitialization()`和`postProcessAfterInitialization()`方法,可以在Bean实例化和初始化之后进行额外操作。 总结起来,Spring提供了多种方式让我们能够在Bean的生命周期中插入自定义...
我们需要继承 Spring 接口 InitializingBean/DisposableBean,其中 InitializingBean 用于初始化动作,而 DisposableBean 用于销毁之前清理动作。 ```java @Service public class HelloService implements ...
Spring框架是Java领域里一个广泛使用的轻量级应用开发框架,它提供了一系列用于简化企业级应用开发的特性。...开发者可以通过实现这些扩展接口或注解来实现自定义的初始化和销毁逻辑,增强应用的灵活性和可维护性。
在Spring框架中,Bean的生命周期管理是其核心功能之一,它涉及到Bean的创建、初始化、使用和销毁等各个阶段。以下是对"bean的生命周期1"的详细解释: 1. **指定初始化和销毁方法**: Spring允许我们为Bean定义初始...
此外,如果你在XML配置中也指定了初始化和销毁方法,那么这些方法也会被调用,除非你明确地禁用了注解处理(通过`@ComponentScan`的`excludeFilters`或`@Configuration`的`@ImportResource`等)。 总之,`@...
编程式通过实现接口如InitializingBean和DisposableBean,然后重写其特定方法(afterPropertiesSet()和destroy())来控制Bean的初始化和销毁。声明式则是在XML配置文件中使用`init-method`和`destroy-method`属性来...
ingBean 和 DisposableBean 接口 当不使用注解而是通过实现接口的方式来控制 Bean 的生命周期时,可以实现 InitializingBean 和 DisposableBean 接口。这两个接口由 Spring 提供,它们包含两个方法: - ...
其次,bean可以实现`InitializingBean`和`DisposableBean`接口来定义初始化和销毁逻辑。`InitializingBean`有一个`afterPropertiesSet()`方法,在bean的所有属性设置完毕后被调用;`DisposableBean`有一个`destroy()...
Bean可以通过实现InitializingBean和DisposableBean接口,或者在配置文件中定义init-method和destroy-method来声明初始化和销毁回调方法。另外,Spring 3.0引入的注解@PostConstruct和@PreDestroy也可以标记初始化和...
理解这些阶段,可以让我们更好地利用自动装配,定制 Bean 的初始化和销毁行为,例如通过 @PostConstruct 和 @PreDestroy 注解来指定初始化和销毁方法。 2. **ApplicationContextInitializer** 在 Spring 容器初始...
- 实现了InitializingBean接口的Bean,可以自定义afterPropertiesSet方法来进行初始化操作。 - 实现了DisposableBean接口的Bean,可以自定义destroy方法来定义销毁行为。 除此之外,还可以通过XML配置文件或者注解...
Bean可以通过实现InitializingBean接口并覆盖`afterPropertiesSet()`方法,或者定义一个`init-method`属性指定初始化方法。此外,如果Bean实现了ApplicationContextAware接口,Spring会在初始化时注入...
5. **实现InitializingBean接口**:另一种自定义初始化逻辑的方式是让Bean实现`InitializingBean`接口并覆盖`afterPropertiesSet()`方法。 - 上文中`Cat`类实现了`InitializingBean`接口,并在`afterPropertiesSet...
开发者可以通过实现`InitializingBean`接口或使用`@PostConstruct`注解定义初始化方法,通过实现`DisposableBean`接口或使用`@PreDestroy`注解定义销毁方法。 线程(Thread)是Java多线程编程的基础,它代表了程序...
- 如果Bean实现了`InitializingBean`接口,Spring会调用`afterPropertiesSet()`方法,标志着Bean初始化的结束。 6. **自定义初始化和销毁方法**: - 开发者可以自定义初始化方法,通过在Bean定义中指定`init-...
`InitializingBean`接口包含一个`afterPropertiesSet()`方法,它会在Bean的所有属性被设置好之后被调用,用于执行初始化任务。这与在配置文件中通过`init-method`指定的方法类似,但`afterPropertiesSet()`方法会先...
`MyBean`实现了`InitializingBean`和`DisposableBean`接口,以及自定义的初始化和销毁方法,以便在生命周期的不同阶段执行特定操作。 总之,理解和掌握Spring Bean的生命周期对于开发高质量、易于维护的应用至关...
可以通过实现InitializingBean接口、使用@PostConstruct注解、指定init-method,以及实现DisposableBean接口、使用@PreDestroy注解、指定destroy-method来分别控制Bean初始化和销毁时的行为。 2. **XxxAware接口**...