我将使用包含身份验证的 spring boot 创建一个 javafx 客户端和 http 服务器。
服务器计划使用 spring 安全性进行登录,并使用 appache httpClient 进行客户端登录。
是否可以从此结构创建登录服务?
还是我应该选择其他方法?
我了解 Spring 安全性使用 cookie 和会话进行身份验证。
您可以使用JavaFX
和Spring-Boot
创建混合应用程序。当然,您也可以使用Spring Security
。我建议您使用maven
项目来打包您的混合应用程序。
是否可以从此结构创建登录服务?
是的,你可以!
还是我应该选择其他方法?
由于您可以将spring-security
用于登录服务,因此您可能不需要其他方法,但可以使用很多authentication-authorization
库。
为什么选择Apache-HttpClient?
您似乎打算使用Apache-HttpClient
来绑定 JavaFX 和 Spring-Boot 服务。实际上,您可以在 JavaFX 应用程序中使用登录服务,而无需将该服务公开为 Restful 服务。您可以使用 Spring 的依赖注入来连接 JavaFX 控制器类中的服务。
@Autowired
private LoginService loginService;
如果您对弹簧应用程序感到满意,您还可以使用弹簧提供的功能,例如Spring Data JPA
等。
SpringBoot + JavaFX Application
下面是混合应用程序的简单示例,
import javafx.stage.Stage;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.builder.SpringApplicationBuilder;
import org.springframework.context.ConfigurableApplicationContext;
@SpringBootApplication
public class YourApp extends Application {
protected ConfigurableApplicationContext springContext;
public static void main(final String[] args) {
Application.launch(args);
}
@Override
public void init() throws Exception {
springContext = springBootApplicationContext();
}
@Override
public void start(Stage stage) throws Exception {
....
}
@Override
public void stop() throws Exception {
springContext.close();
}
private ConfigurableApplicationContext springBootApplicationContext() {
SpringApplicationBuilder builder = new SpringApplicationBuilder(YourApp.class);
String[] args = getParameters().getRaw().stream().toArray(String[]::new);
return builder.run(args);
}
}
在这里无法定义应用程序boilerplate
,但上面的代码可以启动应用程序。
PS:你可以查看这个JavaFXSpringBootApp样板来审查所需的想法。