2017-12-01 5 views
1

Spring Initializer, 임베디드 Tomcat, Thymeleaf 템플릿 엔진 및 패키지를 실행 가능한 JAR 파일로 사용하여 스프링 부트 웹 애플리케이션을 생성했습니다. 사용스프링 부트 2.0.0.M6의 스프링 스케줄링

기술 :

봄 부팅 2.0.0.M6, 자바 8 받는다는.

내가 콘솔에서 모든 메시지가 표시되지

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

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

하지만이 클래스 메시지마다 분

를 볼 것으로 예상

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())); 

     } 
    } 

내 메인 클래스를 만들었습니다

답변

0

@Scheduled 주석은 스프링 관리 빈에서만 작동합니다. IberiaAssetHandlerJob 상단에 @Component 주석을 넣지 않았으며 수동으로 (@Bean 주석을 사용하여) bean을 만들지 않았습니다.


또한, 당신은뿐만 아니라 System.out에 쓰는 다른 스레드가 있다면, 당신은 이상한 결과를 얻을 수 있도록이 로깅을 사용하는 것이 좋습니다 왜 PrintStream (System.out에서 사용하는 기본이되는 클래스) isn't necessarily thread-safe은, 그건 알고 있어야 프레임 워크 (그의 대답에 언급 된 lzagkaretos). 이 또한 예를 들어,뿐만 아니라 {} 같은 자리 표시자를 사용할 수 있습니다 :

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

오히려이 경우 하나의 문자열로 모든을 연결보다 여러 인수를 사용해야합니다.

0

로거로 System.out.println(...)을 변경해야합니다. 그의 대답에 g00glen00b 상태로 봄 관리 빈으로 클래스를 선언합니다.

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

log.info("The time is now {}" + dateFormat.format(new Date())); 
관련 문제