Tôi đã một ứng dụng khởi động mùa xuân với hồ sơ thiết lập khác nhau: dev
, prod
, qc
, console
, vvCấu hình khởi động mùa xuân bỏ đăng ký trên nhiều @Profile
Các lớp cấu hình hai được thiết lập như sau. MyConfigurationA
phải được đăng ký cho tất cả hồ sơ ngoại trừ console
. MyConfigurationB
phải được đăng ký ngoại trừ console
và dev
.
Khi tôi chạy ứng dụng có tiểu sử console
, số MyConfigurationA
không được đăng ký - điều đó là tốt. Nhưng MyConfigurationB
được đăng ký - mà tôi không muốn. Tôi đã thiết lập chú thích @Profile
như sau để không đăng ký MyConfigurationB
cho cấu hình console
và dev
.
Nhưng MyConfigurationB
đang được đăng ký khi tôi chạy ứng dụng có tiểu sử console
.
@Profile({ "!" + Constants.PROFILE_CONSOLE , "!" + Constants.PROFILE_DEVELOPMENT })
Các tài liệu (http://docs.spring.io/spring/docs/current/javadoc-api/org/springframework/context/annotation/Profile.html) có một ví dụ về trong đó có một hồ sơ cá nhân và loại trừ người kia. Trong ví dụ của tôi Tôi không bao gồm cả hai như @Profile({"!p1", "!p2"}):
@Profile ({ "p1", "! P2"}), đăng ký sẽ xảy ra nếu hồ sơ 'p1' đang hoạt động HOẶC nếu hồ sơ 'p2' không hoạt động.
Câu hỏi của tôi là: Làm cách nào để bỏ qua đăng ký cấu hình của cả hai cấu hình? @Profile({"!p1", "!p2"})
đang thực hiện HOẶC hoạt động. Chúng tôi cần AND hoạt động ở đây.
Mã:
@Configuration
@Profile({ "!" + Constants.PROFILE_CONSOLE })
public class MyConfigurationA {
static{
System.out.println("MyConfigurationA registering...");
}
}
@Configuration
@Profile({ "!" + Constants.PROFILE_CONSOLE , "!" + Constants.PROFILE_DEVELOPMENT }) // doesn't exclude both, its OR condition
public class MyConfigurationB {
static{
System.out.println("MyConfigurationB registering...");
}
}
public final class Constants {
public static final String PROFILE_DEVELOPMENT = "dev";
public static final String PROFILE_CONSOLE = "console";
...
}
Đúng vậy !! Cảm ơn.. – gtiwari333