1.DI的实现方式----自动注入
在bean标签中 加属性 autowire
取值有 no 默认值
byName 根据属性的名字 去容器中找对应的组件id
byType 根据属性的类型去查找 类型有一样就报错
constructor 优先按照构造方法参数的名字去查找 如果找不到 则启用参数的类型去查找
如果按照类型找类型有相同就不加载
用<property> 不能占住参数位置 <constructor-arg> 可以占住位置
autodetect 自动选择 之前版本有 现在已经不支持了
2.bean参数注入
2.1 普通类型 (字符串 整数 浮点数)
<property name="属性名" value="值" > </property>
<property name="属性名" >
<value> 值 <value>
</property>
<property name="属性名" >
</null>
</property>
2.2 注入集合类型
一个javabean 中有一个 List 类型的属性 则在配置文件中 使用 <list> 标记进行注入
<property name="friends" >
<list>
<value>猛哥</value>
<value>梁哥</value>
<value>小马</value>
</list>
</property>
一个javabean 中有一个 Set 类型的属性 则在配置文件中 使用 <set> 标记进行注入
<property name="friends1" >
<set>
<value>猛哥</value>
<value>梁哥</value>
<value>小马</value>
</set>
</property>
一个javabean 中有一个 Map 类型的属性 则在配置文件中 使用 <map> 标记进行注入
<property name="phones" >
<map>
<entry key="" value=""> </entry>
<entry key="" value=""> </entry>
</map>
</property>
一个javabean 中有一个 Properties 类型的属性 则在配置文件中 使用 <props> 标记进行注入
<property name="phones2" >
<props>
<prop key="key1">值</prop>
<prop key="key2">值2</prop>
</props>
</property>
2.3 注入的集合的单独定义 可以集合抽取出来 然后 被别的bean 引用
<util:list id="集合标识">
<value>值</value>
<value>值2</value>
</util:list>
<util:set id="集合标识">
<value>值</value>
<value>值2</value>
</util:set>
<util:map id="集合标识">
<entry key="" value=""> </entry>
<entry key="" value=""> </entry>
</util:map>
<util:properties id="集合标识">
<prop key="">值</prop>
</util:properties>
3.练习
定义一个Properties 集合 这个集合要求单独定义 把连接数据库的四个要素信息封装到这个集合中
可以使用 Spring 的EL表达式 引用 集合 或者 对象的属性数据 你只需要把 之前的 $ 符 换成 #
之前数据库的连接信息 都在 db.properties 中 Spring Properties集合能加载 db.properties
<!-- 使用 db.properties 文件构建一个集合 -->
<util:properties id="dbparam" location="classpath:db.properties"></util:properties>
-----------------------------------------------------------------------------------------
4.组件扫描
4.1 作用
Spring 提供了一套基于 标注(注解) 的配置方式,这个技术可以大大简化xml配置信息。
4.2 组件扫描的实现步骤
1.建立一个项目 拷贝 ioc 和 aop 的jar包
2.拷贝spring 容器对应的配置文件 并且在这个配置文件 中 开启组件扫描
<context:component-scan base-package="包名"> </context:componet-scan>
3.在对应的类上 加 对应的注解标记
@Component 通用组件标注
@Repository 持久化层的标注
@Service 服务层对应的标注
@Controller 控制层对应的标注
4.从spring 容器中获取对应的组件对象即可
4.3 组件的名字问题
默认是类名首字母小写 当然也可以指定加载到容器中的组件名