0

顧客が購入するたびにメールを送信する次のサービスがあります

@Component
public class EmailerService extends JavaMailSenderImpl {

    public boolean sendEmail(String userFullName, String recipient, String subject, String content,String replyTo)
            throws AddressException, MessagingException {
        initJavaMailProps(replyTo);
        Message message = new MimeMessage(getSession());
        message.setFrom(new InternetAddress(senderEmailAddress));
        message.setRecipients(Message.RecipientType.TO,
                InternetAddress.parse(recipient));
        message.setSubject(subject);
        if (withGreeting())
            content = "Dear " + userFullName + ",\n\n"+content;
        if (withRegards())
            content += "\n\nBest Regards, \n\nDNA G2 Support";
        message.setText(content);
        Transport.send(message);
        return true;
    }

私の XML 構成にはSpring profile、「通常」と「クラウド」という名前の 2 つがあります。ここで、「開発」と言う新しいプロファイルを追加し、開発中にこのサービスを「無効」にしたいと思います。これは、ローカル テスト中にまだ多くのメールが送信されているためです。これを達成する最も簡単な方法は何ですか?

4

1 に答える 1

1

「通常」と「クラウド」に言及するときは、maven プロファイルについて話していると思います。

1) pom.xml の Maven プロファイルにプロパティを追加します (Development が false であることに注意してください)。便宜上、Development プロファイルはデフォルトのプロファイルでもあります。別のプロファイルを実行する必要がある場合は、 から実行できますmvn package -P cloud

  <profiles>
    ...
    <profile>
      <id>normal</id>
      <properties>
        <profile.email.enabled>true</profile.email.enabled>
      </properties>
    </profile>
    ...
    <profile>
      <id>cloud</id>
      <properties>
        <profile.email.enabled>true</profile.email.enabled>
      </properties>
    </profile>
    ...
    <profile>
      <id>Development</id>
      <activation>
          <activeByDefault>true</activeByDefault>
      </activation>
      <properties>
        <profile.email.enabled>false</profile.email.enabled>
      </properties>
    </profile>
    ...
  </profiles>

2) リソース フィルタリングを有効にして、この変数を Maven ビルドに挿入できるようにする必要があります。ここでは、/src/main/resources 内のすべてのファイルを Maven プロパティでフィルタリングする必要があると言っています。

<project>
  ...
  ...
  <build>
    ...
    <resources>
      <resource>
        <directory>src/main/resources</directory>
        <filtering>true</filtering>
      </resource>
      ...
    </resources>
    ...
  </build>
  ...
</project>

2) spring .property ファイル (つまり、environment.properties) の 1 つに以下を追加します。ここでは、プロパティ email.enabled が maven プロファイルに含まれるものをすべて使用すると言っています。

email.enabled=$(profile.email.enabled);

3) メール サービスに次のインスタンス変数を追加します。これにより、プロパティが .property ファイルから変数 emailEnabled に挿入されます。

@Value("email.enabled")
private boolean emailEnabled;

4)これで、サービスでそのチェックを行うことができます

if (emailEnabled) {
  ...
}
于 2013-11-11T10:45:29.060 に答える