5

I am trying to configure @PropertySource for my Spring-based application.

In Java, I could do something like this:

@PropertySource(value = {"application.properties","other.properties" })

I tried arrayOf in Kotlin but I end up with a type mismatch:

@PropertySource(value = arrayOf("application.properties", "other.properties"))

What is the right way to go here?

2 Answers 2

9

The value annotation parameter is handled in a special way in Kotlin (following its special handling in Java), and if it has an array type, Kotlin converts it to a vararg. Therefore, the correct syntax here is simply:

@PropertySource("application.properties", "other.properties")

If you do want to specify the parameter name explicitly, use the spread operator to expand the array into varargs:

@PropertySource(value = *arrayOf("application.properties", "other.properties"))

For any other array annotation parameter, you should simply use arrayOf() normally.

Sign up to request clarification or add additional context in comments.

Comments

3

Adding this in case it helps anyone...

I needed multiple instances of the same annotation, but I also needed to set other attributes of the annotation.

@Configuration
@PropertySources(
        PropertySource(
                value = ["classpath:consul.properties"]),
        PropertySource(
                value = ["file:/run/example/consul.properties"],
                ignoreResourceNotFound = true)
)

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.