使用<property> 元素为Bean 的属性装配值和引用并不太复杂。尽管如此,Spring 的命名空间p 提供了另一种Bean 属性的装配方式,该方式不需要配置如此多的尖括号。
命名空间p 的schema URI 为http://www.springframework.org/schema/p。如果你想使用命名空间p,只需要在Spring 的XML 配置中增加如下一段声明:
- <?xml version="1.0" encoding="UTF-8"?>
- <beans xmlns="http://www.springframework.org/schema/beans"
- xmlns:p="http://www.springframework.org/schema/p"
- 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-3.0.xsd">
通过此声明,我们现在可以使用p: 作为<bean> 元素所有属性的前缀来装配Bean 的属性。为了示范,我们重新声明了kenny Bean 的配置:
<bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean" p:dataSource-ref="dataSource" p:configLocation="classpath:conf/mybatis-config.xml" p:mapperLocations="classpath:mapper/*.xml" />
p:configLocation 属性的值被设置为“”中的值。同样,p:dataSource-ref 属性的值被设置为“dataSource”,将使用一个ID 为dataSource的Bean 引用来装配dataSource-ref属性。-ref 后缀作为一个标识来告知Spring 应该装配一个引用而不是字面值。
选择<property> 还是命名空间p 取决于你,它们是等价的。命名空间p 的最主要优点是更简洁。在固定宽度的纸张上编写样例时,选择命名空间相对更合适。因此,在本书中你可能看到我不时的使用命名空间p,特别是水平页面空间比较紧凑时。
若不使用P命名空间的定义方式,使用<property>,对应的定义应该是:
<bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
<property name="dataSource" ref="dataSource" />
<!-- 文件映射器,指定类文件 -->
<property name="configLocation" value="classpath:conf/mybatis-config.xml"/>
<!-- 自动扫描mapping.xml文件 -->
<property name="mapperLocations" value="classpath:mapper/*.xml"></property>
</bean>
相关推荐
c命名空间允许使用标签直接传入构造函数参数,而p命名空间则用于setter注入,它允许使用属性名称而不是标签。这两种方式使配置更加简洁。 【Bean的作用域】 Spring中的Bean可以有多种作用域: 1. 单例(singleton...
- **4.4.2.6 使用p-命名空间的XML快捷方式**:介绍了p-命名空间的使用方法。 - **4.4.2.7 使用c-命名空间的XML快捷方式**:介绍了c-命名空间的使用方法。 - **4.4.2.8 复合属性名称**:解释了如何配置复合属性。 ...
- **`p:`命名空间**:通过`p:`命名空间可以直接在`<bean>`标签内部定义属性值。 ```xml <bean id="person5" class="com.phillips.spring.beans._01_collections.Person" p:name="Frank" p:age="10" p:cars-ref=...
- **XML快捷方式**:使用`p-`和`c-`命名空间简化属性设置。 - **复合属性名**:支持更复杂的属性路径表达式。 - **使用`depends-on`属性** - 通过`depends-on`属性控制Bean之间的依赖顺序。 - **延迟初始化Bean...
- **<p/>命名空间**:简化属性注入的配置方式。 - **抽象和子Bean**:讲解如何定义抽象Bean作为模板,以及如何创建具体的子Bean继承抽象Bean。 **2.12 基于注解配置DI容器** - **注解驱动**:使用注解替代XML配置...
Spring 2.0引入了`p`和`c`命名空间,分别用于属性注入和构造函数注入。例如,`<bean id="orderService" class="com.lizjason.spring.OrderService" p:companyName="lizjason" c:orderDAO-ref="orderDAO"/>`,这样...
- **其他注入形式:** 常量注入、Bean 注入、数组注入、List 注入、Map 注入、Set 注入、null 注入、Properties 注入、p 命名空间注入和 c 命名空间注入。 **4. Bean 的作用域:** - **Singleton:** 默认作用域...
- **4.4.2.6 使用p-命名空间的XML快捷方式**:介绍了如何使用p-命名空间简化配置文件。 - **4.4.2.7 使用c-命名空间的XML快捷方式**:介绍了如何使用c-命名空间简化配置文件。 - **4.4.2.8 复合属性名称**:讨论...
本篇博文适合零基础的同学:主要包括:spring介绍; Ioc 入门案例; Di 入门案例; 核心API介绍; 装配bean基于xml---实例化方式; bean种类;...属性注入--setter方法 p命名空间; sqel; 集合注入; 装配bean基于注解;
- **p命名空间**:使用p命名空间简化setter注入。 - **引入外部属性文件**:通过`context:property-placeholder`标签引入外部属性文件。 - **bean的作用域**:定义bean的生命周期,如singleton、prototype等。 - **...
- **<p/>命名空间**:提供了一种更简洁的方式来配置带有属性的Bean。 - **抽象和子Bean**:支持定义抽象Bean作为基类,便于复用配置。 - **基于注解(Annotation)方式配置DI容器**:介绍了如何使用注解来配置...
- **Spring的依赖注入**:学习如何通过构造函数、setter方法、自动装配等方式实现依赖注入,以及p命名空间的使用。 8. **AOP入门** - **CGLIB代理**:了解如何使用CGLIB库来生成动态代理,实现方法级别的拦截。 ...
- **p命名空间注入**:使用`p:`前缀简化注入语法。 - **c命名空间注入**:使用`c:`前缀简化注入语法。 #### 2. XML的自动装配 - **根据名称自动装配**:使用`autowire="byName"`属性。 - **根据类型自动装配**:...
7. **使用`p`和`c`命名空间**:引入`p`(properties)和`c`(constructor-args)命名空间,进一步简化bean的属性配置,如`<bean id="..." p:prop1="value1" c:arg0="value2"/>`。 8. **外部化配置**:将敏感信息或...
- `xmlns:p="http://www.springframework.org/schema/p"`:Spring的p命名空间,用于简化属性值的设置。 - `xmlns:aop="http://www.springframework.org/schema/aop"`:Spring AOP命名空间,用于配置切面编程。 - ...
此外,Spring还提供了强大的`<util>`命名空间,包括`<list>`、`<map>`、`<set>`等类型,这些可以用于初始化集合类型的属性,使得集合类型的依赖注入更加便捷。 Spring框架之所以强大和受欢迎,原因之一就是它提供了...
可以通过`<property>`元素或p命名空间注入依赖,`init-method`和`destroy-method`属性定义初始化和销毁方法,`scope`属性设置Bean的作用域,如单例(singleton)或原型(prototype),`lazy-init`属性决定Bean是否...