OSGI Blueprint里面配置class,set方法必须是void的吗?

发布于 2021-11-24 19:47:40 字数 915 浏览 818 评论 4

在Blueprint.xml配置文件里面

<bean id="nginx" class="com.lala.osgi.server.ApacheServer">
        <property name="id" value="10010"/>
        <property name="name" value="1.19.2"/>
        <property name="port" value="80"/>
        <property name="address" value="127.0.0.1"/>
</bean>



要配置这个class,这些属性必须要有get,set方法

现在的问题是:我的set方法不是void的

比如说:

public HttpServer setPort(Integer port) 
	{
		this.port = port;
		return this;
	}



这种,写法 在spring是可以的。但是在osgi的blueprint里面不行,一直报错:

org.osgi.service.blueprint.container.ComponentDefinitionException: No setter for port property

请问,这种问题如何解决

(PS, set方法不能改,不能改成void的)

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(4

爱你是孤单的心事 2021-11-30 09:41:15

关键是:setPort方法以及被占用了,而且不是void返回值

眉黛浅 2021-11-30 06:33:32

一般的做法是,如果是玩链式调用,会写成两个方法:

public void setPort(...){...}   // 专用于 set/get

public HttpServer port(...){...;  return this;}    // 链式

祝你好运。。。

蓝颜夕 2021-11-26 17:30:39

默认不支持非void方法的注入,需要加上:

ext:field-injection="true"

就可以了

如:

<bean id="configuration" class="org.activiti.engine.impl.cfg.JtaProcessEngineConfiguration" ext:field-injection="true" />

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文