如何手动实施依赖注入?

Bij*_* CD 6 java reflection dependency-injection

我们如何在不使用容器设备的情况下手动注入对象.我做了类似的反思,如下所示.

Class actionClass = Class.forName("SampleClass");
Object actionObject = actionClass.newInstance();
Method reqMethod = actionClass.getMethod("setRequest", HttpServletRequest.class);
reqMethod.invoke(actionObject,request);
Run Code Online (Sandbox Code Playgroud)

这是做DI的正确方法吗?

我的目的是从调度程序过滤器动态地将请求对象传递给不同的控制器类,在那里我们获取请求和响应对象.我担心反思的表现.是否有替代做DI?

Bri*_*new 5

依赖注入只不过是为类提供依赖,而不是让它自己找到它们(通过单例/查找等).因此,您可以在代码中轻松地执行此操作:

DatabaseConnection dc = new DatabaseConnection();
MyDAO dao = new MyDAO(dc);
Run Code Online (Sandbox Code Playgroud)

(伪).这里MyDAO注入了数据库连接.如果该数据库连接实现了一个接口,您可以在测试期间轻松模拟它.


Tho*_*sen 0

依赖注入意味着您“通过魔法”获得了正确初始化的引用。

您可以使用请求对象调用 setRequest() 方法,但 DI 通常还允许在不调用方法的情况下设置字段。

Guice 本身并不需要容器,而是使用在 main 方法中启动的类加载器魔法。这对你有用吗?