Java Don';我不知道应该在代码中定义什么类型的Bean

Java Don';我不知道应该在代码中定义什么类型的Bean,java,spring,Java,Spring,Java新手,我正在为电子邮件和注册应用程序编写后端代码。我用PostgreSQL作为我的数据库管理器和post-and-get测试的邮递员,一切都在运行,昨天一切都很好。但是今天我重新打开了编辑器,它告诉我定义一种bean类型时出错了 Parameter 0 of constructor in com.example.demo.email.EmailService required a bean of type 'org.springframework.mail.javamail.JavaM

Java新手,我正在为电子邮件和注册应用程序编写后端代码。我用PostgreSQL作为我的数据库管理器和post-and-get测试的邮递员,一切都在运行,昨天一切都很好。但是今天我重新打开了编辑器,它告诉我定义一种bean类型时出错了


Parameter 0 of constructor in com.example.demo.email.EmailService required a bean of type 'org.springframework.mail.javamail.JavaMailSender' that could not be found.


Action:

Consider defining a bean of type 'org.springframework.mail.javamail.JavaMailSender' in your configuration.


Process finished with exit code 1
我的代码如下所示


import lombok.AllArgsConstructor;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.mail.javamail.JavaMailSender;
import org.springframework.mail.javamail.MimeMessageHelper;
import org.springframework.scheduling.annotation.Async;
import org.springframework.stereotype.Service;

import javax.mail.MessagingException;
import javax.mail.internet.MimeMessage;

@Service
@AllArgsConstructor
public class EmailService implements EmailSender{

    private final static Logger LOGGER = LoggerFactory
            .getLogger(EmailService.class);

    private final JavaMailSender mailSender;

    @Override
    @Async
    public void send(String to, String email) {
        try {
            MimeMessage mimeMessage = mailSender.createMimeMessage();
            MimeMessageHelper helper =
                    new MimeMessageHelper(mimeMessage, "utf-8");
            helper.setText(email, true);
            helper.setTo(to);
            helper.setSubject("Confirm your email");
            helper.setFrom("aiurhelp@hotmail.com");
            mailSender.send(mimeMessage);
        } catch (MessagingException e) {
            LOGGER.error("failed to send email", e);
            throw new IllegalStateException("failed to send email");
        }
    }
}
以及pom.xml中的依赖项


4.0.0
org.springframework.boot
spring启动程序父级
2.4.4
com.example
乌尔德布
0.0.1-快照
艾尔
aiur的后端登录
16
org.springframework.boot
spring引导启动器数据jpa
org.springframework.boot
春季启动邮件
org.springframework.boot
弹簧启动安全
org.springframework.boot
SpringBootStarterWeb
org.postgresql
postgresql
运行时
org.projectlombok
龙目
真的
org.springframework.boot
弹簧起动试验
测试
org.springframework.security
弹簧安全性试验
测试
org.springframework.boot
springbootmaven插件
org.projectlombok
龙目
org.apache.maven.plugins
maven编译器插件
15
15

您尚未声明任何类型为
JavaMailSender
的bean。Spring容器找不到任何具有此类型的bean,并为其打印典型消息。 尝试使用类型
JavaMailSender
声明
@Bean
@Component
@Service
。 此外,对于最终依赖项,请使用
@RequiredArgsConstructor

如果您使用Spring 4在构造函数上方添加
@Autowire
@RequiredArgsConstructor(onConstructor=@uuuu(@Autowired))
以供lombok使用。

您是否可以使用
@Autowired private final JavaMailSender
并告诉我结果?并删除
@allargsconstuctor
@HadesZazif仍然给我相同的错误您是否在任何
配置
类中定义
javamailssender
bean?只有当您定义了
Spring.mail.host
Spring.mail.jndi name
属性时,Spring才会提供该bean。正如@Setu所提到的,您需要定义属性。使用
--debug
启动应用程序,以获得一个报告,准确地告诉您为什么每个可能的自动bean都被激活或未被激活。您可以告诉我应该在哪里声明bean吗?我一直在努力解决这个问题。
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.4.4</version>
        <relativePath/> <!-- lookup parent from repository -->
    </parent>
    <groupId>com.example</groupId>
    <artifactId>aiurDB</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <name>Aiur</name>
    <description>back end login for aiur</description>
    <properties>
        <java.version>16</java.version>
    </properties>
    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-data-jpa</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-mail</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-security</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>

        <dependency>
            <groupId>org.postgresql</groupId>
            <artifactId>postgresql</artifactId>
            <scope>runtime</scope>
        </dependency>
        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
            <optional>true</optional>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>
        <dependency>
            <groupId>org.springframework.security</groupId>
            <artifactId>spring-security-test</artifactId>
            <scope>test</scope>
        </dependency>
    </dependencies>

    <build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
                <configuration>
                    <excludes>
                        <exclude>
                            <groupId>org.projectlombok</groupId>
                            <artifactId>lombok</artifactId>
                        </exclude>
                    </excludes>
                </configuration>
            </plugin>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-compiler-plugin</artifactId>
                <configuration>
                    <source>15</source>
                    <target>15</target>
                </configuration>
            </plugin>
        </plugins>
    </build>

</project>