3、Spring4之Bean 配置的细节

it2025-07-08  8

1). 若字面值中包括特殊字符,则能够使用 value 节点的 <![CDATA[]]> 把字面值包裹起来。     <constructor-arg>          <!-- 若 value 属性值中包括特殊字符串, 则能够使用 value 子节点来注入属性值. value 子节点中能够使用 CDATA -->          <value><![CDATA[Zheng <><> zhou]]></value>     </constructor-arg>2). 在 Bean 的配置文件里, 能够通过 <ref> 元素或 ref  属性为 Bean 的属性或构造器參数指定对 Bean 的引用.     <bean id="dao" class="com.atguigu.spring.ioc.ref.Dao">          <property name="database" value="DB2"></property>     </bean>     <bean id="service2" class="com.atguigu.spring.ioc.ref.Service">          <property name="dao" ref="dao"></property>     </bean>     ------------------------------------------------------------------------------     解析:<property name="dao" ref="dao"></property> 的作用为:          Dao dao = (Dao)ctx.getBean("dao");          Service service = (Service)ctx.getBean("service2");          service.setDao(dao);3). 能够在属性或构造器里包括 Bean 的声明, 这种 Bean 称为内部 Bean     <bean class="com.atguigu.spring.ioc.ref.Service" id="service">          <property name="dao">               <bean class="com.atguigu.spring.ioc.ref.Dao">                     <property name="database" value="MySQL"></property>                </bean>          </property>     </bean>     解释:类似于下面代码,但 dao 的这个 bean 事实上是没有 id 的,也不能被其它的 bean 来引用。也不能单独从 IOC 容器中获取。          <bean class="com.atguigu.spring.ioc.ref.Dao" id="dao">               <property name="database" value="MySQL"></property>          </bean>          <bean class="com.atguigu.spring.ioc.ref.Service" id="service">               <property name="dao" ref="dao"></property>          </bean>                   ①. 当 Bean 实例只给一个特定的属性使用时, 能够将其声明为内部 Bean.                内部 Bean 声明直接包括在 <property> 或 <constructor-arg> 元素里, 不须要设置不论什么 id 或 name 属性          ②. 内部 Bean 不能使用在不论什么其它地方4). 能够使用专用的 <null/> 元素标签为 Bean 的字符串或其他对象类型的属性注入 null 值     <bean id="car6" class="com.atguigu.spring.ioc.Car">          <!-- 为 maxSpeed 赋值为 null, 而 value="null" 是把 null 这个字符串赋给了相应的属性 -->          <property name="corp"><null/></property>     </bean>5). Spring 支持级联属性的配置。     <bean id="action3" class="com.atguigu.spring.ioc.ref.Action">          <property name="service" ref="service2"></property>           <!-- 为 service 的 dao 的 database 赋值为 ORACLE -->           <property name="service.dao.database" value="ORACLE"></property>      </bean> 6). 配置 java.util.List 类型的属性, 须要指定 <list>  标签, 在标签里包括一些元素.      这些标签能够通过 <value> 指定简单的常量值, 通过 <ref> 指定对其它 Bean 的引用.      通过<bean> 指定内置 Bean 定义.      通过 <null/> 指定空元素. 甚至能够内嵌其它集合.      <property name="cars">           <!-- 通过 list 指定集合属性的值. 但 list 是一个内部 list, 不能被其它的 bean 引用.  -->           <list>                <!-- ref 直接指向已有的 bean -->                <ref bean="car"/>                <ref bean="car2"/>                <ref bean="car3"/>                <!-- bean 声明内部 bean -->                <bean class="com.atguigu.spring.ioc.Car">                     <property name="brand" value="BMW"></property>                     <property name="corp" value="HuaChen"></property>                     <property name="maxSpeed" value="300"></property>                     <property name="price" value="800000"></property>                </bean>           </list>      </property> 7).  能够使用 util schema 里的集合标签定义独立的集合 Bean. 须要注意的是, 必须在 <beans> 根元素里加入 util schema 定义 ①. 导入 util 命名空间 <beans xmlns="http://www.springframework.org/schema/beans"      xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"      xmlns:util="http://www.springframework.org/schema/util"      xmlns:p="http://www.springframework.org/schema/p"      xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd           http://www.springframework.org/schema/util http://www.springframework.org/schema/util/spring-util-4.0.xsd"> ②. 定义集合 Bean      <util:list id="cars">           <!-- ref 直接指向已有的 bean -->           <ref bean="car"/>           <ref bean="car2"/>           <ref bean="car3"/>           <!-- bean 声明内部 bean -->           <bean class="com.atguigu.spring.ioc.Car">                <property name="brand" value="BMW"></property>                <property name="corp" value="HuaChen"></property>                <property name="maxSpeed" value="300"></property>                <property name="price" value="800000"></property>           </bean>      </util:list> 8). 配置 Map Bean      <util:map id="config">           <entry key="user" value="root"></entry>           <entry key="password" value="1230"></entry>           <entry key="driverClass" value="com.mysql.jdbc.Driver"></entry>           <entry key="jdbcUrl" value="jdbc:mysql:///test"></entry>      </util:map> 9). 配置 Properties 的属性      <property name="properties">           <props>                <prop key="hibernate.hbm2ddl.auto">update</prop>                <prop key="b">B</prop>                <prop key="c">C</prop>                <prop key="d">D</prop>           </props>      </property> 10). 使用 p 命名空间简化 bean 的属性配置:      ①. 导入  p 的命名空间      <beans xmlns="http://www.springframework.org/schema/beans"           xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"           xmlns:util="http://www.springframework.org/schema/util"           xmlns:p="http://www.springframework.org/schema/p"           xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd                http://www.springframework.org/schema/util http://www.springframework.org/schema/util/spring-util-4.0.xsd">      ②. 使用 p 命名空间进行配置      <bean id="car7" class="com.atguigu.spring.ioc.Car"                p:brand="Mazda"                p:corp="ChangAn"                p:maxSpeed="220"                p:price="200000"/>

转载于:https://www.cnblogs.com/bhlsheji/p/5058298.html

最新回复(0)