Spring攻略学习笔记 --创建Bean后处理器 (三)

2014-11-24 11:27:37 · 作者: · 浏览: 22
;

import java.io.IOException;

import org.junit.Test;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;

/**
* @author jackie
*
*/
public class BeanPostProcessorTest {
@Test
public void testBeanPostProcessor() throws IOException {
ApplicationContext applicationContext = new ClassPathXmlApplicationContext("applicationContext.xml");
Product aaa = (Product) applicationContext.getBean("aaa");
Product cdrw = (Product) applicationContext.getBean("cdrw");
Product dvdrw = (Product) applicationContext.getBean("dvdrw");

ShoppingCart shoppingCart = (ShoppingCart) applicationContext.getBean("shoppingCart");
shoppingCart.addItem(aaa);
shoppingCart.addItem(cdrw);
shoppingCart.addItem(dvdrw);

Cashier cashier = (Cashier) applicationContext.getBean("cashier1");
cashier.checkout(shoppingCart);
}
}

package com.codeproject.jackie.springrecipesnote.springadvancedioc;

import java.io.IOException;

import org.junit.Test;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;

/**
* @author jackie
*
*/
public class BeanPostProcessorTest {
@Test
public void testBeanPostProcessor() throws IOException {
ApplicationContext applicationContext = new ClassPathXmlApplicationContext("applicationContext.xml");
Product aaa = (Product) applicationContext.getBean("aaa");
Product cdrw = (Product) applicationContext.getBean("cdrw");
Product dvdrw = (Product) applicationContext.getBean("dvdrw");

ShoppingCart shoppingCart = (ShoppingCart) applicationContext.getBean("shoppingCart");
shoppingCart.addItem(aaa);
shoppingCart.addItem(cdrw);
shoppingCart.addItem(dvdrw);

Cashier cashier = (Cashier) applicationContext.getBean("cashier1");
cashier.checkout(shoppingCart);
}
}
注:书上说如果使用JSR-250注解@PostConstruct和@PreDestroy,并且一个CommonAnnotationBeanPostProcessor实例调用初始化方法,那么PathCheckingBeanPostProcessor不能正常工作,因为它的默认优先级低于CommonAnnotationBeanPostProcessor。经我实践证明,PathCheckingBeanPostProcessor仍然可以正常工作。