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

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


public void checkout(ShoppingCart cart) throws IOException {
double total = 0;
for (Product product : cart.getItems()) {
total += product.getPrice();
}
writer.write(new Date() + "\t" + total + "\r\n");
writer.flush();
}

public void closeFile() throws IOException {
writer.close();
}

@Override
public String getPath() {
return path;
}

@Override
public void setBeanName(String beanName) {
this.name = beanName;
}
}
PathCheckingBeanPostProcessor自定义Bean后处理器


[java]
package com.codeproject.jackie.springrecipesnote.springadvancedioc;

import java.io.File;

import org.springframework.beans.BeansException;
import org.springframework.beans.factory.config.BeanPostProcessor;

/**
* 通用的组件,确保文件在打开之前存在
* @author jackie
*
*/
public class PathCheckingBeanPostProcessor implements BeanPostProcessor {
/**
* 在文件打开之前进行路径检查
* 须返回所处理的Bean的一个实例。
*/
@Override
public Object postProcessBeforeInitialization(Object bean, String beanName)
throws BeansException {
// 如果Bean实现了StorageConfig接口,检查路径是否存在
if (bean instanceof StorageConfig) {
String path = ((StorageConfig)bean).getPath();
File file = new File(path);
if (!file.exists()) {
file.mkdirs();
}
}
return bean;
}

/**
* 即使什么都不做,也必须返回原来的Bean实例
*/
@Override
public Object postProcessAfterInitialization(Object bean, String beanName)
throws BeansException {
return bean;
}
}

package com.codeproject.jackie.springrecipesnote.springadvancedioc;

import java.io.File;

import org.springframework.beans.BeansException;
import org.springframework.beans.factory.config.BeanPostProcessor;

/**
* 通用的组件,确保文件在打开之前存在
* @author jackie
*
*/
public class PathCheckingBeanPostProcessor implements BeanPostProcessor {
/**
* 在文件打开之前进行路径检查
* 须返回所处理的Bean的一个实例。
*/
@Override
public Object postProcessBeforeInitialization(Object bean, String beanName)
throws BeansException {
// 如果Bean实现了StorageConfig接口,检查路径是否存在
if (bean instanceof StorageConfig) {
String path = ((StorageConfig)bean).getPath();
File file = new File(path);
if (!file.exists()) {
file.mkdirs();
}
}
return bean;
}

/**
* 即使什么都不做,也必须返回原来的Bean实例
*/
@Override
public Object postProcessAfterInitialization(Object bean, String beanName)
throws BeansException {
return bean;
}
}Bean配置


[html]
< xml version="1.0" encoding="UTF-8" >
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.2.xsd">























< xml version="1.0" encoding="UTF-8" >
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.2.xsd">























测试类


[java]
package com.codeproject.jackie.springrecipesnote.springadvancedioc