1,为什么会有依赖注入的设计模式?
@H_502_11@public class PersistenceManager{
@H_502_11@public void store(Object object){
@H_502_11@DataSource dataSource=...;
@H_502_11@Connection connection=dataSource.getConnection();
@H_502_11@}
@H_502_11@}
@H_502_11@通常在javaee中,获得一个数据源常用方法是通过一次JNDI查询:
@H_502_11@dataSource dataSource=null;
@H_502_11@context=new InitialContext();
@H_502_11@dataSource=(DataSource)context.lookup("java:/comp/env/jdbc/myDataSource");
@H_502_11@@H_502_11@首先,可以看出这个类依赖这个数据源类。
@H_502_11@可以看出进行一次JNDI查询,需要一个JNDI名,但是不能保证用到PersistenceManager这个类的应用程序所提供的JNDI名是一样的,则此时重用性就不能得到保证。所以才会有依赖注入的设计模式。
2,依赖注入原理:把依赖关系注入到字辈组件中,就是把一个组件设计成能为被依赖的那个组件提供入口,就像插座给插头提供插孔。
3,依赖注入的主要方式:
@H_502_11@(1)专门提供一个能够接受那个依赖关系的构造器
@H_502_11@
@H_502_11@public class PersistenceManager{
@H_502_11@private DataSource dataSource;
@H_502_11@public PersistenceManager(DataSource dataSource){
@H_502_11@this.dataSource=dataSource;
@H_502_11@}
@H_502_11@public void store(Object object){
@H_502_11@Connection connection=dataSource.getConnection();
@H_502_11@}
@H_502_11@}
@H_502_11@
@H_502_11@public class PersistenceManager{
@H_502_11@private DataSource dataSource;
@H_502_11@public void setDataSource(DataSource dataSource){
@H_502_11@this.dataSource=dataSource;
@H_502_11@}
@H_502_11@public void store(Object object){
@H_502_11@Connection connection=dataSource.getConnection();
@H_502_11@}
@H_502_11@}