1,Bean的常用配置一览
2,Bean的全局id设置<bean id=“” class=“”>
2.1 在beans.xml中不设置id查看默认别名(UserService)
<?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">
<!-- 配置UserServiceImpl-->
<bean class="com.study.service.impl.UserServiceImpl">
<property name="userDao" ref="userDao"/>
</bean>
<!-- 配置UserDaoImpl-->
<bean id="userDao" class="com.study.dao.impl.UserDaoImpl"></bean>
</beans>
2.2 debug 查看默认别名
2.3 修改测试类
package com.study.demoTest;
import com.study.service.UserService;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
public class ApplicationContextDemo02 {
public static void main(String[] args) {
ApplicationContext applicationContext =
new ClassPathXmlApplicationContext("beans.xml");
UserService userService =(UserService)applicationContext.getBean("com.study.service.impl.UserServiceImpl");
System.out.println(userService);
}
}
3,通过name设置bean的别名 <bean name=“”>
3.1 修改 beans.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">
<!-- 配置UserServiceImpl-->
<bean id="userService" name="aaa,bbb" class="com.study.service.impl.UserServiceImpl">
<property name="userDao" ref="userDao"/>
</bean>
<!-- 配置UserDaoImpl-->
<bean id="userDao" class="com.study.dao.impl.UserDaoImpl"></bean>
</beans>
3.2 修改测试类
package com. study. demoTest ;
import com. study. service. UserService ;
import org. springframework. context. ApplicationContext ;
import org. springframework. context. support. ClassPathXmlApplicationContext ;
public class ApplicationContextDemo01 {
public static void main ( String [ ] args) {
ApplicationContext applicationContext = new ClassPathXmlApplicationContext ( "beans.xml" ) ;
UserService userService = ( UserService ) applicationContext. getBean ( "aaa" ) ;
System . out. println ( userService) ;
}
}
4,bean的作用范围 <bean scope=“”>
4.1 修改 beans.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">
<!-- 测试单例模式-->
<bean id="userService" class="com.study.service.impl.UserServiceImpl" scope="singleton">
<property name="userDao" ref="userDao"/>
</bean>
<!-- 测试原形模式-->
<bean id="userDao" class="com.study.dao.impl.UserDaoImpl" scope="prototype"></bean>
</beans>
4.2 applicationContext 测试类
package com.study.demoTest;
import com.study.dao.UserDao;
import com.study.service.UserService;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
public class ApplicationContextDemo02 {
public static void main(String[] args) {
ApplicationContext applicationContext =
new ClassPathXmlApplicationContext("beans.xml");
UserService userService01 =(UserService)applicationContext.getBean("userService");
UserService userService02 =(UserService)applicationContext.getBean("userService");
System.out.println("userService01 =>"+userService01);
System.out.println("userService02 =>"+userService02);
System.out.println(userService01 == userService02);
UserDao userDao01 =(UserDao)applicationContext.getBean("userDao");
UserDao userDao02 =(UserDao)applicationContext.getBean("userDao");
System.out.println("userDao01 =>"+userDao01);
System.out.println("userDao02 =>"+userDao02);
System.out.println(userDao01 == userDao02);
}
}
5,bean 的延迟加载
5.1 修改beans.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">
<!-- 测试单例模式-->
<bean id="userService" class="com.study.service.impl.UserServiceImpl" lazy-init="true">
<property name="userDao" ref="userDao"/>
</bean>
<!-- 测试原形模式-->
<bean id="userDao" class="com.study.dao.impl.UserDaoImpl" scope="prototype"></bean>
</beans>
5.2 修改 applicationContext 测试类
package com.study.demoTest;
import com.study.service.UserService;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
public class ApplicationContextDemo02 {
public static void main(String[] args) {
ApplicationContext applicationContext =
new ClassPathXmlApplicationContext("beans.xml");
UserService userService01 =(UserService)applicationContext.getBean("userService");
System.out.println(userService01);
}
}
6,bean初始化和销毁方法的配置 <bean init-method=“init” destroy-method=“destroy”>
6.1 修改 UserServiceImpl
package com.study.service.impl;
import com.study.dao.UserDao;
import com.study.service.UserService;
public class UserServiceImpl implements UserService {
private UserDao userDao;
//BeanFactory调用该方法,从容器中获得UserDao设置到此处
public void setUserDao(UserDao userDao){
System.out.println("beanfactory调用该方法获取到userDao:"+userDao);
this.userDao = userDao;
}
public void init (){
System.out.println("初始化方法");
}
public void destroy (){
System.out.println("销毁方法");
}
}
6.2 修改beans.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">
<!-- 测试bean初始化和销毁-->
<bean id="userService" class="com.study.service.impl.UserServiceImpl" init-method="init" destroy-method="destroy">
<property name="userDao" ref="userDao"/>
</bean>
<!-- 测试原形模式-->
<bean id="userDao" class="com.study.dao.impl.UserDaoImpl" scope="prototype"></bean>
</beans>
6.3 修改 applicationContext 测试类
package com.study.demoTest;
import com.study.service.UserService;
import org.springframework.context.support.ClassPathXmlApplicationContext;
public class ApplicationContextDemo02 {
public static void main(String[] args) {
ClassPathXmlApplicationContext applicationContext =
new ClassPathXmlApplicationContext("beans.xml");
UserService userService01 =(UserService)applicationContext.getBean("userService");
System.out.println(userService01);
//关闭容器
applicationContext.close();
}
}
7,扩展 InitializingBean 接口
7.1 修改 UserServiceImpl
package com.study.service.impl;
import com.study.dao.UserDao;
import com.study.service.UserService;
import javafx.fxml.Initializable;
import org.springframework.beans.factory.InitializingBean;
public class UserServiceImpl implements UserService, InitializingBean {
private UserDao userDao;
//BeanFactory调用该方法,从容器中获得UserDao设置到此处
public void setUserDao(UserDao userDao){
System.out.println("beanfactory调用该方法获取到userDao:"+userDao);
this.userDao = userDao;
}
public void init (){
System.out.println("初始化方法");
}
public void destroy (){
System.out.println("销毁方法");
}
//执行时间早与 init
public void afterPropertiesSet() throws Exception {
System.out.println("afterPropertiesSet");
}
}
8,spring实例化配置
8.1 构造方法实例化
8.1.1 修改 UserServiceImpl
package com.study.service.impl;
import com.study.dao.UserDao;
import com.study.service.UserService;
public class UserServiceImpl implements UserService {
public UserServiceImpl() {
System.out.println("无参构造方法执行");
}
public UserServiceImpl(String username,String age) {
System.out.println("有参构造方法执行 username :"+ username);
System.out.println("有参构造方法执行 age :"+ age);
}
public void setUserDao(UserDao userDao){
System.out.println("beanfactory调用该方法获取到userDao:"+userDao);
}
}
8.1.2 修改 beans.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">
<!-- 测试有参构造实例化-->
<bean id="userService" class="com.study.service.impl.UserServiceImpl">
<constructor-arg name="username" value="李乃龙"/>
<constructor-arg name="age" value="26"/>
<property name="userDao" ref="userDao"/>
</bean>
<!-- 测试原形模式-->
<bean id="userDao" class="com.study.dao.impl.UserDaoImpl" scope="prototype"></bean>
</beans>
8.1.3 修改 applicationContext 测试类
package com.study.demoTest;
import com.study.service.UserService;
import org.springframework.context.support.ClassPathXmlApplicationContext;
public class ApplicationContextDemo02 {
public static void main(String[] args) {
ClassPathXmlApplicationContext applicationContext =
new ClassPathXmlApplicationContext("beans.xml");
UserService userService01 =(UserService)applicationContext.getBean("userService");
System.out.println(userService01);
//关闭容器
applicationContext.close();
}
}
8.2 工厂方式实例化bean
8.2.1 静态工厂方式实例化bean
8.2.1.1 创建静态工厂类
package com.study.factory;
import com.study.dao.UserDao;
import com.study.dao.impl.UserDaoImpl;
//创建静态工厂
public class MyBeanFactory1 {
public static UserDao userDao(){
return new UserDaoImpl();
}
}
8.2.1.2 修改beans.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">
<!--
测试静态工厂实例化bean
factory-method指定一个类中的一个方法的返回值保存到bean容器中
-->
<bean id="userDao2" class="com.study.factory.MyBeanFactory1" factory-method="userDao"></bean>
</beans>
8.2.1.3 创建 ApplicationContextDemo03 测试类
package com.study.demoTest;
import com.study.dao.UserDao;
import org.springframework.context.support.ClassPathXmlApplicationContext;
public class ApplicationContextDemo03 {
public static void main(String[] args) {
ClassPathXmlApplicationContext applicationContext =
new ClassPathXmlApplicationContext("beans.xml");
UserDao userDao =(UserDao)applicationContext.getBean("userDao2");
System.out.println(userDao);
}
}
8.2.2 实例工厂方式实例化bean
8.2.2.1 创建实例化工厂 MyBeanFactory2
package com.study.factory;
import com.study.dao.UserDao;
import com.study.dao.impl.UserDaoImpl;
//创建实例化工厂
public class MyBeanFactory2 {
public UserDao userDao(){
//可以进行其他业务逻辑操作
return new UserDaoImpl();
}
}
8.2.2.2 修改beans.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">
<!--实例化工厂演示-->
<bean id="userDao1" factory-bean="myBeanFactory2" factory-method="userDao"/>
<bean id="myBeanFactory2" class="com.study.factory.MyBeanFactory2"></bean>
<bean id="userDao2" class="com.study.factory.MyBeanFactory1" factory-method="userDao"></bean>
</beans>
8.2.2.3 修改ApplicationContextDemo03 测试类
package com.study.demoTest;
import com.study.dao.UserDao;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
public class ApplicationContextDemo03 {
public static void main(String[] args) {
ApplicationContext applicationContext =
new ClassPathXmlApplicationContext("beans.xml");
UserDao userDao =(UserDao)applicationContext.getBean("userDao1");
System.out.println(userDao);
}
}
8.2.3 有参数的静态工厂和非静态工厂的实例化
8.2.3.1,修改 MyBeanFactory1
package com.study.factory;
import com.study.dao.UserDao;
import com.study.dao.impl.UserDaoImpl;
//创建静态工厂
public class MyBeanFactory1 {
public static UserDao userDao(String username,String age){
System.out.println("MyBeanFactory1 username :"+ username);
System.out.println("MyBeanFactory1 age :"+ age);
//可以进行其他业务逻辑操作
return new UserDaoImpl();
}
}
8.2.3.2,修改 MyBeanFactory2
package com.study.factory;
import com.study.dao.UserDao;
import com.study.dao.impl.UserDaoImpl;
//创建实例化工厂
public class MyBeanFactory2 {
public UserDao userDao(String username,String age){
System.out.println("MyBeanFactory2 username :"+ username);
System.out.println("MyBeanFactory2 age :"+ age);
//可以进行其他业务逻辑操作
return new UserDaoImpl();
}
}
8.2.3.3,修改 beans.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">
<!--实例化工厂演示-->
<bean id="userDao1" factory-bean="myBeanFactory2" factory-method="userDao">
<constructor-arg name="username" value="李乃龙"/>
<constructor-arg name="age" value="26"/>
</bean>
<bean id="myBeanFactory2" class="com.study.factory.MyBeanFactory2"></bean>
<bean id="userDao2" class="com.study.factory.MyBeanFactory1"
factory-method="userDao">
<constructor-arg name="username" value="李乃龙"/>
<constructor-arg name="age" value="26"/>
</bean>
</beans>
8.2.3.4 修改ApplicationContextDemo03 测试类
package com.study.demoTest;
import com.study.dao.UserDao;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
public class ApplicationContextDemo03 {
public static void main(String[] args) {
ApplicationContext applicationContext =
new ClassPathXmlApplicationContext("beans.xml");
UserDao userDao2 =(UserDao)applicationContext.getBean("userDao2");
UserDao userDao1 =(UserDao)applicationContext.getBean("userDao1");
}
}
8.2.4 FactoryBean创建bean
8.2.4.1 创建 MyBeanFactory3
package com.study.factory;
import com.study.dao.UserDao;
import com.study.dao.impl.UserDaoImpl;
import org.springframework.beans.factory.FactoryBean;
public class MyBeanFactory3 implements FactoryBean<UserDao> {
public UserDao getObject() throws Exception {
return new UserDaoImpl();
}
public Class<?> getObjectType() {
return UserDao.class;
}
}
8.2.4.2 修改 beans.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">
<!--FactoryBean演示-->
<bean id="myBeanFactory3" class="com.study.factory.MyBeanFactory3"></bean>
<bean id="userDao1" factory-bean="myBeanFactory2" factory-method="userDao">
<constructor-arg name="username" value="李乃龙"/>
<constructor-arg name="age" value="26"/>
</bean>
<bean id="myBeanFactory2" class="com.study.factory.MyBeanFactory2"></bean>
<bean id="userDao2" class="com.study.factory.MyBeanFactory1"
factory-method="userDao">
<constructor-arg name="username" value="李乃龙"/>
<constructor-arg name="age" value="26"/>
</bean>
</beans>
8.2.4.3 修改ApplicationContextDemo03 测试类
package com.study.demoTest;
import com.study.dao.UserDao;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
public class ApplicationContextDemo03 {
public static void main(String[] args) {
ApplicationContext applicationContext =
new ClassPathXmlApplicationContext("beans.xml");
UserDao userDao2 =(UserDao)applicationContext.getBean("myBeanFactory3");
System.out.println(userDao2);
}
}
9,Bean的依赖注入配置
9.1 注入list类型数据
9.1.1,修改 UserService
package com.study.service;
public interface UserService {
public void show();
public void showUserDaoList();
}
9.1.2,修改 UserServiceImpl
package com.study.service.impl;
import com.study.dao.UserDao;
import com.study.service.UserService;
import java.util.List;
public class UserServiceImpl implements UserService {
//注入list
private List<String> stringList;
private List<UserDao> userDaoList;
public UserServiceImpl() {
System.out.println("无参构造方法执行");
}
public UserServiceImpl(String username,String age) {
System.out.println("有参构造方法执行 username :"+ username);
System.out.println("有参构造方法执行 age :"+ age);
}
public void setStringList(List<String> stringList) {
this.stringList = stringList;
}
public void setUserDao(UserDao userDao){
System.out.println("beanfactory调用该方法获取到userDao:"+userDao);
}
public void show(){
System.out.println(stringList.toString());
}
public void showUserDaoList() {
System.out.println(userDaoList.toString());
}
public void setUserDaoList(List<UserDao> userDaoList) {
this.userDaoList = userDaoList;
}
}
9.1.3,修改beans.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">
<!--注入list演示-->
<bean id="userService" class="com.study.service.impl.UserServiceImpl">
<property name="stringList">
<list>
<value>aaa</value>
<value>bbb</value>
<value>ccc</value>
</list>
</property>
<property name="userDaoList">
<list>
<ref bean="userDao1"></ref>
<ref bean="userDao1"></ref>
<ref bean="userDao1"></ref>
</list>
</property>
</bean>
<bean id="myBeanFactory3" class="com.study.factory.MyBeanFactory3"></bean>
<bean id="userDao1" factory-bean="myBeanFactory2" factory-method="userDao">
<constructor-arg name="username" value="李乃龙"/>
<constructor-arg name="age" value="26"/>
</bean>
<bean id="myBeanFactory2" class="com.study.factory.MyBeanFactory2"></bean>
<bean id="userDao2" class="com.study.factory.MyBeanFactory1"
factory-method="userDao">
<constructor-arg name="username" value="李乃龙"/>
<constructor-arg name="age" value="26"/>
</bean>
</beans>
9.1.4,新建ApplicationContextDemo04 测试类
package com.study.demoTest;
import com.study.dao.UserDao;
import com.study.service.UserService;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
public class ApplicationContextDemo04 {
public static void main(String[] args) {
ApplicationContext applicationContext =
new ClassPathXmlApplicationContext("beans.xml");
UserService userService =(UserService)applicationContext.getBean("userService");
userService.show();
userService.showUserDaoList();
}
}
9.2 注入set类型数据
9.2.1,修改 UserService
package com.study.service;
public interface UserService {
public void show();
public void showUserDaoList();
public void showSet();
}
9.2.2,修改 UserServiceImpl
package com.study.service.impl;
import com.study.dao.UserDao;
import com.study.service.UserService;
import java.util.List;
import java.util.Set;
public class UserServiceImpl implements UserService {
//注入list
private List<String> stringList;
private List<UserDao> userDaoList;
private Set<String> strSet;
private Set<UserDao> UserDaoSet;
public UserServiceImpl() {
System.out.println("无参构造方法执行");
}
public UserServiceImpl(String username,String age) {
System.out.println("有参构造方法执行 username :"+ username);
System.out.println("有参构造方法执行 age :"+ age);
}
public void setStringList(List<String> stringList) {
this.stringList = stringList;
}
public void setUserDao(UserDao userDao){
System.out.println("beanfactory调用该方法获取到userDao:"+userDao);
}
public void show(){
System.out.println(stringList.toString());
}
public void showUserDaoList() {
System.out.println(userDaoList.toString());
}
public void showSet() {
System.out.println(strSet.toString());
System.out.println(UserDaoSet.toString());
}
public void setUserDaoList(List<UserDao> userDaoList) {
this.userDaoList = userDaoList;
}
public void setStrSet(Set<String> strSet) {
this.strSet = strSet;
}
public void setUserDaoSet(Set<UserDao> userDaoSet) {
UserDaoSet = userDaoSet;
}
}
9.2.3,修改 beans.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">
<!--注入list演示-->
<bean id="userService" class="com.study.service.impl.UserServiceImpl">
<property name="stringList">
<list>
<value>aaa</value>
<value>bbb</value>
<value>ccc</value>
</list>
</property>
<property name="userDaoList">
<list>
<ref bean="userDao1"></ref>
<ref bean="userDao1"></ref>
<ref bean="userDao1"></ref>
</list>
</property>
<property name="strSet">
<set>
<value>aaa</value>
<value>aaa</value>
<value>bbb</value>
</set>
</property>
<property name="userDaoSet">
<set>
<ref bean="userDao1"></ref>
<ref bean="userDao1"></ref>
<ref bean="userDao1"></ref>
</set>
</property>
</bean>
<bean id="myBeanFactory3" class="com.study.factory.MyBeanFactory3"></bean>
<bean id="userDao1" factory-bean="myBeanFactory2" factory-method="userDao">
<constructor-arg name="username" value="李乃龙"/>
<constructor-arg name="age" value="26"/>
</bean>
<bean id="myBeanFactory2" class="com.study.factory.MyBeanFactory2"></bean>
<bean id="userDao2" class="com.study.factory.MyBeanFactory1"
factory-method="userDao">
<constructor-arg name="username" value="李乃龙"/>
<constructor-arg name="age" value="26"/>
</bean>
</beans>
9.2.4,修改 ApplicationContextDemo04 测试类
package com.study.demoTest;
import com.study.dao.UserDao;
import com.study.service.UserService;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
public class ApplicationContextDemo04 {
public static void main(String[] args) {
ApplicationContext applicationContext =
new ClassPathXmlApplicationContext("beans.xml");
UserService userService =(UserService)applicationContext.getBean("userService");
userService.show();
userService.showUserDaoList();
userService.showSet();
}
}
9.3 注入map类型数据
9.3.1 修改 UserService
package com.study.service;
public interface UserService {
public void show();
public void showUserDaoList();
public void showSet();
public void showMap();
}
9.3.2 修改 UserServiceImpl
package com.study.service.impl;
import com.study.dao.UserDao;
import com.study.service.UserService;
import java.util.List;
import java.util.Map;
import java.util.Set;
public class UserServiceImpl implements UserService {
//注入list
private List<String> stringList;
private List<UserDao> userDaoList;
private Set<String> strSet;
private Set<UserDao> UserDaoSet;
private Map<String,String> strMap;
private Map<String,UserDao> UserDaoMap;
public UserServiceImpl() {
System.out.println("无参构造方法执行");
}
public UserServiceImpl(String username,String age) {
System.out.println("有参构造方法执行 username :"+ username);
System.out.println("有参构造方法执行 age :"+ age);
}
public void setStringList(List<String> stringList) {
this.stringList = stringList;
}
public void setUserDao(UserDao userDao){
System.out.println("beanfactory调用该方法获取到userDao:"+userDao);
}
public void show(){
System.out.println(stringList.toString());
}
public void showUserDaoList() {
System.out.println(userDaoList.toString());
}
public void showSet() {
System.out.println(strSet.toString());
System.out.println(UserDaoSet.toString());
}
public void showMap() {
System.out.println(strMap.toString());
System.out.println(UserDaoMap.toString());
}
public void setStrMap(Map<String, String> strMap) {
this.strMap = strMap;
}
public void setUserDaoMap(Map<String, UserDao> userDaoMap) {
UserDaoMap = userDaoMap;
}
public void setUserDaoList(List<UserDao> userDaoList) {
this.userDaoList = userDaoList;
}
public void setStrSet(Set<String> strSet) {
this.strSet = strSet;
}
public void setUserDaoSet(Set<UserDao> userDaoSet) {
UserDaoSet = userDaoSet;
}
}
9.3.3 修改 beans.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">
<!--注入list演示-->
<bean id="userService" class="com.study.service.impl.UserServiceImpl">
<property name="stringList">
<list>
<value>aaa</value>
<value>bbb</value>
<value>ccc</value>
</list>
</property>
<property name="userDaoList">
<list>
<ref bean="userDao1"></ref>
<ref bean="userDao1"></ref>
<ref bean="userDao1"></ref>
</list>
</property>
<property name="strSet">
<set>
<value>aaa</value>
<value>aaa</value>
<value>bbb</value>
</set>
</property>
<property name="userDaoSet">
<set>
<ref bean="userDao1"></ref>
<ref bean="userDao1"></ref>
<ref bean="userDao1"></ref>
</set>
</property>
<property name="strMap">
<map>
<entry key="d1" value="userDao01"/>
<entry key="d1" value="userDao01"/>
<entry key="d2" value="userDao02"/>
<entry key="d3" value="userDao03"/>
</map>
</property>
<property name="userDaoMap">
<map>
<entry key="d1" value-ref="userDao1"/>
<entry key="d1" value-ref="userDao1"/>
<entry key="d2" value-ref="userDao1"/>
<entry key="d3" value-ref="userDao1"/>
</map>
</property>
</bean>
<bean id="myBeanFactory3" class="com.study.factory.MyBeanFactory3"></bean>
<bean id="userDao1" factory-bean="myBeanFactory2" factory-method="userDao">
<constructor-arg name="username" value="李乃龙"/>
<constructor-arg name="age" value="26"/>
</bean>
<bean id="myBeanFactory2" class="com.study.factory.MyBeanFactory2"></bean>
<bean id="userDao2" class="com.study.factory.MyBeanFactory1"
factory-method="userDao">
<constructor-arg name="username" value="李乃龙"/>
<constructor-arg name="age" value="26"/>
</bean>
</beans>
9.3.4 修改 ApplicationContextDemo04 测试类
package com.study.demoTest;
import com.study.dao.UserDao;
import com.study.service.UserService;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
public class ApplicationContextDemo04 {
public static void main(String[] args) {
ApplicationContext applicationContext =
new ClassPathXmlApplicationContext("beans.xml");
UserService userService =(UserService)applicationContext.getBean("userService");
userService.showMap();
}
}