If a @Configuration class is marked with @Profile, all of the
@Bean methods and @Import annotations associated with that class
will be bypassed unless one or more of the specified profiles are active. This is very
similar to the behavior in Spring XML: if the profile attribute of the
beans element is supplied e.g., <beans profile="p1,p2">, the
beans element will not be parsed unless profiles 'p1' and/or 'p2' have been
activated. Likewise, if a @Component or @Configuration class is marked
with @Profile({"p1", "p2"}), that class will not be registered/processed unless
profiles 'p1' and/or 'p2' have been activated.

If a given profile is prefixed with the NOT operator (!), the annotated
will be registered if the profile is not active. e.g., for
@Profile({"p1", "!p2"}), registration will occur if profile 'p1' is active or
if profile 'p2' is not active.

If the @Profile annotation is omitted, registration will occur, regardless
of which (if any) profiles are active.

When defining Spring beans via XML, the "profile" attribute of the
<beans> element may be used. See the documentation in
spring-beans XSD (version 3.1 or greater) for details.