1、使用p命名空间简化配置(了解)
-
名称:p:propertyName,p:propertyName-ref
-
类型:属性
-
归属:bean标签
-
作用:为bean注入属性值
- 格式:
<bean p:propertyName="propertyValue" p:propertyName-ref="beanId"/>
- 注意:使用p命令空间需要先开启spring对p命令空间的的支持,在beans标签中添加对应空间支持
<beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:p="http://www.springframework.org/schema/p" xsi:schemaLocation="http://www.springframework.org/schema/beans https://www.springframework.org/schema/beans/spring-beans.xsd">
- 案例:
<bean
id="userService"
class="com.itheima.service.impl.UserServiceImpl"
p:userDao-ref="userDao"
p:bookDao-ref="bookDao"
/>
2、SpEL (了解)
-
Spring提供了对EL表达式的支持,统一属性注入格式
-
类型:属性值
-
归属:value属性值
-
作用:为bean注入属性值
- 格式:
<property value="EL"></bean>
-
注意:所有属性值不区分是否引用类型,统一使用value赋值
-
所有格式统一使用 value=“****”
-
常量 #{10} #{3.14} #{2e5} #{‘itcast’}
-
引用bean #{beanId}
-
引用bean属性 #{beanId.propertyName}
-
引用bean方法 beanId.methodName().method2()
-
引用静态方法 T(java.lang.Math).PI
-
运算符支持 #{3 lt 4 == 4 ge 3}
-
正则表达式支持 #{user.name matches‘[a-z]{6,}’}
-
集合支持 #{likes[3]}
-
- 案例:
<bean id="userService" class="com.itheima.service.impl.UserServiceImpl">
<property name="userDao" value="#{userDao}"/>
<property name="bookDao" value="#{bookDao}"/>
<property name="num" value="#{666666666}"/>
<property name="version" value="#{'itcast'}"/>
</bean>
3、properties文件
-
Spring提供了读取外部properties文件的机制,使用读取到的数据为bean的属性赋值
操作步骤:
3.1、准备外部properties文件
3.2、开启context命名空间支持
xmlns:context="http://www.springframework.org/schema/context"
3.3、加载指定的properties文件
<context:property-placeholder location="classpath:filename.properties">
3.4、使用加载的数据
<property name="propertyName" value="${propertiesName}"/>
-
注意:如果需要加载所有的properties文件,可以使用
*.properties
表示加载所有的properties文件 -
注意:读取数据使用${propertiesName}格式进行,其中propertiesName指properties文件中的属性名
5、这时候运行代码会报错,我们应该在 开启context命名空间支持的下面,添加如下代码。
xmlns:context="http://www.springframework.org/schema/context"
xsi:schemaLocation="http://www.springframework.org/schema/beans
https://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/context
https://www.springframework.org/schema/context/spring-context.xsd">
4、团队开发
-
名称:import
-
类型:标签
-
归属:beans标签
-
作用:在当前配置文件中导入其他配置文件中的项
- 格式:
<beans>
<import />
</beans> - 基本属性:
<import resource=“config.xml"/>
resource:加载的配置文件名
- Spring容器加载多个配置文件
new ClassPathXmlApplicationContext("config1.xml","config2.xml");
-
Spring容器中的bean定义冲突问题
-
同id的bean,后定义的覆盖先定义的
-
导入配置文件可以理解为将导入的配置文件复制粘贴到对应位置
-
导入配置文件的顺序与位置不同可能会导致最终程序运行结果不同
-