为了账号安全,请及时绑定邮箱和手机立即绑定

如何只加载一次属性文件?

如何只加载一次属性文件?

墨色风雨 2023-08-09 16:59:51
我正在通过从属性文件获取数据来读取电子邮件消息。我正在使用计时器计划在一段时间后定期读取新消息。我该如何执行此操作?TimerSchedule.javapublic class TimeScheduler{    public static void main(String[] args)    {        Timer timer = new Timer();        GmailConfiguration gmailConfiguration = new GmailConfiguration();        TimerTask timerTask = new TimerTask()        {            @Override            public void run()            {                gmailConfiguration.configure();            }        };        timer.scheduleAtFixedRate(timerTask, 500, 30000);    }}我正在从 GmailConfiguration.java 中的属性文件获取数据这是我的 GmailConfiguration.javapublic class GmailConfiguration{    private static final Logger LOGGER = LoggerFactory.getLogger(GmailConfiguration.class);    public void configure()    {        JSONParser parser = new JSONParser();        try        {            String propertyFileName = "emailServer.properties";            InputStream inputStream = getClass().getClassLoader().getResourceAsStream(propertyFileName);            JSONObject jsonObject = (JSONObject) parser.parse(new InputStreamReader(inputStream, StandardCharsets.UTF_8));            JSONArray jadata = (JSONArray) jsonObject.get("Servers");            int len = jadata.size();            AccessMailMessages readGmail = new AccessMailMessages();            JSONObject server;            String name;            String host;            String username;            String password;            int port;            String folderName;            for (int i = 0; i < len; i++)
查看完整描述

1 回答

?
拉莫斯之舞

TA贡献1820条经验 获得超10个赞

Configuration将类与类分开EmailReceiver:


// Utilizes "Singleton" pattern

class GmailConfiguration {

  private static final GmailConfiguration INSTANCE = new GmailConfiguration();


  boolean isConfigured;

  String host;

  String port;

  //etc.


  public void configure() {

    if (!isConfigured) {

      // read in the properties, populate host/port etc.

      isConfigured = true;

    }

    // when called for the second time, reading won't happen

  }

}

然后,至于接收电子邮件:


class GmailReceiver {

  public void receive() {

    AccessMailMessages readGmail = new AccessMailMessages();

    GmailConfiguration config = GmailConfiguration.INSTANCE;

    config.configure();

    readGmail.recieveGmail(config.getName(),

        config.getHost(), 

        config.getPort() /* etc */);


  }

}

并确保只安排GmailReceiver


查看完整回答
反对 回复 2023-08-09
  • 1 回答
  • 0 关注
  • 70 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信