1. 程式人生 > >基於 Spring Boot 編寫控制檯程式

基於 Spring Boot 編寫控制檯程式

開發十年,就只剩下這套架構體系了! >>>   

誠然,當然世界上大部分 Spring Boot 程式是 Web 程式。將視線離開 Web 並放大到整個程式世界,則必將看到控制檯程式是更基礎也更廣泛的一類程式。

用 Java 編寫的控制檯程式也可以享受 Spring Boot 帶來的好處。

以 Spring Boot 為基礎開發控制檯程式,需要實現一個介面

@FunctionalInterface
public interface CommandLineRunner {
    void run(String... args) throws Exception;
}

例如:

class DartApplication implements CommandLineRunner {
    @Override
    public void run(String... args) {
        System.out.println("程式實際上的入口在這裡。");
    }
}

將這個類加上 @SpringBootApplication 註解,然後編寫一個帶主函式的類就可以了。

@SpringBootApplication
class DartApplication implements CommandLineRunner {
    @Override
    public void run(String... args) {
        System.out.println("程式實際上的入口在這裡。");
    }
}

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

當然,把主函式放進 DartApplication 裡面也可以

@SpringBootApplication
public class DartApplication implements CommandLineRunner {
    public static void main(String[] args) {
        SpringApplication.run(DartApplication.class, args);
    }

    @Override
    public void run(String... args) {
        System.out.println("程式實際上的入口在這裡。");
    }
}

Spring 提供的註解,Spring Boot 提供的方便的 starter,在這裡仍然能用。

例如自動裝配:

@Component
class Diablo {
    void firenova() {
        System.out.println("釋放烈火新星");
    }
}

@SpringBootApplication
public class DartApplication implements CommandLineRunner {

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

    @Autowired
    public DartApplication(Diablo diablo) {
        this.diablo = diablo;
    }

    private final Diablo diablo;

    @Override
    public void run(String... args) {
        this.diablo.firenova();
    }
}

總之,基於 Spring Boot 開發控制檯程式,就是實現個介面,