gpt4 book ai didi

java - Spring 注解: How to create autowire annotation for static/non static method with arguments

转载 作者:行者123 更新时间:2023-12-01 13:47:54 26 4
gpt4 key购买 nike

  1. 使用注释;如何将参数值传递给方法?
    下面代码中的示例“在 Autowiring confProps 实例时,如何通过注释传递 ​​loadProperties API 方法的参数(2 个字符串)值”?

  2. 我可以在方法参数级别使用@javax.inject.Named;但是 Spring 中是否有任何等效项可以在方法参数级别使用?我无法在参数级别使用 @Component。

  3. 我可以使用这些 @Value("#{XXX}") 或 @Qualifier("") 来解决我的问题吗?这两个在方法参数级别受支持。

如果我在这里做的任何其他配置错误,请纠正我。

@Configuration
Class Utilities {

@Bean(name = "loadProperties")
@Scope("prototype")
public static Properties loadProperties(String propsFileName, String type) throws Exception {
return Utilities.loadPropertiesFile(p_propsFileName);
}

}


@Service
@Scope(value = BeanDefinition.SCOPE_SINGLETON)
@Qualifier("strmContMgr")
public class StreamingControllerManager {

@Autowired
@Qualifier("loadProperties")
Properties confProps;
}

最佳答案

与任何技术一样,Spring 也有其不足之处和局限性。从您的示例开始,您已经开始尝试使用 Spring 完成所有事情(甚至是最简单的事情)。看看你是如何到达那里的,这可能是有道理的,但你仍然陷入了困境。

或者换句话说:仅仅因为您可以并不意味着这样做就是明智

以下是您的问题的解决方案:

@Configuration
Class StreamContollerConfig {

@Bean
public Properties streamControllerProperties() throws Exception {
return Utilities.loadPropertiesFile("some/fixed/name");
}
}

尽量避免运行时“可配置”bean。它们给您的产品增加了很多复杂性,但通常没有什么好处。

从 block 构建您的应用程序,并使用一个最终的“配置” block 将所有内容连接和编织在一起。这样,每个 block 都保持独立且简单。

关于java - Spring 注解: How to create autowire annotation for static/non static method with arguments,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20210307/

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