我有下面的路由和bean来从属性文件中获取消息。在一些消息中,我必须替换消息中的参数。因此,我在bean中寻找一个不编写2个方法的解决方案,一个是带参数的(getMessageWitArgs
),另一个是不带参数的(getMessage
)。
它是否可以通过在路由中使用DSL来摆脱bean中的getMessagewith Args
,或者使getMessage
中的参数可选,以便我在bean中最后有一个方法?
路线
@Override
public void configure() throws Exception {
from("activemq:queue:1234")
.setHeader("functionId", simple(FUNCTION_ID))
.process(new Processor() {
@Override
public void process(Exchange exchange) throws Exception {
Message message = exchange.getIn();
message.setHeader("messageId", "notice_1234_error_messageBox_1");
// List<String> arguments = Arrays.asList("Test1", "Test2", "Test3");
// message.setHeader("arguments", arguments);
}
})
.setHeader("message").method("messageBean", "getMessage( ${header.functionId}, ${header.messageId})")
//.setHeader("message").method("messageBean", "getMessageWithArgs( ${header.functionId}, ${header.messageId}, ${header.arguments})")
.log("after calling getMessageWithoutValidation: ${body}");
}
豆
@Component
public class MessageBean {
public String getMessage(@Header("functionId") String functionId,
@Header("messageId") String messageId) {
//Doing something to get the message
return message;
}
public String getMessageWithArgs(@Header("functionId") String functionId,
@Header("messageId") String messageId,
@Header("arguments") List<String> arguments) {
//Doing something to get the message
return message;
}
}
如果您的目标是只保留一个方法,那么只保留所有参数的方法,因为您知道如果头参数
没有设置,它的值将是null
。
public String getMessage(@Header("functionId") String functionId,
@Header("messageId") String messageId,
@Header("arguments") List<String> arguments) {
if (arguments == null || arguments.isEmpty()) {
// No arguments have been provided
} else {
// Arguments have been provided
}
return message;
}
我认为任意数量的争论可能对你有用。
http://java.sun.com/docs/books/tutorial/java/javaOO/arguments.html#varargs
所以Bean现在将只有一个像:
public String getMessageWithArgs(@Header("functionId") String functionId,
@Header("arguments") String... arguments) {
String messageId = arguments[0];
//Doing something to get the message
return message;
}
我不确定是否会是这样,但这可能是一种有帮助的方式。。
问题内容: 在我的应用程序中,我正在使用ContextLoaderListener从多个jar中加载上下文文件,方法是: 这意味着我无需导入即可引用其他jar中的bean。 在应用程序中,有多个部署选项,在某些部署中,可以排除jar。为了证明这一点,我希望一些bean引用是可选的。例如: 在上面的示例中,如果未找到引用,我想让optionalBeanReference1等于null(以某种方式将其
4.2. 使用可选参数和命名参数 Python 允许函数参数有缺省值;如果调用函数时不使用参数,参数将获得它的缺省值。此外,通过使用命名参数还可以以任意顺序指定参数。SQL Server Transact/SQL 中的存储过程也可以做到这些;如果你是脚本高手,你可以略过这部分。 info 函数就是这样一个例子,它有两个可选参数。 def info(object, spacing=10, coll
用户在这个插件的很多方面都可以进行定制,用户通过插件选项来达到这个目的(这些选项会在插件初始化的时候起效)。这些选项包括: 选项 描述 aspectRatio 长宽比,以后在选择时候就会维持不变。例如:"4:3" autoHide 如果设为true,那么在选择完后区域会消失。Default:false classPrefix 预先给插件元素的前缀 Default:imgareaselect dis
英文原文:http://www.phpconcept.net/pclzip/user-guide/5 可选参数(普通参数) PCLZIP_OPT_PATH PCLZIP_OPT_ADD_PATH PCLZIP_OPT_REMOVE_PATH PCLZIP_OPT_REMOVE_ALL_PATH PCLZIP_OPT_SET_CHMOD PCLZIP_OPT_BY_NAME PCLZIP_OPT_B
经过一些实验,我已经能够使用和一些EL将我的GET参数注入到(因此是JSF)bean中。 现在,除了从,我无法将GET参数注入(即CDI-)bean。 因此,我一直在阅读有关JSF豆和CDI豆的优缺点。简而言之,我被两个问题困住了:第一。与 CDI bean 相比,使用 JSF bean 时会遇到任何缺点吗?2nd. 如果是这样,有没有一种干净的方法可以将我的 GET 参数注入到 CDI bean
You can customize Simditor by passing optional options when initializing Simditor. Here are some optional options and their default values: editor = new Simditor textarea: null placeholder: ''