Spring各种bean配置

mac2024-10-10  46

通过构造函数:

<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); }
最新回复(0)