依存性注入に関して助けが必要です。Beanインスタンスがロードされていません
JdbcTemplateのオブジェクト参照を持つBeanクラスがあり、そのオブジェクトのインスタンスをから に作成しています。しかし、そのオブジェクトはロードされておらず、その結果、setCustName()メソッドからNullPointerExceptionがスローされます。
Beanクラスを助けてください:
class CustomerBean {
private String custName;
@Autowired
private JdbcTemplate jdbcTemplate;
public void setCustName(String custName) {
this.custName = custName;
jdbcTemplate.update(query);
}
}
XML:
<bean id="myjdbcTemplate" class="org.springframework.jdbc.core.JdbcTemplate">
<property name="dataSource" ref="dataSource" />
</bean>
<bean id="custBean" class="com.test.CustomerBean">
<property name="custName" value="John" />
</bean>
スタックトレース:
PropertyAccessException 1: org.springframework.beans.MethodInvocationException: Property 'custName' threw exception; nested exception is java.lang.NullPointerException
at org.springframework.beans.factory.support.BeanDefinitionValueResolver.resolveReference(BeanDefinitionValueResolver.java:334)
at org.springframework.beans.factory.support.BeanDefinitionValueResolver.resolveValueIfNecessary(BeanDefinitionValueResolver.java:108)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.applyPropertyValues(AbstractAutowireCapableBeanFactory.java:1419)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.populateBean(AbstractAutowireCapableBeanFactory.java:1160)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:519)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:458)
at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:293)
at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:223)
あなたのコードのどこかで、あなたは 'CustomerBean'のインスタンスを取得していますか?どこかで 'new CustomerBean()'をやっていますか?そうすればうまくいきません。あなたはSpringがSpring beanの作成を管理できるようにする必要があります。Springは自動的に 'new'を使って自分自身をインスタンス化するオブジェクトへの依存関係を注入できません。 – Jesper
@Jesperご返信ありがとうございます。私はどこでも 'CustomerBean'のインスタンスを作成していません – Rehman
あなたのコードのどこかで、' setCustName'メソッドを呼び出す 'CustomerBean'のインスタンスを取得していなければなりません。そのコードはどこから 'CustomerBean'のインスタンスを取得しますか? – Jesper