Je souhaite être régulièrement informé d'informations spécifiques lors de la création d'une application Web avec SpringBoot! !! !! Après avoir étudié la méthode de pensée, j'ai pu la mettre en œuvre facilement de manière inattendue, alors je l'ai résumée.
Accédez à l'URL ci-dessous, lisez le code QR affiché et ajoutez LINE Notify comme ami.
https://notify-bot.line.me/ja/
Après cela, après vous être connecté avec votre propre compte LINE sur la même page, passez à "Ma page" → "Émettre un jeton d'accès". Entrez le nom du token (affiché en haut du message lorsque le message est effectivement notifié sur LINE) et sélectionnez n'importe quelle salle de conversation pour afficher le token.
Veuillez noter que le jeton est affiché *** une fois ***. Cependant, vous pouvez en émettre autant que vous le souhaitez, alors ne vous inquiétez pas pour cela.
Créez un bean à enregistrer dans le conteneur DI pour envoyer des notifications à LINE. Aucune dépendance particulière n'est requise.
LineNotify.java
@Component
public class LineNotify {
public void executeNotification() {
String message = "Message que vous souhaitez envoyer";
String token = "Jeton obtenu";
sendNotification(message,token);
}
public void sendNotification(String message, String token) {
HttpURLConnection connection = null;
try {
URL url = new URL("https://notify-api.line.me/api/notify");
connection = (HttpURLConnection) url.openConnection();
connection.setDoOutput(true);
connection.setRequestMethod("POST");
connection.addRequestProperty("Authorization", "Bearer " + token);
try (OutputStream outputStream = connection.getOutputStream();
PrintWriter writer = new PrintWriter(outputStream)) {
writer.append("message=").append(URLEncoder.encode(message, "UTF-8")).flush();
}
} catch (Exception e) {
} finally {
if (connection != null) {
connection.disconnect();
}
}
}
}
Transmettez le message et le jeton que vous souhaitez envoyer à l'argument de la méthode sendNotification et exécutez la communication POST vers l'URL spécifiée. L'authentification OAuth est requise pour envoyer des notifications avec LINE Notify, mais l'authentification est exécutée en ajoutant ʻAuthorization: Bearer <access_token> `à l'en-tête de la demande dans la méthode.
Pour activer la fonction d'exécution de tâche planifiée
Utilisez l'annotation @ EnableScheduling
sur la classe principale.
Application.java
@SpringBootApplication
@EnableScheduling //···ajouter à
public class Application {
public static void main(String[] args) {
SpringApplication.run(Application.class, args);
}
}
Cela vous permet de découvrir n'importe quel bean dans un conteneur DI qui utilise l'annotation @ Scheduled
.
Revenons donc à la classe qui a implémenté la fonction de notification et ajoutons une annotation à la méthode que nous voulons réellement exécuter périodiquement.
LineNotify.java
@Component
public class LineNotify {
@Scheduled(cron = "0 * * * * *", zone = "Asia/Tokyo") //···ajouter à
public void executeNotification() {
String message = "Message que vous souhaitez envoyer";
String token = "Jeton obtenu";
sendNotification(message,token);
}
...
Une fois cela fait, tout ce que vous avez à faire est de démarrer le serveur et la tâche sera exécutée et vous serez averti.
cron
spécifie le cycle d'exécution des tâches et zone
spécifie le fuseau horaire.
À partir de la gauche, cron
peut définir des déclencheurs pour" secondes, minutes, heures, mois, jours, jours ", et l'exemple de code ci-dessus est défini pour exécuter la tâche à 0 seconde par minute. Par exemple, si vous souhaitez exécuter une tâche tous les jours à 9h00
Définissez quelque chose comme "cron = "0 0 9 * * *"
".
Il existe d'autres options telles que ʻinitialDelay qui spécifie l'exécution n secondes après le démarrage de l'application et
fixedDelay` qui spécifie l'exécution n secondes après la fin de l'exécution du processus de la méthode, vous pouvez donc la personnaliser relativement librement. peut faire.
Notification par LINE Notify de Java implémentée en 5 minutes ・ Comment exécuter périodiquement des tâches avec Spring Boot
Recommended Posts