我有一个基于Spring的模块,我需要与现有的/遗留的Java"独立的"应用程序。基于Spring的模块是 AuthenticationProvider (spring-security)的简单实现。
我想要做的是在Java应用程序中连接基于spring的模块,我只需从Java代码中调用该提供程序上的authenticate方法即可。
这可能吗?需要什么?
是否可以将spring模块包装在普通的Java库中,并将其用作我的独立Java应用程序的API接口?
我已经搜索过具体的教程,但似乎没有符合此要求的教程。
答案 0 :(得分:0)
好的,我必须直接使用 ApplicationContext ,这样我才能在我的应用程序中管理Spring框架。
public class MyApplication {
private static final Logger LOGGER = LoggerFactory.getLogger(MyApplication.class);
public static void main(String[] args) {
MyAuthenticationProvider authProvider;
try (ConfigurableApplicationContext springApplicationContext = new AnnotationConfigApplicationContext(
MySpringConfiguration.class)) {
springApplicationContext.registerShutdownHook();
authProvider = springApplicationContext.getBean(MyAuthenticationProvider.class);
}
Authentication request = new UsernamePasswordAuthenticationToken("foo", "foo");
Authentication result = authProvider.authenticate(request);
if (result.isAuthenticated()) {
LOGGER.debug("User is authenticated");
} else {
LOGGER.debug("Cannot authenticate user.");
}
}