当前位置: 首页 > 知识库问答 >
问题:

如何正确使用@Bean方法?[副本]

董高畅
2023-03-14

我是Spring的新手。在@Bean方法中注入Bean的这两种方法有什么区别?我应该使用哪个,为什么?

@Configuration
public class AppConfig {

 @Bean
 public Foo foo(Bar bar) {
  return new Foo(bar);
 }

 @Bean
 public Bar bar() {
  return new Bar("bar1");
 }

}

而且

@Configuration
public class AppConfig {

 @Bean
 public Foo foo() {
  return new Foo(bar());
 }

 @Bean
 public Bar bar() {
  return new Bar("bar1");
 }

}

共有1个答案

况繁
2023-03-14

第二种方法是不正确的,因为Spring已经调用了bar()方法来创建bar对象,如果我们在foo()方法中再次手动调用bar()方法,我们将创建一个不必要的对象

换句话说:在第一种方法中,只会创建一个酒吧对象,而在第二种方法中,会创建两个酒吧对象(一个由Spring创建,一个由我们创建),这是不必要的

 类似资料:
  • 我正在准备Java认证,显然我不能正确回答这个答案。 给定: 它在第11行独立插入,为Chilis实现equals()和hashCode()契约?(选择所有适用内容。) A。public int hashCode(){return 7;} B。public int hashCode(){return hotness;} C。public int hashCode(){return color.le

  • 我使用以下参数运行java应用程序: null 按照我的理解,我需要查看参数。但在本例中,它大大超过。在本例中,预计将发生。我做错了什么?如何为容器限制java应用程序的内存?我是否错误地查看了使用的进程内存? 我想最小化使用的RAM。OS-CentOS 7

  • 问题内容: 我正在做一些Java加密,无法找到正确使用PBEWithHmacSHA512AndAES_256算法的方法。 加密似乎可以正常工作,但是我无法正确初始化解密密码。 下面是演示该问题的简短程序。特别是,请参见“问题”注释。 注意:我已经看到了这个非常有用的答案,并且可以使用该方案使事情正常进行,但是我很想知道我在这里做错了什么。 问题答案: // PROBLEM: If I pass “

  • 问题内容: 这个想法是使用更少的连接和更好的性能。连接是否随时终止? 对于另一个问题,是否打开新连接? 问题答案: 不,多路复用器不会过期。没有GetDatabase不会打开新连接。basics.md涵盖了所有内容 -特别是: 从GetDatabase返回的对象是便宜的直通对象,不需要存储。

  • 我有一个使用jquery mobile的应用程序,它由几个html页面组成,每个页面中都有几个jquery页面元素。在桌面浏览器上,一切正常,但当我把它加载到我的android设备(运行2.3)上时,第一个页面看起来很好,但只要你点击一个链接(比如从index.html)- 那么,是否有正确的方法在不同的html页面之间移动呢?我没有得到任何浏览器错误,所以一切似乎都工作正常,但没有jqm的样式或

  • 问题内容: 我正在尝试对表单中的某些字段使用get_or_create,但尝试这样做时却出现500错误。 其中一行如下所示: 对于以上代码,我得到的错误是: 问题答案: 从文档get_or_create中: 说明: 要评估相似性的字段必须在外部提及。其余字段必须包含在中。如果发生CREATE事件,则会考虑所有字段。 看起来你需要返回一个元组,而不是单个变量,请执行以下操作: