标签property对应于bean类公开的JavaBean setter方法。标签property的属性中,name为属性名,type为=“”引号里面的类型,use为是否必须出现。
1.ref引用一个已经存在的对象,value创建一个新的对象
2.value可以赋一些简单类型的值,ref可以引用其他的bean对象。
applicationContext.xml
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
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.xsd">
<!-- 类ApplicationContext的方法getBean实际读取的是bean的名称name,读取字段class信息,创建实例。bean的字段id相
当于bean名称name的别名。当配置字段id时,name就和字段id一样,通过方法getBean读取字段id,获取字段class信息。当
没有配置字段id时,name默认就是字段class。方法getBean读取字段class信息,创建实例。
示例:方法com.itheima.test.ApplicationContextTest.test02。
name:qiao wei
date:2024-07-21
brief:标签bean的读取。
-->
<bean id="userService03"
class="com.itheima.service.impl.UserServiceImpl">
<!-- 属性property表示bean中的方法。
字段name绑定bean中的方法setUserDaoTest,注意字段name的值是“删除set的UserDaoTest”,格式为“userDao”。
第一个字符必须小写,其余不变。
字段ref绑定bean。值是bean的字段id值,即bean“com.itheima.dao.impl.UserDaoImpl”。
-->
<property name="userDaoTest"
ref="userDao">
</property>
<!-- 绑定方法setUserDao111。传入的参数是“com.itheima.dao.impl.UserDaoImpl”。 -->
<property name="userDao111"
ref="userDao">
</property>
</bean>
<!-- 字段name是bean的别名,功能类似字段id,别名可以同时配多个,别名间通过“,”分割。其余bean可以通过id、name获取该bean。
注意id的优先级高于name。
-->
<bean id="userDao"
name="aaa,bbb"
class="com.itheima.dao.impl.UserDaoImpl">
</bean>
</beans>
接口UserDao
package com.itheima.dao;
/**
* @copyright 2003-2024
* @author qiao wei
* @date 2024-07-16
* @version 1.0
* @brief
* @history name
* date
* brief
*/
public interface UserDao {
}
实现UserDao:
package com.itheima.dao.impl;
import com.itheima.dao.UserDao;
/**
* @copyright 2003-2024
* @author qiao wei
* @date 2024-07-18
* @version 1.0
* @brief 继承接口UserBean。
* @history name
* date
* brief
*/
public class UserDaoImpl implements UserDao {
public UserDaoImpl() {
System.out.println("实例化UserDaoImpl$$$$$$$$$$$$$$$$$$$$$$$$");
}
}
UserService:
package com.itheima.service.impl;
import com.itheima.dao.UserDao;
import com.itheima.service.UserService;
/**
* @copyright 2003-2024
* @author qiao wei
* @date 2024-07-09
* @version 1.0
* @brief
* @history name
* date
* brief
*/
public class UserServiceImpl implements UserService {
public UserServiceImpl() {
System.out.println("=============调用UserServiceImpl构造函数================");
}
/**
* @author qiao wei
* @brief 传入接口UserDao实例。该方法与xml中bean中的property的字段name绑定,绑定时去掉“set”,“UserDaoTest”首字
* 母“U”改成小写“u”。
* @param
* @return
* @throws
* @history name
* date
* brief
*/
public void setUserDaoTest(UserDao userDao) {
System.out.println("@@@@@@@@@@@@@@@@@@@@@@@@@调用方法setUserDaoTest");
System.out.println(userDao);
}
public void setUserDao111(UserDao userDao) {
System.out.println("调用方法setUserDao111>>>>>>>>>>>>>>>>>>>>>>>>>>");
System.out.println(userDao);
}
}
UserServiceImpl:
package com.itheima.service;
/**
* @copyright 2003-2024
* @author qiao wei
* @date 2024-07-05
* @version 1.0
* @brief
* @history name
* date
* brief
*/
public interface UserService {
}
测试代码:
package com.itheima.test;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
import com.itheima.dao.UserDao;
import com.itheima.dao.impl.UserDaoImpl;
import com.itheima.service.UserService;
/**
* @copyright 2003-2024
* @author qiao wei
* @date 2024-07-18
* @version 1.0
* @brief ApplicationContext在配置文件加载时,实例化bean。BeanFactory在首次调用方法getBean时实例化bean。
* @history name
* date
* brief
*/
public class ApplicationContextTest {
public static void main(String[] args) {
test02();
}
/**
* @author qiao wei
* @brief 删除xml文件中bean的字段id,bean的name默认为字段class值,spring通过直接读取字段class获取bean。
* @param
* @return
* @throws
* @history name
* date
* brief
*/
private static void test02() {
// ApplicationContext在配置文件加载时,实例化bean。
ApplicationContext applicationContext =
new ClassPathXmlApplicationContext("applicationContext.xml");
// 通过方法getBean获取UserService实例。
UserService userService =
(UserService) applicationContext.getBean("userService03");
// UserService userService =
// (UserService) applicationContext.getBean("com.itheima.service.impl.UserServiceImpl");
System.out.println(userService);
}
}
运行结果: