用编程的话来说, 字符串str = new String(); //实例化 str =“ hello”; //初始化
现在,在Spring中,有了惰性初始化的概念。这是否意味着它们是对象的延迟实例化还是延迟了初始化?
或者,名称lazy-init属性或@lazy批注是否会误导它实际上是延迟实例化的?
P.S。从4.3版本开始,我可以理解@lazy既可以用于延迟初始化,也可以用于延迟依赖项解析。
答案 0 :(得分:0)
关于您的示例
String str = new String();
str = "hello";
涉及实例化和初始化。第一行实例化一个String并将其初始化为空字符串,这意味着如果您执行System.out.println
,则会看到空而不是null
。
第二行在字符串池中实例化一个String
常量,并使用该值初始化str
。
对于您的Spring延迟初始化问题,Spring Context使用延迟初始化来加快启动时间。在Spring中,只有在首次从Spring上下文中请求Bean in时,才会对其进行初始化。请记住,初始化将始终在实例化之后发生。
答案 1 :(得分:0)