当前位置: 首页 > 知识库问答 >
问题:

Spring、Bean、constructor-arg作为字符串

花高爽
2023-03-14
<bean id = "database" class = "com.price.compare.service.DAO" scope="singleton">
    <constructor-arg index="0" type = "java.lang.String" value="localhost"/>
    <constructor-arg index="1" type = "java.lang.String" value="5432"/>
</bean>

    @Component
    public class DAO {
        private final String host;
        private final String port;
        public DAO(String host, String port) {
            this.host = host;
            this.port = port;
        }
        @PostConstruct
        public void init() {
            // custom initialization logic
        }
    }

共有1个答案

徐焱
2023-03-14

您已经定义了bean两次;并作为@componentbean使用。

通过使用@component注释,可以在组件扫描期间拾取bean。但是,由于在组件扫描过程中所需的字符串参数不清楚,因此引发异常。

bean中删除@component注释,使XML配置bean成为唯一的DAObean。

 类似资料:
  • 问题内容: 我想用注释替换XML applicationContext配置。 如何用固定的构造函数参数替换简单的bean? 范例: 我正在阅读有关@Value的一些解释,但我不太了解如何传递一些固定值… 部署Web应用程序时是否可以加载此bean? 谢谢。 问题答案: 我认为您所追求的是: 您还可能希望通过系统属性来配置这些文件。您可以使用注释通过和语法读取系统属性。 为此,您可以在注释中使用不同

  • 我们在代码库中有一个处理程序类的层次结构,它们实现了一种责任链原则。有一个抽象父类,它由几个子类扩展,这些子类也在其构造函数中接收抽象 我们现在需要将具体子类之一的实例注入到新实现的服务类中,我们应该用XML来配置它。我们可以为抽象父类配置一个抽象bean,但这个bean似乎不被允许用作具体子bean的构造函数-arg 有什么办法可以克服这一点吗?处理程序类层次结构是遗留代码,我们现在无法修改它们

  • 问题内容: 我如何使用该字段注入包含Map的属性文件,以用作其他构造函数arg。 从属性文件加载地图 该bean当前使用以下命令进行设置: 相当于Java: 谢谢 问题答案: 像这样: 这利用了使用任意静态工厂方法创建bean的能力,在这种情况下,使用工厂工厂方法来创建bean,然后将其注入到的适当构造函数中。

  • 问题内容: 我定义了以下方法,返回一个代表子资源定位器(Jersey)的Bean: 在中定义了原型范围。 问题:在运行时传递构造器参数时,将Bean注入当前类的替代方法是什么? 我不愿意从应用程序上下文中显式地获取bean。 编辑@peeskillet: 子资源: 问题答案: 您可以做的是inject ,并通过它来解析子资源实例。 当子资源定位器方法返回托管资源类的实例时,可以利用资源上下文。此类

  • 问题内容: 我想创建以下具有方法 setThresholds(Number highThreshold,Number lowThreshold)的 Spring bean(一个JMX监视器 ) 。 我可以在配置中调用该方法(带有两个参数)吗?我不想编写代码来调用它。 问题答案: 可以通过使用 MethodInvokingFactoryBean(Spring [4.x]( https://docs.

  • 因此,我对新的功能感到非常兴奋,但我对它如何与交互有一个疑问。可以通过更改前缀来声明具有配置属性的相同类型的多个bean,例如: 但是据我从留档中所知,构造函数绑定方法需要您直接注释类型,这(我相信)必然会阻止您将一个类的多个实例注入配置属性。 这是期望得到支持的事情吗?它已经支持,我已经错过了什么吗?我认为理论上我可以用另一种类型包装构造函数绑定的类,但这似乎有点像黑客,如果可能的话,我宁愿避免