Spring(三、依赖注入、自动装配、管理第三方Bean

一、依赖注入

依赖注入分为两大块,每块对应简单类型和引用类型的注入

  • setter注入
    • 简单类型
    • 引用类型
  • 构造器注入
    • 简单类型
    • 引用类型 

1.1、setter注入引用类型、简单类型

1,在bean中定义引用类型属性并提供set方法 

import dao.BookDao;
import service.BookService;

public class BookServiceImp implements BookService {
    private BookDao bookDao;


    @Override
    public void save() {
        System.out.println("人家是Service啦~~~~");
        bookDao.save();
    }

    public void setBookDao(BookDao bookDao) {
        this.bookDao = bookDao;
    }
}

2,配置中使用property标签的ref属性注入引用类型,value注入简单类型

    

    
        
    

ref:容器中的bean的标识(id)

name:被注入类的set方法,去掉set后首字母小写。比如setBookDao为bookdao

注入简单类型同上,将ref修改为value即可

 Spring(三、依赖注入、自动装配、管理第三方Bean_第1张图片

1.2、构造器注入引用类型、简单类型 

1,在bean中定义属性并提供构造方法


public class BookServiceImpl implements BookService {
    private BookDao bookDao;
    private String easyType;

    //构造注入


    public BookServiceImpl(BookDao bookDao,String easyType) {
        //引用类型
        this.bookDao = bookDao;
        //简单类型
        this.easyType = easyType;
    }

    public BookServiceImpl() {
        System.out.println("我是Service,我被生成咯~~~~~~~~~");
    }

    @Override
    public void save() {
        System.out.println("人家是Service啦~~~~~~~~~");
        bookDao.save();
    }


}

 2,配置中使用constrctor-arg标签的ref属性注入引用类型,value注入简单类型

    



    
        
        
        
        
        

    

 Spring(三、依赖注入、自动装配、管理第三方Bean_第2张图片

二、自动装配 

IOC容器根据bean所依赖的资源在容器中自动查找并注入到bean的过程称为自动装配 

自动装配方式: 

  • 按类型(autowire="byName")
  • 按名称
  • 按构造方法
  • 不启用

按类型 :




注意:
        需要在bean中提供setter方法,提供的类型要唯一

按名称: 

  

注意:
        容器中注册的bean的id需要和bean中引用的属性名相同

自动装配特征:

  • 自动装配用于引用类型依赖注入,不能注入简单类型
  • 按类型装配(byType)必须保证容器中相同类型的bean唯一
  • 按名称装配(byName)必须保证容器中具有指定名称的bean,变量名与配置耦合,不推荐
  • 自动装配优先级低于setter注入和构造器注入,上述两种同时出现时自动装配失效 

三、管理第三方bean

这里管理Druid数据源作为示范

1,添加依赖

    
      com.alibaba
      druid
      1.1.16
    

2,创建db.properties

driver = com.mysql.cj.jdbc.Driver
url = jdbc:mysql://localhost:3306/brrbaii?useUnicode=true&characterEncoding=UTF8&useSSL=false&serverTimezone=UTC&rewriteBatchedStatements=true
username = root
password = 123456

3,开启context命名空间

Spring(三、依赖注入、自动装配、管理第三方Bean_第3张图片


4,在容器中引入properties文件


5,配置Druid连接池

    
    
        
        
        
        
    

你可能感兴趣的:(#,Spring,spring,mybatis,java)