gpt4 book ai didi

java - Spring如何在spring上下文中使用非托管外部库类

转载 作者:太空宇宙 更新时间:2023-11-04 10:29:31 25 4
gpt4 key购买 nike

我有 spring 配置类。因为我有一个类 ServerConfigurationService,它是外部库类,它没有标记为 spring bean。ServerConfigurationService 类用于以静态方式读取属性,如下

System.out.println(ServerConfigurationService.getString( "pii.encryption.cipherString", null));

ServerConfigurationService.java 类位于外部库

public class ServerConfigurationService
{
public final static String CURRENT_SERVER_URL = org.sakaiproject.component.api.ServerConfigurationService.CURRENT_SERVER_URL;

public final static String CURRENT_PORTAL_PATH = org.sakaiproject.component.api.ServerConfigurationService.CURRENT_PORTAL_PATH;

/**
* Access the component instance: special cover only method.
*
* @return the component instance.
*/
public static org.sakaipro

......................................................................

}

但是这个打印空值带有以下堆栈跟踪。

java.lang.Exception: traceback at org.sakaiproject.util.NoisierDefaultListableBeanFactory.destroySingletons(NoisierDefaultListableBeanFactory.java:94) at org.springframework.context.support.AbstractApplicationContext.destroyBeans(AbstractApplicationContext.java:1006) at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:551) at org.sakaiproject.component.impl.SpringCompMgr.init(SpringCompMgr.java:160) at org.sakaiproject.component.cover.ComponentManager.getInstance(ComponentManager.java:98) at org.sakaiproject.component.cover.ComponentManager.get(ComponentManager.java:107) at org.sakaiproject.component.cover.ServerConfigurationService.getInstance(ServerConfigurationService.java:54) at org.sakaiproject.component.cover.ServerConfigurationService.getString(ServerConfigurationService.java:206) 2018-05-03 09:58:11,701 WARN main org.sakaiproject.component.impl.SpringCompMgr - Configuration: Unable to get and dump out the registered server config values because no ServerConfigurationService is available - this is OK if this is part of a test, this is very bad otherwise 2018-05-03 09:58:11,701 WARN main org.sakaiproject.component.impl.SpringCompMgr - get(org.sakaiproject.component.api.ServerConfigurationService):

@ComponentScan(basePackages = "org.sakaiproject.log.api")
@Configuration
public class SpringCryptoContext {



public SpringCryptoContext() {

}


public static void main(String[] args) throws Exception {

ApplicationContext context = new AnnotationConfigApplicationContext(
SpringCryptoContext.class);

System.out.println(ServerConfigurationService.getString(
"pii.encryption.cipherString", null));

}

}

最佳答案

您应该在应用程序中将您的类注册为 bean。因为如果您尝试将您的类注入(inject)任何其他 bean(即 Controller /服务)中,它将不可用,因为它的对象在 spring 容器中不可用。

在配置文件中将自定义类声明为 bean,如下所示:

@Bean
public ServerConfigurationService getServerConfigurationService(){
// configure your object.
}

关于java - Spring如何在spring上下文中使用非托管外部库类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50175005/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com