A common approach used by spring is to define a @EnableXXXX
and let the client of your library to enable it by annotating it on their configuration class. Something like :
@Target(ElementType.TYPE)
@Import(FooLibarayConfiguration.class)
@Documented
public @interface EnableFooLibaray{
}
@ComponentScan("xxxxx")
@Configuration
public class FooLibarayConfiguration{
}
And client enables your library by :
@EnableFooLibaray
@Configuration
public class Application{
}
The @Import
actually supports a more dynamic way to include the bean settings for your library. You can refer to many existing @EnableXXX
provided by spring such as @EnableAsync
, @EnableWebSecurity
, @EnableTransactionManagement
, @EnableCaching
etc. for many examples.
与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…