如何自动装配java类的实例?

时间:2017-05-05 23:29:03

标签: spring autowired

我有一个类似这样开始的课​​程:

import javax.mail.Session;
//... more imports

@Component("eMailUtility")
public class MailUtility {

  @Autowired
  Session mailSession;
  //...
}

我的IDE告诉我“无法自动装配。找不到'会话'类型的豆子。”

此消息并不让我感到惊讶,但我不确定如何修复它。 Session是具有工厂方法的最终类,但没有公共构造函数。我可以轻松地在某个地方实例化一个Session,但我不知道我需要做些什么才能将其识别为自动注入的目标。我在互联网上找到的所有例子都展示了如何自动编写我写的一个类的实例,这对我没有帮助。

(详细解释autowire如何工作,不会掩盖任何东西,会非常有帮助,但我似乎找不到一个。如果你知道一个好的链接,那将是有帮助的。)

1 个答案:

答案 0 :(得分:1)

您必须在使用@Configuration注释的类中创建一个方法,该类返回一个Session对象并使用@Bean注释该方法。在你的情况下像这样:

@Bean
public Session session() {
    return <instance>;
}

如果它是您自己的一个类,您还可以使用@Component或其他注释@Component注释它。然后Spring会找到带有这个注释的类,并自动为你创建bean。

有关@Autowired的说明,您可以查看以下答案:Understanding Spring @Autowired usage