2017-12-01 6 views
1

Spring Initializer、埋め込みTomcat、Thymeleafテンプレートエンジン、およびパッケージを実行可能なJARファイルとして使用して、Spring Boot Webアプリケーションを生成しました。使用Spring Boot 2.0.0.M6でのSpringスケジューリング

技術:

春ブーツ2.0.0.M6、Javaの8、達人。

私は

com.iberia.task.scheduled 

    public class IberiaAssetHandlerJob { 


     private static final SimpleDateFormat dateFormat = new SimpleDateFormat("HH:mm:ss"); 

     @Scheduled(cron = "0 * * * * ?") 
     public void reportCurrentTime() { 

      System.out.println("The time is now {}" + dateFormat.format(new Date())); 

     } 
    } 

は、メッセージ毎分

と私のメインクラス

@SpringBootApplication 
@EnableScheduling 
@Import({SecurityConfig.class}) 
public class IberiaWebUtilsApplication { 

    public static void main(String[] args) { 
     SpringApplication.run(IberiaWebUtilsApplication.class, args); 
    } 
} 

を見ることを期待し、このクラスを作成しましたが、私は、コンソール内の任意のメッセージが表示されません

答えて

0

@Scheduledアノテーションは、SpringマネージドBeanでのみ機能します。 @Component注釈をIberiaAssetHandlerJobの上に置かず、手動で(@Bean注釈を使用して)Beanを作成していませんでした。また


、ロギングを使用することをお勧めしますなぜPrintStreamSystem.outで使用される基本となるクラス)isn't necessarily thread-safeは、あなたにもSystem.outに書き込む他のスレッドを持っているので、もし、あなたが奇妙な結果を得ることができ、それはだということに注意してくださいフレームワーク(彼の答えで述べたlzagkaretosのような)。これはまた、例えば、同様{}のようなプレースホルダを使用することができます:

logger.info("The time is now {}", dateFormat.format(new Date())); 

はなく、この場合、単一の文字列にすべてを連結するよりも、複数の引数を使用してください。

0

Loggerを使用してSystem.out.println(...)を変更する必要があります。彼の答えにはg00glen00bのように、Spring管理Beanとしてクラスを宣言します。

private static final Logger log = Logger.getLogger(IberiaAssetHandlerJob.class); 

log.info("The time is now {}" + dateFormat.format(new Date())); 
関連する問題