Java 用Spring定义bean
我开始读一本关于春天的书,我一直在问自己一个问题: 在Spring的XML文件中使用Spring表达式语言定义bean与在Java类中使用常规方法有什么区别。例如,我们有两个等效的实现:Java 用Spring定义bean,java,spring,dependency-injection,Java,Spring,Dependency Injection,我开始读一本关于春天的书,我一直在问自己一个问题: 在Spring的XML文件中使用Spring表达式语言定义bean与在Java类中使用常规方法有什么区别。例如,我们有两个等效的实现: <bean id="carl" class="springinaction.springidol.Instrumentalist" > <property name="song" value="#{kenny.song}" /> </bean> 何时以及为什么我应该使用一
<bean id="carl" class="springinaction.springidol.Instrumentalist" >
<property name="song" value="#{kenny.song}" />
</bean>
何时以及为什么我应该使用一种方法而不是另一种方法?如果您想了解依赖注入,您应该阅读以下内容
<bean id="carl" class="springinaction.springidol.Instrumentalist" >
<property name="song" value="#{kenny.song}" />
</bean>
这段代码包含在适当的Java方法中,将在JVM堆上创建一个实例,该实例可以通过变量carl访问。只要存在引用该实例的变量,该实例就会存在。然后可以选择它进行垃圾收集。但是您通常仍然需要重新构建打包,而且它不是类型安全的。@chrylis我的意思是选择bean类。在XML中,您只需更改bean
类
属性和任何
字段。在爪哇,你必须重新编译整个配置类(ES)。你认为给一个教程的地址一个正确的答案是正确的,但是重新编译对现代的开发实践来说并不是什么大问题,尤其是在重新编译或不重新编译几个类之间的区别。“安德烈斯,你说得对。我在一篇编辑文章中总结了我对依赖注入的理解。请看一看。您可能的副本尚未提供任何上下文。该
元素正在定义一个名为carl
的新bean,其类型为Instrumentalist
,属性名为song
,它引用另一个名为kenny
的bean的属性。此bean仅对ApplicationContext
有任何意义。您在上下文之外展示的Java代码没有解释任何内容。您只是创建一个对象并调用它的一个方法,传递调用另一个对象上的另一个方法的返回值的值。
<bean id="carl" class="springinaction.springidol.Instrumentalist" >
<property name="song" value="#{kenny.song}" />
</bean>
Instrumentalist carl = new Instrumentalist();
carl.setSong(kenny.getSong());