将基于Spring的java模块集成到独立的Java应用程序中

时间:2015-09-30 11:56:14

标签: java spring spring-security

我有一个基于Spring的模块,我需要与现有的/遗留的Java"独立的"应用程序。基于Spring的模块是 AuthenticationProvider (spring-security)的简单实现。

我想要做的是在Java应用程序中连接基于spring的模块,我只需从Java代码中调用该提供程序上的authenticate方法即可。

这可能吗?需要什么?

是否可以将spring模块包装在普通的Java库中,并将其用作我的独立Java应用程序的API接口?

我已经搜索过具体的教程,但似乎没有符合此要求的教程。

1 个答案:

答案 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.");
    }

}