首页 > 代码库 > 简单实现依赖注入(无框架)
简单实现依赖注入(无框架)
1、依赖注入概念
在Spring框架中,依赖注入(IOC)和面向切面编程(AOP)是它的两大核心。其中依赖注入是一个将行为从依赖中分离的技术,简单地说,它允许开发者定义一个方法函数依赖于外部其他各种交互,而不需要编码如何获得这些外部交互的实例。 这样就在各种组件之间解耦,从而获得干净的代码,相比依赖的硬编码, 一个组件只有在运行时才调用其所需要的其他组件,因此在代码运行时,通过特定的框架或容器,将其所需要的其他依赖组件进行注入,主动注入。
2、依赖注入实现
依赖注入的实现是基于反射实现的,因此不使用Spring框架实现依赖注入也是基于反射实现的。
首先定义一个利用反射获取类对象的方法,方法参数为类的全限定名称,代码如下:
public static Object getInstance(String ClassName){ Object result=null; //定义为Object类,考虑到通用性 try { result=Class.forName(ClassName).newInstance(); } catch (Exception e) { e.printStackTrace(); } return result; }
然后建立接口接口的实现类,用于测试:
接口:
public interface User { void sayHello(); }
接口实现类:
public class UserImpl implements User { public void sayHello() { // TODO Auto-generated method stub System.out.println("Hello World!"); } }
创建配置文件config.xml,在配置文件中设置bean名称:
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE properties SYSTEM "http://java.sun.com/dtd/properties.dtd"> <properties> <entry key="className">com.fsr.user.UserImpl</entry> </properties>
最后对依赖注入进行测试:
public static void main(String[] args) throws InvalidPropertiesFormatException, IOException { //载入配置信息 InputStream inputStream=(InputStream)ClassLoader.getSystemResourceAsStream("config.xml"); Properties properties=new Properties(); properties.loadFromXML(inputStream); //读取beanName String ClassName=properties.getProperty("className"); //根据bean,利用反射获取对象 User user = (User)getInstance
实际的运行效果如下:
在程序中没有没有去new对象,而是交给getInstance()方法去new对象,代码会根据配置文件得到bean信息,然后去new配置文件中bean对象,将依赖注入到这里,如果要使用的实现类出现了变化,那么只需要修改xml配置文件中的信息就可以,大大减少了修改代码的成本。通过以上代码就简单的实现了依赖注入。
具体代码可以参见我的github: https://github.com/bywallance01/IOCTest/
简单实现依赖注入(无框架)
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。