2021.01.24 Spring
-
使用基本的集合标签定义集合时, 不能将集合作为独立的 Bean 定义**,** 导致其他 Bean 无法引用该集合**,** 所以无法在不同 Bean 之间共享集合.可以使用 util schema 里的集合标签定义独立的集合 Bean. 需要注意的是, 必须在 根元素里添加 util schema 定义
<!--共享的list,需要直接ref="shareList"即可--> <util:list id="shareList"> <value>张三</value> <value>李四</value> <value>王五</value> </util:list>
-
在Spring IOC容器读取Bean配置创建Bean实例之前,先对容器实例化,才能从容器中取出bean实例并使用,其中容器有
- BeanFactory 容器的基本实现 是Spring框架的基础设施,面向Spring本身
- ApplicationContext(接口)提供更多高级的特性,是BeanFactory的子接口,面向使用Spring框架的开发者,建议使用ApplicationContext
- 注意:无论使用BeanFactory还是SpringApplicationContext,配置文件都是一样的
-
ApplicationContext(接口)在初始上下文时候就实例化所有单例的bean
-
如果注入的值中包含有特殊字符(<上海>),可<!CDATA[<上海^>]]来赋值,注意结束符号
-
一个bean中注入其他的bean使用
<bean id="id值" class=class全类名 ref=“其他注入bean的id”></bean>
或者
<bean ….><ref bean="其他注入bean的id"></ref></bean>
-
内部bean,只供内部使用(Person中注入Car.class)
<bean id="id值" class=Person全类名>
<property name= "car">
<bean id="car" class=Car全类名>
//不能被外部引用,id可以不用写
<property name="brand" value="奥迪">
</bean>
</bean>
-
配置Properties
<!--配置Properties--> <bean id="dataSource" class="DataSource"> <property name="properties"> <props> <prop key="username">root</prop> <prop key="password">1234</prop> <prop key="username">jdbc:mysql://localhost:3306/test</prop> </props> </property> </bean>
-
一次配置(独立出来)list/map,多处使用,多个bean中共享
<util:list id="outterList"> <value>zhangsan</value> <value>lisi</value> <value>wangwu</value> </util:list> <bean id="listSpring1" class="CollectionInSpring.ListInSpring"> <property name="names" ref="outterList"></property> </bean>
-
p命名空间(先把p命名空间导入)
<bean id="person" class="Person" p:name="张三" p:age="39" p:car-ref="car"> </bean>
-
bean之间的关系 这里的关系是指xml中配置的关系
<bean id="address" class="beanRelation.Address"> <property name="city" value="兴宁"/> <property name="street" value="中山路"/></bean> <bean id="address2" class="beanRelation.Address"> <property name="city" value="兴宁"/> <property name="street" value="团结路"/> </bean> <!--这里两个bean之间的配置基本相同,消除重复代码--> <!--改进--> <!--父bean--> <!--此处的父bean既是bean实例,又是模板--> <!--abstract="true" 则只能是模板,无法被实例化--> <!--若一个bean的class没有被指定的,则其只能是模板!--> <!--并非模板中的所有属性都会被继承,例如abstract--> <bean id="address" class="beanRelation.Address"> <property name="city" value="兴宁"/> <property name="street" value="中山路"/></bean> <!--子bean继承父bean的配置--> <bean id="address2"class="beanRelation.Address"parent="address"> <property name="street" value="中山路"/> </bean>