自动装配的优点究竟是什么?春天?
春天自动装配的一个例子就像
public class TestClass {
testMethod() {
// .....
};
}
public class MainClass {
public static void main(String[] args) {
ApplicationContext ctx = new ClasspathXmlApplicationContext("test.xml");
TestMethod obj = (TestClass) ctx.getBean("test");
obj.testMethod();
}
}
的test.xml
<bean id="test" class="TestClass">
在正常操作中可以使用以下方法完成:
public class MainClass {
public static void main(String[] args) {
TestClass obj = new TestClass();
obj.testMethod();
}
}
Spring的优点是什么,我的意思是我听说过控制和依赖注入的反转术语。
在这两个示例中,TestClass的引用再次通过Spring new
oerator通过Spring XML使用。因此,有人可以用简单的术语解释什么是优势。
答案 0 :(得分:3)
Spring负责创建对象。让我们在春季启动时说你正在创建一项服务:
@Service
public class CreditService { ....
对此你说春季启动,他需要从CreditService类型创建一个对象,无论何时你想使用它,你都不需要创建它你可以说:
@Autowired
private CreditService creditService;
通过这种方式,您将获得一个引用:creditService,它将指向为您创建的spring引导对象并调用方法(服务)。因此,spring基本上是在处理对象的创建而你只是在调用它,而不用担心在任何地方创建新对象。
答案 1 :(得分:0)
根据Spring文档,自动装配具有以下优点
考虑自动装配的局限性和缺点:
属性和构造器参数设置中的显式依赖项始终会覆盖自动装配。您无法自动连接简单属性,例如基元,字符串和类(以及此类简单属性的数组)。此限制是设计使然。
自动装配不如显式接线精确。尽管如前所述,Spring还是谨慎地避免猜测,以免产生意想不到的结果。 Spring管理的对象之间的关系不再明确记录。
可能无法从Spring容器生成文档的工具使用接线信息。
容器中的多个bean定义可能与要自动装配的setter方法或构造函数参数指定的类型匹配。对于数组,集合或Map实例,这不一定是问题。但是,对于需要单个值的依赖项,不会任意解决此歧义。如果没有唯一的bean定义可用,则会引发异常。