【spring——命名空间与自动装配】P命名、C命名、Util命名、基于名字自动装配、基于类型自动装配、外部properties文件引入
文章目录
- 命名空间
- p命名空间
- C命名空间
- util命名空间
- 自动装配
- 基于名字进行自动装配
- 基于类型进行自动装配
- 引入外部的properties文件
命名空间
p命名空间
可以简化set注入
【1】在xml中设置xmlns:p=http/www.springframework.org/schema/p
【2】配置bean
<bean id="studentBean" class="...." p:name="lxy" p:age="22" p:major="software_engineering"></bean>
C命名空间
可以简化构造注入
【1】在xml中设置xmlns:c=http/www.springframework.org/schema/c
【2】配置bean
<bean id="studentBean" class="...." c:name="lxy" c:age="22" c:major="software_engineering"></bean>
util命名空间
【1】在xml中设置
-
xmlns util=http/www.springframework.org/schema/util
-
xsi:schemaLocation="http://www.springframework.org/schema/util http://www.springframework.org/schema/util/spring-util-xsd"
【2】配置bean
<util:properties id = "prop">
<prop key="driver">...</prop>
<prop key="url">...</prop>
<prop key="username">...</prop>
<prop key="password">...</prop>
</util:>
<bean id="datasource" class="..." >
<property name="properties" ref="prop"/>
</bean>
自动装配
自动装配是基于set方法的,因此若是有参构造方法,可能会产生错误
基于名字进行自动装配
【1】在service类中写setOrder()方法
【2】在xml文件中配置autowere="byName"
和id="order"
注意:id的名字为set方法中的实体名(首字母小写)
<bean id="orderServiceBean" class="com.lxy.spring.orderService" autowire="byName"></bean>
<!--注意这里的class不是setOrder()方法所在的类路径,而是需要注入的实体类路径,不同于set注入-->
<bean id="order" class="com.lxy.spring.orderDao"></bean>
基于类型进行自动装配
【1】在service类中写setOrder()方法
【2】在xml文件中配置autowere="byName"
,根据类型装配的话,bean 不用写id属性,因为在配置文件中,某种类型的实例只能有一个
<bean class="com.lxy.spring.orderDao"></bean>
<bean class="com.lxy.spring.customerDao"></bean>
<bean id="orderServiceBean" class="com.lxy.spring.orderService" autowire="byType"></bean>
引入外部的properties文件
【1】在xml文件中引入context命名空间
【2】使用标签context:property-placeholder location=“xxx.properties”
<context:property-placeholder location="jdbc.properties"></context>
<bean id="datasource" class="com.lxy.spring.bean.dataSource">
<property name="driver" value="${jdbc.driver}"/>
<property name="url" value="${jdbc.url}/>
<property name="username" value="${jdbc.username}/>
<property name="password" value="${jdbc.password}/>
</bean>