Spring(二)
Spring_自动装配
自动装配: 只声明 bean, 而把 bean 之间的关系交给 IOC 容器来完成
我们先来演示手动装配:
如果是根据名字来进行自动装配,那么这个时候,名字也是一定要对应上才能自动装配成功:
而这个就是根据类型来进行自动的装配:
<!-- 自动装配: 只声明 bean, 而把 bean 之间的关系交给 IOC 容器来完成 -->
<!--
byType: 根据类型进行自动装配. 但要求 IOC 容器中只有一个类型对应的 bean, 若有多个则无法完成自动装配.
byName: 若属性名和某一个 bean 的 id 名一致, 即可完成自动装配. 若没有 id 一致的, 则无法完成自动装配
-->
<!-- 在使用 XML 配置时, 自动装配用的不多. 但在基于 注解 的配置时, 自动装配使用的较多. -->
<bean id="dao" class="com.atguigu.spring.ref.Dao">
<property name="dataSource" value="C3P0"></property>
</bean>
<bean id="service" class="com.atguigu.spring.ref.Service" autowire="byName"></bean>
<bean id="action" class="com.atguigu.spring.ref.Action" autowire="byType"></bean>
还一种就是根据构造器来进行自动装配;
在xml文件里面配置的Bean自动装配的缺点:
在实际的开发当中,我们一般会很少用到自动装配;
Spring_Bean之间的关系
像这样,两个Bean的属性配置有很多的相同的,那么,我们就可以用继承来继承属性:
我们用parent的这个属性就是可以继承了:
若某一个bean的class属性没有指定,那么这个bean就必须是一个抽象的bean:
依赖Bean配置:Bean和Bean之间也是可以配置依赖关系,通过depends-on属性来进行配置
Spring_Bean的作用域
Spring_使用外部属性文件
首先我们要先导入c3p0连接池和mysql驱动:
在xml文件里面进行配置:
我们这样来获取这个数据源:
现在,我们来用外部文件的方式来进行配置数据源:
现在,我们要在spring的配置文件里面进行引用这个外部文件里面的属性:
Spring_SpEL
有这么一个需求:
Spring_管理Bean的生命周期
创建Bean的后置处理器:
这个时候,生命周期就一目了然了:
实际上,我们还可以更细粒度的声明生命周期的方法:需要实现一个接口:BeanPostProcessor接口
接着,我们就在spring的配置文件里面配置这个后置处理器:
这个时候,生命周期的流程就变成这样了:
Spring_通过工厂方法配置Bean
- 静态工厂方法
测试:
- 实例工厂方法
Spring_通过FactoryBean配置Bean
然后,我们在Spring的配置文件里面配置这个Bean就可以了:
我们配置就可以了:
测试:
Spring_通过注解配置Bean(1)
测试:
只扫描指定的类:
这个是我们需要注意的地方:
***
这个是我们需要注意的地方:
Spring_通过注解配置Bean(2)
实际上,这个注解还可以加在入参的前面: