我有一个类似这样开始的课程:
import javax.mail.Session;
//... more imports
@Component("eMailUtility")
public class MailUtility {
@Autowired
Session mailSession;
//...
}
我的IDE告诉我“无法自动装配。找不到'会话'类型的豆子。”
此消息并不让我感到惊讶,但我不确定如何修复它。 Session是具有工厂方法的最终类,但没有公共构造函数。我可以轻松地在某个地方实例化一个Session,但我不知道我需要做些什么才能将其识别为自动注入的目标。我在互联网上找到的所有例子都展示了如何自动编写我写的一个类的实例,这对我没有帮助。
(详细解释autowire如何工作,不会掩盖任何东西,会非常有帮助,但我似乎找不到一个。如果你知道一个好的链接,那将是有帮助的。)
答案 0 :(得分:1)
您必须在使用@Configuration
注释的类中创建一个方法,该类返回一个Session对象并使用@Bean
注释该方法。在你的情况下像这样:
@Bean
public Session session() {
return <instance>;
}
如果它是您自己的一个类,您还可以使用@Component
或其他注释@Component
注释它。然后Spring会找到带有这个注释的类,并自动为你创建bean。
有关@Autowired
的说明,您可以查看以下答案:Understanding Spring @Autowired usage