更新时间:2022-08-01 11:31:00 来源:极悦 浏览1336次
Java依赖注入是什么意思?极悦小编来告诉大家。
依赖注入 (DI) 是对象从外部获取其他所需对象的概念。
DI 可以用任何编程语言实现。依赖注入背后的一般概念称为控制反转。
如果 Java 类使用此类的实例,则它依赖于另一个类。我们称之为类依赖。例如,访问记录器服务的类依赖于该服务类。
理想情况下,Java 类应该尽可能独立于其他 Java 类。这增加了重用这些类的可能性,并且能够独立于其他类来测试它们。
如果 Java 类通过new运算符创建另一个类的实例,则不能独立于该类使用(和测试)它,这称为硬依赖。下面的例子展示了一个没有硬依赖的类。
package com.vogella.tasks.ui.parts;
import java.util.logging.Logger;
public class MyClass {
private Logger logger;
public MyClass(Logger logger) {
this.logger = logger;
// write an info log message
logger.info("This is a log message.")
}
}
一个框架类,通常称为依赖容器,可以分析这个类的依赖关系。通过这种分析,它能够创建类的实例并通过 Java 反射将对象注入到定义的依赖项中。
这样 Java 类就没有硬依赖,这意味着它不依赖于某个类的实例。这允许您单独测试您的类,例如使用模拟对象。
模拟对象(模拟)是行为与真实对象相似的对象。但是这些模拟不是编程的;它们被配置为以某种预定义的方式运行。Mock是一个英文单词,意思是模仿或模仿。
如果使用依赖注入,则可以单独测试 Java 类。
存在不同的方法来描述类的依赖关系。最常见的方法是使用Java注解直接在类中描述依赖关系。
Java Specification Request 330 (JSR330) 中定义了用于描述类依赖关系的标准 Java 注释。本规范描述了@Inject和@Named注释。
以下清单显示了一个使用注释来描述其依赖关系的类。
// import statements left out
public class MyPart {
@Inject private Logger logger;
// inject class for database access
@Inject private DatabaseAccessClass dao;
@Inject
public void createControls(Composite parent) {
logger.info("UI will start to build");
Label label = new Label(parent, SWT.NONE);
label.setText("Eclipse 4");
Text text = new Text(parent, SWT.NONE);
text.setText(dao.getNumber());
}
}
0基础 0学费 15天面授
Java就业班有基础 直达就业
业余时间 高薪转行
Java在职加薪班工作1~3年,加薪神器
工作3~5年,晋升架构
提交申请后,顾问老师会电话与您沟通安排学习