2011-11-29 118 views
2

的我想写我自己的简单的DI框架。 我希望它像春天确实只执行这个简单的例子:基础依赖注入框架

public interface IWriter { 
    public void writer(String s); 
} 

@Service 
public class MySpringBeanWithDependency { 
    private IWriter writer; 

    @Autowired 
    public void setWriter(IWriter writer) { 
     this.writer = writer; 
    } 

    public void run() { 
     String s = "This is my test"; 
     writer.writer(s); 
    } 
} 

@Service 
public class NiceWriter implements IWriter { 
    public void writer(String s) { 
     System.out.println("The string is " + s); 
    } 
} 

public class Main extends TestCase { 

    @Test 
    public void test() { 

     ApplicationContext context = new ClassPathXmlApplicationContext(
       "META-INF/beans.xml"); 
     MySpringBeanWithDependency test = (MySpringBeanWithDependency) context 
       .getBean("mySpringBeanWithDependency"); 
     test.run(); 
    } 
} 

同样的情况,但MB没有一个XML文件。

有人能解释这种框架的概念,并编写一些代码。

+0

为什么要重新发明轮子? –

+1

我不想重新发明?我想知道它是如何工作的。 – itun

+0

阅读Spring文档。然后阅读源代码。 –

回答

3

吉斯是开源的。你可以在这里浏览代码: http://code.google.com/p/google-guice/source/browse/

Spring也是开源的。你可以在这里下载: http://www.springsource.org/download

浏览这些应该满足你的问题的“写一些代码”的一部分。

编辑:看来你要寻找的“神奇”。它归结为反思。 Spring和/或使用吉斯Java反射找上了类相应的设置器(或域),并设置值。而已。其他一切都是胶水,使整个系统的工作。