2015-09-17 54 views
5

Tôi đang sử dụng Spring Boot 1.3.0.M5 và tôi đang cố gắng tận dụng lợi thế của devtools. Điều này cho phép bạn thực hiện các thay đổi đối với ứng dụng của mình trong khi phát triển và khởi động sẽ tải lại ứng dụng của bạn. Tôi đã thấy công việc demo này trong STS sử dụng Java và Maven.Spring Boot devtools IntelliJ

Tôi đang cố gắng sử dụng Groovy & Gradle trong IntelliJ 14.1 và tôi đang gặp một số vấn đề. Đầu tiên là Gradle Build phụ thuộc của tôi.

dependencies { 
    compile("org.springframework.boot:spring-boot-devtools") 
    compile("org.springframework.boot:spring-boot-starter-web") 
    compile("org.codehaus.groovy:groovy") 
    testCompile("org.springframework.boot:spring-boot-starter-test") 
} 

Tôi tạo ra một bộ điều khiển với một bản đồ cho "/"

package demo 

import org.springframework.web.bind.annotation.RequestMapping 
import org.springframework.web.bind.annotation.RestController 

@RestController 
class HomeController { 

    @RequestMapping("/") 
    public String home(){ 
     "Hello, SpringOne 2GX!" 
    } 

} 

tôi có thể chạy các ứng dụng và ghé thăm http://localhost:8080 và xem in chuỗi ra màn hình. Nếu tôi thực hiện thay đổi đối với tệp thì không có gì xảy ra vì IntelliJ không biên dịch về thay đổi. Nếu bạn vào Build> Make Project mặc dù tôi có thể thấy Spring Boot trong giao diện điều khiển tải lại. Vì vậy, điều này dường như được làm việc, nhưng nếu tôi quay trở lại URL gốc tôi nhận được lỗi sau đây là cơ bản những gì bạn sẽ thấy nếu bạn không có bộ điều khiển tại chỗ.

Nhãn trắng Lỗi trang

Ứng dụng này không có bản đồ rõ ràng cho/lỗi, vì vậy bạn đang nhìn thấy này như một dự phòng.

Thu Sep 17 10:43:25 EDT 2015 Đã xảy ra lỗi không mong muốn (loại = Không Đã tìm thấy, trạng thái = 404). Không có thông báo nào

Bất kỳ ai biết tại sao tải lại không hoạt động chính xác với tôi?

+0

nó có hoạt động nếu bạn chạy 'lớp học grad' thay thế không? – cfrick

+0

@cfrick không có vấn đề tương tự. Khởi động lại Spring Boot và tôi nhận được lỗi nhãn trắng. – cfaddict

+0

và bạn chạy lệnh này với 'bootRun' gradle? – cfrick

Trả lời

5

Gần đây tôi đã gặp sự cố tương tự. Vấn đề là trong cách devtools chặn thay đổi. Theo mặc định, nó chờ 1 giây để biên dịch hoàn thành. Nếu lớp không tồn tại trên classpath sau thời gian đó thì devtools coi class đã bị xóa và khởi động lại ứng dụng mà không có nó.

Hầu hết thời gian mất 3 giây để thu được kết quả biên dịch trên máy của tôi. Do đó, lớp học bị xóa trong khi khởi động lại.

Các giải pháp cho vấn đề này là để thiết lập spring.devtools.restart.pollInterval tài sản trong application.properties tập tin vào giá trị lớn hơn 1000 (đối với tôi 4000 hoạt động tốt).

0

Sẽ ổn nếu bạn chỉ định gói chính xác cần quét. Chẳng hạn như:

@ComponentScan(basePackages = "com.lsj.web") 
@EnableAutoConfiguration 
public class PlatformApplication { 

    public static void main(String[] args) throws Exception { 
     SpringApplication.run(PlatformApplication.class, args); 
    } 
} 
Các vấn đề liên quan