项目场景:
依赖注入的实现方式有两种:- 属性setter方法注入
必要条件一是有无参构造,二是提供setter方法 - 构造方法注入
必要条件是要有有参构造方法
问题描述:
出错信息:Caused by: org.springframework.beans.factory.NoSuchBeanDefinitionException: No bean named 'Tom' available
测试类代码:
@Test
public static void main(String[] args) {
// TODO Auto-generated method stub
//1.加载配置文件,对Bean进行实例化
@SuppressWarnings("resource")
ApplicationContext context=new ClassPathXmlApplicationContext("applicationContext.xml");
//2.使用setter方法
User user=(User)context.getBean("user1");
System.out.println(user);
}
配置文件代码:
<!-- 使用setter注入方式创建User实例 -->
<bean id="user1" class="com.ruanyuan.pojo.User">
<property name="userName" ref="Mary"></property>
</bean>
解决方案:
因为实体类中UserName的类型是String,所以property标签中的属性名应该是value而不是ref
value属性用于简单数据类型,例如int、String
ref属性用于复杂数据类型,例如对象