春の勉強を始めたばかりです。サンプル プログラムを実装しているときに問題が発生したので、このフォーラムで調べて答えを得ることを考えました。
次は spring.xml です
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN 2.0//EN" "http://www.springframework.org /dtd/spring-beans-2.0.dtd">
<beans>
<bean id="triangle" class="org.springdemo.Triangle" autowire="byName">
</bean>
<bean id="employee" class="org.springdemo.emp.Employee" autowire="byName">
</bean>
<bean id="address" class="org.springdemo.emp.Address">
<property name="city" value="PUNE"></property>
<property name="street" value="MH"></property>
<property name="pin" value="411013"></property>
</bean>
<bean id="customerDAO" class="org.mykong.springdb.Customer">
</bean>
</beans>
これが私のクライアントプログラムです:
public static void main( String[] args )
{
ApplicationContext context =
new ClassPathXmlApplicationContext("spring.xml");
Customer customer = (Customer) context.getBean("customerDAO");
System.out.println(customer.getBeanName());
}
私のカスタマー Bean:
public class Customer implements BeanNameAware, BeanPostProcessor{
private String name;
private int age;
protected Customer() {
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public String toString() {
return "Customer id : " + " , Name : " + this.name + " , Age: " + this.age;
}
public void setBeanFactory(BeanFactory arg0) throws BeansException {
}
private String beanName = null;
public void setBeanName(String name) {
this.beanName = name;
}
public String getBeanName() {
return beanName;
}
public Object postProcessAfterInitialization(Object bean, String arg1)
throws BeansException {
System.out.println(" IN : postProcessAfterInitialization - bean initialized" + bean.getClass() );
return bean;
}
public Object postProcessBeforeInitialization(Object bean, String arg1)
throws BeansException {
System.out.println(" IN : postProcessBeforeInitialization " );
return bean;
}
}
質問 1: 私の spring.xml には 4 つの Bean に関する構成があります。ただし、出力は 3 つの Bean に対してのみ行われます (customerDAO を除く)。なんで?
質問 2: 前後のプロセス初期化メソッドを customerDAO に対してのみ呼び出したい場合はどうすればよいですか? それはとても簡単かもしれませんか?私はわかりません。ですが、回答をお願いします。前もって感謝します
出力:
IN : postProcessBeforeInitialization IN : postProcessAfterInitialization - bean 初期化クラス org.springdemo.Triangle IN : postProcessBeforeInitialization IN : postProcessAfterInitialization - bean 初期化クラス org.springdemo.emp.Address IN : postProcessBeforeInitialization IN : postProcessAfterInitialization - bean 初期化クラス org.springdemo.emp.Employee customerDAO