Spring使用xml配置bean,主要是constructor-arg

Spring4 专栏收录该内容
19 篇文章 0 订阅

内容来自于马士兵老师的Spring视频

Spring开发环境传送门:http://blog.csdn.net/u010513756/article/details/49679605

<?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 name="u" class="com.xiao.dao.impl.UserDAOImpl">
        <!-- collaborators and configuration for this bean go here -->
    </bean>

	<!-- scoppe="prototype"每次获取到的bean都是新的  -->
    <bean id="userService" class="com.xiao.service.UserService" scope="prototype">
        <!-- collaborators and configuration for this bean go here -->
       <!-- <property name="userDAO" ref="u"/> -->
       <constructor-arg>
        	<!-- 参考以前初始化的bean -->
        	<ref bean="u"/>
        </constructor-arg> 
        
    </bean>

    <!-- more bean definitions go here -->

</beans>
以上xml设置意思是:创建一个名叫u的bean,他的class是UserDAOImpl,之后再创建一个bean叫做userService,它指向的class是UserService,通过使用scope="prototype"来设置每次创建的bean都是新的,如果不这样设置的话每次获得的bean可能还是原来的那个,这一点可以通过

		UserService service = (UserService)applicationContext.getBean("userService");
		UserService service2 = (UserService)applicationContext.getBean("userService");
		System.out.println(service == service2);
来进行判断

在UserService这个类中有这个方法

	private UserDAO userDAO;
	
	public UserService(UserDAO userDAO) {
		super();
		this.userDAO = userDAO;
	}
那么就可以通过<constructor-arg>的方式将前面设置的名叫u的bean“注入”到userService这个bean中(这个貌似就叫做依赖注入吧,我猜的),不明白这里为什么可以不设置type就可以找到UserService类中的UserService方法了,我猜是名叫u的bean中以及可以通过它找到class,也就可以找到type了所以不需要type设置,我这里设置了反而出现错误了。如果是常规比如说String的参数,就像这样

	public UserService(String str) {
		super();
		System.out.println(str);
	}

那么我在bean.xml中的设置就可以这样

        <constructor-arg type="java.lang.String">
        	<value>Slience</value>
        </constructor-arg>



  • 0
    点赞
  • 0
    评论
  • 3
    收藏
  • 一键三连
    一键三连
  • 扫一扫,分享海报

相关推荐
©️2020 CSDN 皮肤主题: 黑客帝国 设计师:白松林 返回首页
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、C币套餐、付费专栏及课程。

余额充值