1 Autowire自动装配
1.1 使用:只需在<bean>中使用autowire元素
<bean id="student" class="com.kejian.spring.bean.autowire.Student"
p:name="Tony" autowire="byName"></bean>

1.2 类型
byName 目标bean的id与属性名一置,若不匹配置为null
byType 根据引用类型,若有多个bean无法装配,会抛异常
constructor(不推荐)

1.3 自动装配的缺点
若使用autowire装配bean ,则会装配全部属性;
autoName和autoType不能混合使用;
实际项目一般少用到

2 bean之间的关系
2.1 继承关系
2.1.1 可使用<bean>的parent属性配置继承父类(模板)
2.1.2 子bean可以继承父bean的属性,也可以覆盖部分属性
2.1.3 父bean可以作为实例,也可以作为模板,可以设置<bean>的abstract=true,则该bean为抽象bean,
不能被实例化,
2.1.4 父bean若没有设置任何属性,则默认为abstract

<bean id="subject" class="com.kejian.spring.bean.autowire.Subject"
p:id="1" p:name="Chinese" abstract="true"></bean>

<bean id="subject2" class="com.kejian.spring.bean.autowire.Subject"
parent="subject" p:id="2" p:name="History"></bean>

2.2 依赖关系
2.2.1 Spring允许通过使用depends-on属性设定bean的前置bean,依赖的bean必须在本bean实例化前创建好
2.2.2 如果依赖多个bean,可以使用逗号或空格的方式隔开
<!-- bean的依赖关系 -->
<bean id="student" class="com.kejian.spring.bean.autowire.Student"
p:name="Tim" p:subject-ref="subject3"></bean>

3 bean的作用域
3.1 默认为singleton,创建容器时就实例化好,每次获取时返回同一个实例
<bean id="car" class="com.kejian.spring.Car"
p:brand="ToYoTa" p:corp="GuangZhou" p:price="15" scope="prototype"></bean>

3.2 可以使用scope进行配置

4 使用外部属性文件
4.1 bean配置有时需要系统部署信息,如文件路径、数据源配置信息等,需要将其与bean配置文件分离
4.2 Spring 提供了一个 PropertyPlaceholderConfigurer 的 BeanFactory 后置处理器,可以使用外部属性文件,使用${var}
4.3 spring2.5后,可通过<context:property-placeholder> 直接使用PropertyPlaceholderConfigurer ,使用locaiton属性指明配置文件路径,需要引入context schema
<!-- 引入外部属性文件 -->
<context:property-placeholder location="db.properties"/>

<!-- 使用外部属性 -->
<bean id="dataSource" class="com.kejian.spring.bean.properties.DataSource">
<property name="user" value="${user}"></property>
<property name="password" value="${password}"></property>
<property name="jdbcUrl" value="${jdbcUrl}"></property>
<property name="driverClass" value="${driver}"></property>
</bean>

最新文章

  1. GCD 开发
  2. Apple Pay的快速实现
  3. linux添加新LUN,无需重启
  4. dedecms /plus/feedback.php SQL Injection Vul
  5. python 函数的调用 和执行 小知识
  6. perl文件句柄的传递
  7. swift 2.x学习笔记(二)
  8. SQL Server 2008 数据库通过镜像同步备份(数据库热备)
  9. Java中的继承与组合(转载)
  10. Datagridview 实现二维表头和行合并【转载】
  11. PHP服务器脚本 PHP内核探索:新垃圾回收机制说明
  12. python generator(生成器)
  13. C# 中的关键字整理
  14. 任务型对话(一)—— NLU(意识识别和槽值填充)
  15. 使用ServletContext对象读取资源文件
  16. MyBatis动态创建表
  17. 实现RunOnUiThread和RunOnUiThreadBlock
  18. 1418 抱歉 ACM 欧拉公式
  19. Linux安装maven以及配置-Centos7版本
  20. lch 儿童围棋课堂 启蒙篇 (李昌镐 著)

热门文章

  1. 在 xampp 环境下安装 laravel
  2. CCNA基础 IP地址子网划分
  3. LigerUI学习使用
  4. Java并发包中CyclicBarrier的工作原理、使用示例
  5. WP中的语音识别(上):基本识别
  6. Oracle Dataguard之Real-Time Apply
  7. 优秀教程:使用 CSS3 动画实现的超炫的过渡特效
  8. 使用etcd+confd管理nginx配置
  9. Windows Azure Virtual Machine (28) 使用Azure实例级别IP,Instance-Level Public IP Address (PIP)
  10. 关于Html与css的一些解释