`
默翁1
  • 浏览: 26897 次
社区版块
存档分类
最新评论

Bean后处理器

阅读更多

Bean后处理器是一种特殊的Bean,这种特殊的Bean并不对外提供服务,无需id属性,可以负责对容器中的其他Bean执行后处理

Bean后处理必须实现BeanPostProcessor接口,该接口包含以下两个方法

Object postProcessorBeforeInitialization(Object bean,String beanName) throws BeansException

Object postProcessorAfterInitialization(Object bean,String beanName) throws BeansException

public interface Person {
	public void sayHello();
}

 

public class Teacher implements Person{
	
	private Student student;
	private String username;
	@Override
	public void sayHello() {
		System.out.println("我是一个老师");
		student.sayHello();
	}
	
	@PostConstruct
	public void init(){
		System.out.println("教师类初始化");
	}
	
	@PreDestroy
	public void close(){
		System.out.println("教师类销毁之前调用的方法");
	}

	public String getUsername() {
		return username;
	}

	public void setUsername(String username) {
		this.username = username;
	}

	public Student getStudent() {
		return student;
	}

	public void setStudent(Student student) {
		this.student = student;
	}
}

 

public class Student implements Person{

	@Override
	public void sayHello() {
		System.out.println("我是一个学生");
		
	}

}

 

<bean id="student" class="com.Student"></bean>
	<bean id="teacher" class="com.Teacher">
		<property name="student" ref="student"></property>
		<property name="username">
			<value>moweng</value>
		</property>
	</bean>
	<bean id="beanPostProcessor" class="com.MyBean"></bean>

 

public static void main(String[] args) {
		ApplicationContext context=new ClassPathXmlApplicationContext("config/applicationContext.xml");
		Person teacher=(Teacher)context.getBean("teacher");
		teacher.sayHello();
	}

 小结:当采用BeanFactory作为spring容器时,必须手动注册BeanPostProcessor,.ApplicationContext可以自动检测容器中Bean后处理器,并自动注册

public static void main(String[] args) {
	
		ClassPathResource resource=new ClassPathResource("config/applicationContext.xml");
		XmlBeanFactory factory=new XmlBeanFactory(resource);
		MyBean beanProcessorBean=(MyBean)factory.getBean("beanPostProcessor");
		factory.addBeanPostProcessor(beanProcessorBean);
		Person teacher=(Teacher)factory.getBean("teacher");
		teacher.sayHello();
	}

 

0
0
分享到:
评论

相关推荐

    Spring 容器后处理器

    为了使Spring能够自动识别这个后处理器,通常需要将其配置为一个普通的bean,并且需要使用`ApplicationContext`作为容器,因为`BeanFactory`无法自动识别BeanFactoryPostProcessor。 #### 四、内置的容器后处理器 ...

    Spring Bean 后置处理器.pdf

    spring Bean 后置处理器.pdf

    Spring实战之Bean的后处理器操作示例

    Spring实战之Bean的后处理器操作示例 本文主要介绍了Spring实战之Bean的后处理器操作,结合实例形式详细分析了Bean的后处理器相关配置、操作方法及使用注意事项。 Bean的后处理器 在Spring框架中,Bean的后处理器...

    Spring在应用中获得Bean的方法

    此外,`@Autowired`注解的工作原理涉及`AutowiredAnnotationBeanPostProcessor`类,它是一个Bean后处理器,会在Bean实例化后进行处理,找到匹配的依赖并注入。 在开发中,Spring提供的各种工具如`BeanPostProcessor...

    spring 中特殊bean用法

    9. **Bean后处理器(Bean Post Processor)**: Bean后处理器允许在初始化Bean之后和销毁Bean之前执行自定义逻辑。通过实现`BeanPostProcessor`接口,我们可以自定义Bean的初始化和销毁行为。 10. **Resource注入**:...

    实验一:Spring IoC中Bean的装置的jar包

    此外,Bean后处理器(Bean Post Processor)允许我们在Bean初始化前后进行自定义处理,进一步增强灵活性。 在实际项目中,我们通常会将这些配置打包成jar文件,以便于其他模块或应用引用。这样,我们可以通过Spring...

    110-140上传请查阅,谢谢!

    2. Spring Bean后处理器:"139-框架篇-06-spring_refresh_06_注册bean后处理器"涉及的是Spring中的Bean后处理器,这是一种扩展点,允许在Bean实例化后、初始化之前或初始化之后进行额外的操作,比如属性注入、AOP...

    Bean的后置处理器MergedBeanDefinitionPostProcessor.docx

    总的来说,`MergedBeanDefinitionPostProcessor`是一个关键的组件,它在Spring容器中处理Bean定义的合并后阶段,通过不同的处理器对Bean定义进行增强,确保了如自动装配、初始化回调等特性能够正确地应用于Bean实例...

    spring代码程序

    Bean后处理器(BeanPostProcessor)允许开发者在bean初始化前后插入自定义的行为,例如属性的自动装配、AOP代理的创建等。开发者可以通过实现BeanPostProcessor接口,定义beforeInitMethod和afterInitMethod方法来...

    beanAssemble.rar

    `bg05:Bean后处理器`(Bean Post Processor)是Spring提供的一种扩展机制,它允许我们在Bean实例化后和初始化前后执行自定义逻辑。例如,我们可以使用后处理器进行AOP代理、属性值后处理等操作。实现`...

    spring-beans

    Bean后处理器是在Bean实例化之后、初始化之前,以及销毁之前、之后进行处理的接口。例如,我们可以使用它来实现AOP(面向切面编程)的增强。 6. **元数据支持** `spring-beans`还提供了对元数据的支持,包括XML和...

    spring启动componentscan类扫描加载过程

    6. **处理Bean后处理器**:在扫描和注册过程中,Spring还会查找并注册`BeanPostProcessor`,这些处理器可以在Bean实例化前后执行自定义逻辑,比如AOP代理的生成。 7. **实例化Bean**:最后,Spring容器会根据Bean...

    soring02.zip

    8. **容器扩展点**:Spring提供了多种扩展点,如Bean后处理器(BeanPostProcessor)、Bean工厂后处理器(BeanFactoryPostProcessor),允许开发者自定义Bean的初始化和销毁逻辑。 这个“soring02”可能包含了一个或...

    spring4框架系列 [ 3 ]

    - **Bean后处理器**:实现`BeanPostProcessor`接口,可以注册回调方法,在Bean实例化和初始化前后进行操作。 - **AOP代理**:通过AOP,可以在Bean的方法调用前后插入自定义的行为,例如日志记录、事务管理等。 ...

    spring core 英文文档

    此外,还可以通过编程方式控制容器的行为,如实现自定义的Bean后处理器和Bean工厂后处理器。 2. **Bean概述** Bean是IoC容器中的基本组件,它们是被管理的对象。 1.3.1 **Bean命名** Bean可以通过`id`和`name`...

    一种基于Spring的java程序常量管理思路

    这是一个自定义的Bean后处理器,它在Spring容器初始化bean时执行特定的操作。`BeanPostProcessor`接口是Spring提供的一个扩展点,允许我们在bean实例化和初始化之后或之前进行自定义处理。`...

    Spring Key tutorial PDF

    Bean 后处理器是在 bean 被创建后对其进行自定义操作的一种机制。 - **示例**:实现 BeanPostProcessor 接口,并重写 postProcessBeforeInitialization 和 postProcessAfterInitialization 方法来修改 bean 的行为...

    SpringFactory.java

    7. **自定义Bean后处理器**:BeanFactory允许注册自定义的BeanPostProcessor,可以在Bean初始化前后进行额外操作。"SpringFactory.java"可能提供了扩展点,允许用户插入自己的后处理器。 总之,"SpringFactory.java...

    Spring学习笔记(6)----编码剖析Spring依赖注入的原理

    这个类实现了Bean后处理器接口,会在Bean实例化后对`@Autowired`进行处理。它会遍历Bean的属性,根据类型匹配其他Bean,如果找到匹配的Bean,则进行注入。 对于多候选Bean的情况,Spring提供了多种解决策略。可以...

Global site tag (gtag.js) - Google Analytics