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 组件的名字问题
                默认是类名首字母小写  当然也可以指定加载到容器中的组件名