版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/m0_37681914/article/details/80224790
pom配置:
<properties>
<java.version>1.8</java.version>
</properties>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.0.1.RELEASE</version>
</parent>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter</artifactId>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
启动类:
package com.renleilei.graduation;
import javafx.application.Application;
import javafx.stage.Stage;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.boot.CommandLineRunner;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import java.util.Objects;
import java.util.function.Consumer;
/**
* @author weijun.zou
* Create on 2018/5/7
* 启动入口
*/
@SpringBootApplication
public class StartMain extends Application
implements CommandLineRunner, Consumer<Stage> {
/**
* 窗口启动接口,原理:
* 1. run(String... args)中给springStartMain赋值
* 2. start(Stage primaryStage)中调用了springStartMain来操作primaryStage
* 3. 而springStartMain实际上是spring管理的StartMain一个对象,因此accept方法中可以操作spring管理的任何对象
*/
private static Consumer<Stage> springStartMain;
@Override
public void run(String... args) throws Exception {
//将springStartMain赋值为spring管理的实例
springStartMain = Objects.requireNonNull(this);
}
@Override
public void start(Stage primaryStage) throws Exception {
//使用spring管理的实例操作primaryStage
springStartMain.accept(primaryStage);
}
/**
* 测试:
* 例如使用spring注入hello到title
*/
@Value("hello")
private String title;
@Override
public void accept(Stage stage) {
//设置标题
stage.setTitle(title);
//stage的标题将会是hello
stage.show();
}
public static void main(String[] args) {
//启动spring-boot
SpringApplication.run(StartMain.class, args);
//启动窗口
Application.launch(args);
}
}