2016-10-13 3 views
2

Я не буду писать Spring Boot Application весной, которая будет отслеживать каталог в окнах, а когда я меняю подпапку или добавляю новую или удаляю существующую, я хочу получить информацию об этом.Как контролировать папку/каталог весной?

Как я могу это сделать? Я прочитал это одно: http://docs.spring.io/spring-integration/reference/html/files.html и каждый результат при «весеннего файла сторожа» в гугле, , но я не могу найти решение ...

У вас есть хорошие статьи или пример с чем-то вроде этого? Я wan't это нравится, как это:

@SpringBootApplication 
@EnableIntegration 
public class SpringApp{ 

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

    @Bean 
    public WatchService watcherService() { 
     ...//define WatchService here 
    } 
} 

С уважением

+0

Вы должны исходить из класса 'FileSystemWatcher', а затем добавить 'FileChangeListener' (ы). Или вы можете использовать 'WatchService', представленный с Java 7: http://andreinc.net/2013/12/06/java-7-nio-2-tutorial-writing-a-simple-filefolder-monitor-using-the -watch-service-api/ –

ответ

2

Вы можете использовать чистый Java для этого нет необходимости весной https://docs.oracle.com/javase/tutorial/essential/io/notification.html

+0

Да, я знаю, но я хочу использовать весну, потому что после этого я могу, например, распечатать результат на веб-странице с помощью веб-карт или что-то еще ... – amkz

+0

@AdamKortylewicz Затем используйте Spring для веб-части, но то, что этот ответ говорит вам, заключается в том, что в вашем вопросе нет ничего специфичного для Spring (или даже связанного), и что решение заключается в использовании функции, существующей в базовой Java. – kaqqao

1

См Spring Integration Samples Repo есть пример файла под «основной» ,

В приложениях file-split-ftp есть более свежий и более сложный образец - он использует Spring Boot и конфигурацию Java Vs. xml, используемый в более раннем образце.

+0

В приложениях есть более новый образец. –

0

Не указывая здесь несколько указателей, которые могут вам помочь.

Вы можете взять код каталога WatchService от ответа Sławomir Czaja в:

Вы можете использовать чистый Java для этого нет необходимости весной https://docs.oracle.com/javase/tutorial/essential/io/notification.html

и обернуть этот код в работоспособные задачи. Эта задача может уведомить клиентов о изменении каталога с помощью SimpMessagingTemplate, как описано здесь: Websocket STOMP handle send

Затем вы можете создать планировщик, как описано здесь: Scheduling, который обрабатывает начало и reaccurance вашей задачи.

Не забудьте настроить планирование и поддержка WebSocket в вашем MVC-конфигурации, а также поддержку топать на стороне клиента (далее чтение здесь: STOMP over Websocket)

+0

Итак, как я могу сделать WatchService @Bean? Поскольку я не создавал метод, который возвращает WatchService как bean – amkz

+0

Вы могли бы, но чтобы иметь более управляемый подход, я бы использовал планировщик, который запускает задачу WatchService. –

Смежные вопросы