Spring4-配置Bean的各种方法
作者:互联网
Spring
通过全类名来配置bean
-
xml文件中
-
<!-- 通过全类名来配置bean class:bean的全类名,通过反射的方式在IOC容器中创建Bean,所以要求Bean中必须要有无参的构造器 id:标识容器中的bean.id 唯一 --> <bean id="helloWorld" class="com.atguigu.spring.beans.HelloWorld"><!-- 此处的class是全类名 --> <property name="name2" value="Spring"></property> <!-- property是为HelloWorld这个类中的一个私有属性赋值 --> </bean> <!-- name就填私有属性的set方法名称 value里面就是赋的值 -->
-
-
HelloWorld类
通过构造方法来配置bean
- xml文件中
-
<!-- 通过构造方法来配置bean属性 --> <bean id="car" class="com.atguigu.spring.beans.Car"> <constructor-arg value="Audi" index="0"></constructor-arg> <constructor-arg value="ShangHai" index="1"></constructor-arg> <constructor-arg value="300000" type="double"></constructor-arg> </bean> <!--使用构造器注入属性值可以指定参数的位置和参数的类型! 以区分重载的构造器! --> <bean id="car2" class="com.atguigu.spring.beans.Car"> <constructor-arg value="Baoma" type="java.lang.String"></constructor-arg> <!--如果字面值包含特殊字符可以使用<![DTACA[]]> 包裹起来 --> <!-- 属性值也可以使用value直接进行配置 --> <constructor-arg type="java.lang.String"> <value><![CDATA[shangHai]]></value> </constructor-arg> <constructor-arg type="int"> <value>250</value> </constructor-arg> </bean>
-
- Car类
建立bean之间的联系
- xml文件中
-
<bean id="person" class="com.atguigu.spring.beans.Person"> <property name="name" value="Tom"></property> <property name="age" value="24"></property> <!--可以使用property的ref属性建立bean之间的引用关系 --> <!-- 第一种方法<property name="car" ref="car2"></property> 第二种方法<property name="car"> <ref bean="car2"></ref> </property> --> <!-- 内部bean 注意内部bean不能被在外部用ref来引用--> <property name="car"> <bean id="car3" class="com.atguigu.spring.beans.Car"> <constructor-arg value="Ford"></constructor-arg> <constructor-arg value="Changan"></constructor-arg> <constructor-arg value="200000" type="double"></constructor-arg> </bean> </property> </bean> <bean id="person2" class="com.atguigu.spring.beans.Person"> <constructor-arg value="Jerry"></constructor-arg> <constructor-arg value="25"></constructor-arg> <!-- <constructor-arg ref="car"></constructor-arg>--> <!-- 测试赋值null <null/> --> <!-- <constructor-arg><null/></constructor-arg>--> <constructor-arg ref="car"></constructor-arg><!-- 属性初始化 --> <!-- 为级联属性赋值 注意:属性需要先初始化后才可以为级联属性赋值,否则会有异常,和Struts2不同--> <property name="car.maxSpeed" value="250"></property> </bean>
-
- Person类
配置集合(List)属性和(Map)集合属性
-
xml文件中
-
<bean id="person3" class="com.atguigu.spring.beans.collections.Person"> <property name="name" value="Mike"></property> <property name="age" value="27" ></property> <property name="cars"> <!-- 使用list节点为List类型的属性赋值 --> <list> <ref bean="car"/> <ref bean="car2"/> <bean class="com.atguigu.spring.beans.Car"> <constructor-arg value="Ford"></constructor-arg> <constructor-arg value="Changan"></constructor-arg> <constructor-arg value="200000" type="double"></constructor-arg> </bean> </list> </property> </bean> <!-- 测试配置Map集合属性值 --> <bean id="newPerson" class="com.atguigu.spring.beans.collections.NewPerson"> <property name="name" value="Rose"></property> <property name="age" value="28"></property> <property name="cars"> <!-- 使用map节点及map的entry子节点配置Map类型的成员变量 --> <map> <entry key="AA" value-ref="car"></entry> <entry key="BB" value-ref="car2"></entry> </map> </property> </bean>
-
配置properties属性值
- xml文件中
-
<bean id="dataSource" class="com.atguigu.spring.beans.collections.DataSource"> <property name="properties"> <!-- 使用props和prop子节点为Properties属性赋值 --> <props> <prop key="user">root</prop> <prop key="password">1234</prop> <prop key="jdbcUrl">jdbc:mysql://test</prop> <prop key="driverClass">com.mysql.jdbc.Driver</prop> </props> </property> </bean>
-
- properties文件中
user:root
password=1234
driverclass=com.mysql.jdbc.Driver
jdbcurl=jdbc:mysql:///test
配置单例的bean
-
xml文件中
-
<!-- 配置单例的集合bean,以供多个bean进行引用,需要导入util命名空间 --> <util:list id="cars"> <ref bean="car"/> <ref bean="car2"/> </util:list>` <!-- 单例的bean可以被多个bean进行引用 --> <bean id="person4" class="com.atguigu.spring.beans.collections.Person"> <property name="name" value="jack"></property> <property name="age" value="29"></property> <property name="cars" ref="cars"></property> <!-- 引用单例的bean --> </bean>
-
通过p命名空间为bean属性赋值
-
xml文件中
-
<!-- 通过p命名空间为bean的属性赋值,需要先导入p命名空间,相对于传统的配置方式更加简洁 --> <bean id="person5" class="com.atguigu.spring.beans.collections.Person" p:age="30" p:name="Queen" p:cars-ref="cars" > </bean>
-
通过静态工厂方法来配置bean
-
xml文件中
-
- <!-- 通过静态工厂方法来配置bean,注意不是配置静态工厂方法实例,而是配置bean实例 --> <!-- class属性:指向静态工厂方法的全类名 factory-method:指向静态工厂方法的名字 constructor-arg:如果工厂需要传入参数,则使用constructor-arg来配置参数 --> <bean id="car1" class="com.atguigu.spring.beans.factory.StaticCarFactory" factory-method="getCar"> <constructor-arg value="audi"></constructor-arg> </bean> - <!-- 配置工厂的实例 --> <bean id="carFactory" class="com.atguigu.spring.beans.factory.InstanceCarFactory"></bean> - <!-- 通过实例工厂方法来配置bean --> <!-- factory-bean属性:指向实例工厂方法的bean factory-method:指向静态工厂方法的名字 constructor-arg:如果工厂需要传入参数,则使用constructor-arg来配置参数 --> <bean id="car2" factory-bean="carFactory" factory-method="getCar"> <constructor-arg value="ford"></constructor-arg> </bean>
-
-
InstanceCarFactory类
-
StaticCarFactory类
-
Car类
标签:xml,文件,jdbc,配置,bean,Bean,mysql,Spring4 来源: https://blog.csdn.net/Aqours/article/details/100833999