Spring框架基础(二)依赖注入与标注

什么是DI

Dependence  Injection  依赖注入(依赖注射) 用来解决 组件值得 装配问题

Spring 容器如何完成注入

  1. setter注入: 参考的是bean 对象 对应的类型中的set方法

      
    
  2. 构造器注入

     参考的是构造方法  将property 换成constructor-arg  
     
     	
     	
     
     
     	
     	
     	
     		
      
    
  3. 自动化注入

     可以在bean标记中 加一个属性 autowire 通过指定值为byName 就是通过组件的Id 来进行自动注入  。
     也可以设置byType 是按照组件的类型进行自动装配  还可以指定成constructor  是按照构造方法区匹配自动装配。
    
  4. 枚举类型 在配置文件中直接写值即可;

  5. bean参数的注入

    简单值得注入:

     String类型、枚举、java基本类型、java基本类型对应的封装类(共18种类型)
     
     
     除基本类型 还可以赋值 null 值,使用
     例:使用基本值的注入 , 构建连接池对象
     
     	
     	
     	test
     
    

    对象类型的参数注入:

     	
    

    集合类型的注入:

     	List集合----- 
     	set集合------
     	map集合------
     	Properies类型----
     						
     				
    

    集合的单独定义:

     如果要重复使用一个集合的数据,可以把集合单独定义一份,方法:
     	在复杂值注入的标签中加 util: ,并定义id,通过id引用;
     	如  
     Properties 特殊 并且可以加载一个对应的 .properties 文件,如:
     	
    

    Spring 中的EL表达式:

     Spring中的表达式是从容器中取值 ,取值的语法是把之前的$换成#
    

组件扫描

  1. 什么是组件扫描?

     它是Spring 框架提供一套基于标注(注解)的技术,目的是为了简化XML文件的编写。
    
  2. 如何实现组件扫描

     a:建立一个项目 导入jar包(IOC AOP)  并拷贝Spring 的配置文件到src下
     b : 在Spring 配置文件中开启组件扫描
     	
    1. .Spring DAO 对JDBC的改进

       简化了DAO实现类的编写  提供了高度的封装的API
       提供了基于AOP的事务管理
       它把JDBC中的检查异常 做了封装,封装成了一个DataAccessException这个异常继承RuntimeException
      

      如何完成的改进

       JDBCTemplate	  jdbc模板类	可以完成驱动加载 连接获取Sql执行环境构建 资源释放
       JdbcDaoSupport  接口支持类	可以提供JdbcTemplate对象
      
    2. 采用继承JdbcDaoSupport 的方式来使用Spring DAO

       步骤:1:建立一个项目 导入jar包(IOC aop jdbc  连接池  数据库驱动) 并拷贝配置文件到 src文件下		
       	2:编写DAO接口		里面定义一个查询 某张表数据量的方法
       	3:编写DAO的实现类		继承JdbcDaoSupport
       		(开启组件扫描、在类上加标注,在配置文件中  建立dataSource 并注入给JdbcDaoSupport)
       		从JdbcDaoSupport 获取模板对象  使用API 完成查询
       		supper.setDataSource(dataSource);//赋值给JdbcDaoSupport这个类
       		supper.getJdbcTemplate().queryForObject(sql,  .class)//使用父类提供的模板进行查询
       		rowMapper 说的是结果集中的一行 转换成对象的过程对象
       	4: 从容器中获取DAO对象  测试
      
    3. RowMapper 是什么?怎么用?

       Spring中的RowMapper可以将数据中的每一行数据封装成用户自定义的类;常与JdbcTemplate一起使用
       在数据库查询中,如果返回的是用户自定义类型的则需要包装,如果是java自定义的则不需要。
       自定义类的包装实现:  通过建立内部类实现RowMapper接口,在内部类mapRow方法中实现;
       例:public  class  UserMapper implements RowMapper{
       		public XdlUser mapRow (ResultSet  rs , int i )  throws  SQLException{
       			XdlUser user = new XdlUser();  		//参数 rs 查询数据库返回的结果集
       			user.setUser_id(rs.getInt("user_id");	//参数 i	
       			user.setName(rs.getString("name"));
       		return user;
       		}
       }
      

你可能感兴趣的:(笔记)