我有一个简单的Scala项目,看起来像这样。。。
@Configuration
public class CommonConfiguration{
...
@Value("${spring.kafka.topic}")
public String topic;
...
}
@Service
class KafkaService @Autowired()(producer: KafkaTemplate[String, Array[Byte]], config: CommonConfiguration){
def sendMessage(msg: String): Unit = {
println(s"Writing the message $msg ${config.topic}")
producer.send(config.topic, msg.getBytes());
}
@KafkaListener(id="test", topics="#{'${spring.kafka.topic}'.split(',')}")
def consume(record: ConsumerRecord[String, String]): Unit = {
System.out.println(s"Consumed Strinsg Message : ${record.value()}")
}
}
这给了我一个错误。。。
KafkaService.scala:26: error: type mismatch;
[ERROR] found : String("#{\'${spring.kafka.topic}\'.split(\',\')}")
[ERROR] required: Array[String]
[ERROR] @KafkaListener(id="test", topics= "#{'${spring.kafka.topic}'.split(',')}")
根据这个建议,我尝试使用#{'${ spring.kafka.topic}'。拆分(',')}
,但我无法让它工作。生产者很好地理解了这个主题。如何在Scala中使用Spring表达式语言?
这是工作的Java版本。。。
@Service
public class KafkaJavaService {
@KafkaListener(id="test", topics="#{'${spring.kafka.topic}'.split(',')}")
public void consume(ConsumerRecord<String, String> record){
System.out.println("Consumed String Message : "+record.value())
}
}
根据这个问题,看起来主题=Array("…")
应该可以工作。
阅读@RequestMapping
文档 : http://static.springsource.org/spring/docs/2.5.x/api/org/springframework/web/bind/annotation/RequestMapping.html
它接受字符串数组参数作为其路径映射。
因此,这可以使用java:
@RequestMapping(“MYVIEW”)
但在scala中,我需要使用:
@RequestMapping(阵列(“我的看法”))
scala版本有意义,因为注释需要一个字符串数组。但是为什么上面的工作在java中,它不应该给出编译时错误吗?
编辑
这在技术上也不是一回事,因为另一种方式我可以使用CSV。即使工作,它也将是一个1字符串数组,除非Array构造函数做了一些花哨的事情。
它不应该有什么不同;正如我所说,如果String[]
元素中的表达式解析为String[]
,我们会递归地将其拆分(展平它)。看这里和这里。
尝试在这些方法中设置断点;我没有安装Scala,否则我会看一看。
我是Spring调度器的新手。我读了很多关于@ScheduledExecutorService和TimerTask的文章。 因此,据我所知,@ScheduledExecutorService和ScheduledExecutorService的功能大部分是相同的,但如果您的代码是在spring中,那么最好在代码中使用@ScheduledExecutorService。 所以我的问题是,假设我想在15
如何计算方面中的Spring Security表达式?我想我可以很容易地使用完成这项工作的类I spring框架
静态编程语言允许注释表达式。然而,尚不清楚这些注释如何有用以及如何使用它们。 假设在下面的示例中,我想检查一下,该字符串包含@MyExpr注释中指定的数字。这能实现吗?如何实现?
我正在使用Spring MVC,我正在尝试编写一个每小时运行一次的计划任务。问题是,当应用程序启动时,它应该计算到下一个小时的持续时间,并将该值用作初始延迟。这样,计划的任务可以在精确的时间运行,比如下午1点。。。下午2点。。。下午三点等等。 在下面的代码中,我试图计算@PostConstruct注释中的初始延迟。但是,当我尝试在@Sched的注释中使用变量时,会收到以下错误消息:注释属性Sche
null 谢谢
问题内容: 我想使用常量作为注释值。 常量和可以在批注中使用,但不能在数组中使用,因为在此位置它必须是数组初始化器。注释值仅限于可以内联到类的字节码中的值。这对于数组常量是不可能的,因为必须在加载时构造它。有解决此问题的方法吗? 问题答案: 不,没有解决方法。