Issue
I used this construction:
@Profile("!test")
Okay, but I need to set do not use this bean with multiple profiles. Insofar as value field is String[], I wrote this:
@Profile(value = ["!local", "!test"])
and get this exception:
Caused by: org.springframework.beans.factory.NoUniqueBeanDefinitionException: No qualifying bean of type 'ru.example.service.AuthenticationService' available: expected single matching bean but found 2: testAuthenticationService,springAuthenticationService
As we see, the construction above not works. How to set profile in my case?
Solution
@Profile(value = ["!local", "!test"])
is the equivalent of `@Profile("!local | !test") meaning that only beans that are BOTH local and test are excluded.
What you need is `@Profile("!local & !test") to exclude either local or test.
This is an example of De Morgan's Law where !(foo | bar) == !foo & !bar
, but you had !foo | !bar == !(foo & bar)
.
Answered By - Novaterata
0 comments:
Post a Comment
Note: Only a member of this blog may post a comment.