我有一个类:
- Java code
public class HPServiceImpl implements HPService{ private HPDao dao; public void setHPDao(HPDao dao) { this.dao = dao; } @Override public int getHp() { return dao.getHp(); }}
它的Bean定义:
- XML code
<bean id="hpService" class="org.mycompany.spring.aop.service.impl.HPServiceImpl"> <property name="dao"> <ref bean="hpDao" /> </property> </bean>
// -----------------------------------------------------------
引用了hpDao的Bean:
- XML code
<bean id="hpDao" class="org.mycompany.spring.aop.dao.impl.HPDaoImpl"/>
hpDao的实际类是:
- Java code
public class HPDaoImpl implements HPDao{ @Override public int getHp() { return (int)(Math.random() * 100); } }
// -----------------------------------------------------------
我用一个main去调用它:
- Java code
public class Main{ public static void main(String[] args) { ApplicationContext context= new ClassPathXmlApplicationContext("classpath*:spring/application-*.xml"); (HPService)context.getBean("hpService"); }}
运行抛出了异常:
- Java code
Caused by: org.springframework.beans.InvalidPropertyException: Invalid property 'dao' of bean class [org.mycompany.spring.aop.service.impl.HPServiceImpl]: No property 'dao' found
晕...说找不到'dao'. 我不是定义了吗: private HPDao dao;
------解决方案--------------------
public void setHPDao(HPDao dao)
{
this.dao = dao;
}
<property name="hPDao">
<ref bean="hpDao" />
</property>
setter方法名,去掉前面三个字符,然后第四个字符转成小写。