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、利用接口注入