Giriş
Kodda değişiklik yapınca Spring'i tekrar yüklüyor. Böylece geliştirme hızlanıyor. Aslında restart yaptığı, yani reloading yapmadığı için bence halen çok faydalı değil.
Maven
Şu satırı dahil ederiz
<dependency><groupId>org.springframework.boot</groupId> <artifactId>spring-boot-devtools</artifactId> <scope>runtime</scope> <optional>true</optional> </dependency>
Bunu ekleyince Spring'i çalıştırınca LiveReload 35729 portunun kullanıldığını görebiliriz. Açıklaması şöyle
Once you start the application you can see below logs saying that the application is started and the LiveReload server is running on port 35729.This means our application's live restart is enabled. now any change you do in code will be directly available.
Örnek
Şöyle yaparız
spring: devtools: restart: enabled: true # Set to enable hot deployment additional-paths: src/main/java # restart directory exclude: WEB-INF/** thymeleaf: cache: false # Use Thymeleaf template engine, turn off caching
Açıklaması şöyle
By default, changing resources in /META-INF/maven, /META-INF/resources, /resources, /static, /public, or /templates does not trigger a restart but does trigger a live reload.If you want to customize these exclusions, you can use the sprint.devtools.restart.exclude property.For example, exclude only /static, /public you would set the following properties:spring:devtools:restart:exclude: "static/**,public/**"If you want to keep these defaults and add additional exclusions, use the sprint.devtools.restart.additional-exclude property instead.
IntelliJ IDEA Community Edition İle Tetikleme
Ben başka bir yolunu bulamadım. Açıklaması şöyle. Yani kısaca Build menüsü altındaki seçenekler kullanılıyor. Daha kolay bir yolunu bilen varsa söylesin :)
IntelliJ IDEA Ultimate Edition İle TetiklemeAs DevTools monitors classpath resources, the only way to trigger a restart is to update the classpath. The way in which you cause the classpath to be updated depends on the IDE that you are using. In Eclipse, saving a modified file will cause the classpath to be updated and trigger a restart. In IntelliJ IDEA, building the project (Build → Make Project) will have the same effect.
Sanırım yolu böyle
Livereload iki kısımdan oluşuyor.
1. Livereload Sunucusu
2. Tarayıcıdaki Livereload eklentisi
Bir örnek burada.
Livereload sunucusunu kapatmak için şöyle yaparız
spring.devtools.livereload=false
Docker
Linux'ta kullanılan bir yöntem burada. inotify-tools ile src dizini izleniyor ve değişikli varsa tekrar derleniyor.
FileSystemWatcher Sınıfı
Şu satırı dahil ederizz
Örnekimport org.springframework.boot.devtools.filewatch.FileSystemWatcher;
Şöyle yaparız
@Configuration public class FileWatcherConfig { @Bean public FileSystemWatcher fileSystemWatcher() { FileSystemWatcher fileSystemWatcher = new FileSystemWatcher(true, Duration.ofMillis(5000L), Duration.ofMillis(3000L)); fileSystemWatcher.addSourceDirectory(new File(“C:/opt”)); fileSystemWatcher.addListener(new MyFileChangeListener()); fileSystemWatcher.start(); return fileSystemWatcher; } @PreDestroy public void onDestroy() throws Exception { fileSystemWatcher().stop(); } } public class MyFileChangeListener implements FileChangeListener { @Override public void onChange(Set<ChangedFiles> changeSet) { for (ChangedFiles cfiles:changeSet) { for (ChangedFile cfile:cfiles.getFiles()) { System.out.println(cfile.getType()+”:”+cfile.getFile().getName()); } } } }
Hiç yorum yok:
Yorum Gönder