Spring各种bean配置

本文深入解析Spring框架中依赖注入的多种方式,包括构造函数注入、setter注入、静态工厂注入及普通工厂注入。同时,详细介绍了如何使用Spring创建复杂的Bean实例,如自定义类、List、Map、Properties类型的Bean,以及如何利用Spring配置文件创建数据库连接池。

通过构造函数:

	<bean id="person" class="com.gang.Person">
		<constructor-arg name="name" value="张珊"></constructor-arg>
		<constructor-arg name="age" value="20"></constructor-arg>
		<constructor-arg name="bookes">
			<bean class="com.gang.Book">
				<property name="bookName" value="西游记"></property>
				<property name="author" value="雷锋"></property>
			</bean>
		</constructor-arg>
	</bean>

默认使用无参构造函数,使用该方法,要确定要创建的类中有对应参数的构造函数,简单类型(基础类的包装类和String类)可以直接通过value赋值,复杂类型(自己定义的类,List,Map,Properties)在<constructor></constructor>标签中赋值

通过类中的setter方法赋值:

<?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="person" class="com.gang.Person">
		<constructor-arg name="name" value="张珊"></constructor-arg>
		<constructor-arg name="age" value="20"></constructor-arg>
		<constructor-arg name="bookes">
			<bean class="com.gang.Book">
				<property name="bookName" value="西游记"></property>
				<property name="author" value="雷锋"></property>
			</bean>
		</constructor-arg>
	</bean>

	<bean id="person2" class="com.gang.Person">
		<!--List数组 -->
		<property name="books">
			<list>
				<bean class="com.gang.Book">
					<property name="bookName" value="好好学习"></property>
					<property name="author" value="毛泽东"></property>
				</bean>
				<ref bean="book1" />
			</list>
		</property>
		
        <!--自定义类 -->
		<property name="car">
			<bean class="com.gang.Car">
				<property name="name" value="奔驰"></property>
			</bean>
		</property>
		
		<!--Map类型 -->
		<property name="maps">
			<map>
				<entry key="key1" value="map中第一对key-value"></entry>
				<entry key="key2">
					<list value-type="java.lang.String">
						<value>hello</value>
						<value>world</value>
					</list>
				</entry>
				<entry key="key3" >
					<ref bean="book1"/>
				</entry>
			</map>
		</property>
		
   		<!-- properties类型 -->
		<property name="pp">
			<props>
				<prop key="username">root</prop>
				<prop key="paword">123456</prop>
				<prop key="url">jdbc:mysql:3306/test</prop>
			</props>
		</property>
	</bean>
	<bean id="book1" class="com.gang.Book">
		<property name="bookName" value="红楼梦"></property>
		<property name="author" value="曹雪芹"></property>
	</bean>
	
   <!-- 通过静态工厂创建类  -->
	<bean id="airplane" class="com.gang.factory.AirplaneStaticFactory" factory-method="getAirplane">
		<constructor-arg name="own" value="李四"></constructor-arg>
	</bean>
	<bean id="airplane2" class="com.gang.factory.AirplaneStaticFactory" factory-method="getAirplane">
		<constructor-arg name="own" value="张珊"></constructor-arg>
	</bean>
	
	<!-- 通过普通工厂创建类 -->
	<bean id="airplane3" class="com.gang.Airplane" factory-bean="airplanefactory" factory-method="getAirplane">
		<constructor-arg name="own" value="张三"></constructor-arg>
	</bean>
	
	<bean id="airplanefactory" class="com.gang.factory.AirplaneFactory"></bean>
</beans>

简单类型也是直接可以使用<property>内的value 也可在<property></property>中使用<value></value>进行赋值

使用自定义静态工厂和非静态工厂创建类:
使用场景:当需要创建的类,很多属性都相似,只有少数属性不同

 <!-- 通过静态工厂创建类  -->
	<bean id="airplane" class="com.gang.factory.AirplaneStaticFactory" factory-method="getAirplane">
		<constructor-arg name="own" value="李四"></constructor-arg>
	</bean>
	<bean id="airplane2" class="com.gang.factory.AirplaneStaticFactory" factory-method="getAirplane">
		<constructor-arg name="own" value="张珊"></constructor-arg>
	</bean>
	
	<!-- 通过普通工厂创建类 -->
	<bean id="airplane3" class="com.gang.Airplane" factory-bean="airplanefactory" factory-method="getAirplane">
		<constructor-arg name="own" value="张三"></constructor-arg>
	</bean>
	
	<bean id="airplanefactory" class="com.gang.factory.AirplaneFactory"></bean>

使用Spring 创建连接池对象
1.导入mysql 和c3po架包
2.配置连接池对象
3.测试是否拿到连接

<!--创建c3p0连接池对象 -->
    <bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource">
		<property name="user" value="root"></property>
		<property name="password" value="123456"></property>
		<property name="jdbcUrl" value="jdbc:mysql://localhost:3306/test"></property>
		<property name="driverClass" value="com.mysql.jdbc.Driver"></property>
    </bean>
@Test
	public void test2() throws Exception{
		//获取数据库连接测试
		DataSource dataSource = ac.getBean(DataSource.class);
		Connection conn=dataSource.getConnection();
		System.out.println(conn);
	}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值