依赖注入和JavaBean

1什么是JavaBean

javabean是符合特定规范的java组件,它具有一个无参的构造方法,和由getter/setter提供的标准属性供外部访问。JavaBean即可以作为数据对象的载体,也可以被设计为业务组件实现的商业逻辑。

2容器

容器是为了某些组件运行提供必需要运行的软件环境,spring提供的容器可以管理所有的轻量级java组件,包括JavaBean、JNDI和所有能被控制的实例化的java对象,同时也是支持依赖注入的容器(Dependency Inejection)。

public class BookService
{
private BookDao bookDao;
public void setBookDao(BookDao bookDao)
   {
         this.bookDao = bookDao;
   }
  public  List<book> listBookByAuthor(String author)
    {
           List<Book> books = bookDao.listAll();
           Iterator<Book> it = books.iterator();
                 while(it.hasNext)
                          {
                                 if(!it.next().getAuthor.equals(author))
                                      it.remove();
                           }
                  return books;
    }    
}

上面这段代码的bookDao方法不是由bookService创建的,而是由DI容器创建的实例,并且通过setBookDao()来注入.

(1)BookService 不必关心如何创建BookDao实例,一不必关心BookDao实例如何实现,只要使用它就可以了。

(2)BookDao实例由DI容器管理,可以在多个组件之间共享。

(3)便于测试bookService实例,可以自己编写一个MockBookDao实例用于测试,而不必关心他的实现。

使用实例需要告诉容器个组件之间的依赖关系,写XML文件

(3)依赖注入的三种方式

1、直接卸载构造函数中

2、直接利用set方法实现

3、利用接口注入

相关文章

什么是设计模式一套被反复使用、多数人知晓的、经过分类编目...
单一职责原则定义(Single Responsibility Principle,SRP)...
动态代理和CGLib代理分不清吗,看看这篇文章,写的非常好,强...
适配器模式将一个类的接口转换成客户期望的另一个接口,使得...
策略模式定义了一系列算法族,并封装在类中,它们之间可以互...
设计模式讲的是如何编写可扩展、可维护、可读的高质量代码,...