手动装配
<bean id="person" class="autowire.Person" p:name="苏苏" p:address-ref="adress" p:car-ref="car"></bean>
自动装配: 可以使用autowire属性指定自动装配的方式
byName 根据bean的名字和当前bean的setter风格的属性名进行自动装配,若有匹配的则进行自动装配,若没有匹配的则不装配
<bean id="person" class="autowire.Person" p:name="苏苏" autowire="byName"></bean>
byType 根据bean的类型和当前bean的属性的类型进行自动装配,若IOC容器中有一个以上的类型匹配的bean,则抛异常
<bean id="person" class="autowire.Person" p:name="苏苏" autowire="byType"></bean>
properties文件配置
Spring内部配置,在其后期修改时不方便
<bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource">
<property name="user" value="root"></property>
<property name="password" value="mysql123"></property>
<property name="driverClass" value="com.mysql.jdbc.Driver"></property>
<property name="jdbcUrl" value="jdbc:mysql://localhost:3306/test?? useUnicode=true&characterEncoding=utf8&useSSL=true"></property>
</bean>
Spring外部配置,将其外部配置好的properties文件引入,修改时只需修改外部文件
<context:property-placeholder location="classpath:db.properties"/>
<bean id="dataSource1" class="com.mchange.v2.c3p0.ComboPooledDataSource">
<property name="user" value="${user}"></property>
<property name="password" value="${password}"></property>
<property name="driverClass" value="${driverClass}"></property>
<property name="jdbcUrl" value="${jdbcUrl}"></property>
</bean>
Bean的抽象和继承
使用abstract属性:true为是抽象类 false为不是抽象类 抽象类无法被实例化 若一个bean的class属性没有指定 ,则该bean必须是一个抽象bean
<bean id="addresss" abstract="true" p:city="XIAN" p:street="涂山……"></bean>
初始bean配置
<bean id="address" class="autowire.Address" p:city="XIAN" p:street="涂山~~~~"></bean>
bean 配置的继承:使用bean的parent 属性指定继承哪个bean的配置
要求在配置Person时必须有一个关联的car! 即person这个bean依赖于Car这个bean
<bean id="address2" parent="address" p:street="涂山¥¥¥¥"></bean>
Spring 允许用户通过depends-on属性设定Bean前置依赖的Bean,前置依赖的Bean会在本Bean实例化之前创建好
如果前置依赖于多个Bean,则可以通过逗号,空格或的方式配置Bean的名称
<bean id="car" class="autowire.Car" p:brand="凯迪拉克" p:prive="1000000000"></bean>
<bean id="person" class="autowire.Person" p:name="涂山雅雅" p:address-ref="address" p:car-ref="car" depends-on="car"></bean>
Bean的作用域
通过scope来对bean的作用域来进行控制
默认的为:singletion 单例的 即 在整个容器的生命周期内只创建这一个bean 在容器创建时就已被实例化
prototype:原型的。容器初始化时不创建bean的实例,而在每次请求时都创建一个新的Bean实例,并返回。
<bean id="car" class="autowire.Car" p:brand="奔驰" p:prive="3.0" scope="singleton"></bean>