1、使用組件注解
如果使用組件注解需要搭配@ComponentScan,該注解會指定需要掃描的包,掃描以后,路徑內所有帶有組件注解的類都將被注冊進IOC容器當中
@Component:定義一個Bean
以下幾個注解功能都和@Component相同,一般用於特定位置,便於區分。
@Controller/RestController:定義一個Bean,用於標識控制器,其中@RestController包含了@ResponseBody注解,用於Rest風格接口的開發
2、使用@Bean、@Configuration注解
先使用@Configuration將一個類指定為配置類,在配置類中使用@Bean進行定義
運行時,該配置類,和類中的Bean都會被注入到容器中
@Bean("Test1") public Test1 Test1(){ return new Test1(); }
直接返回需要注入的Bean對象實例即可,也可以省略Bean后面的參數,此時會以方法名作為Bean的標識
3、使用@Import注解
SpringBoot的@Import注解可以用於為容器中注冊Bean
有三種使用方法:
1、直接Import某個類,將這個類添加到IOC容器中
@Import( { A.class,B.class } )
2、導入實現了@ImportSelector
接口的實現類
如果想根據某些屬性進行判斷是否導入某個Bean,則可以在@Import中傳入實現了@ImportSelector的實現類
在執行時,@Import如果判斷出傳入的是實現了@ImportSelecor接口的實現類,就會調用該類中的selectImport方法,判斷需要導入的configuration
3、導入實現了@ImportBeanDefinitionRegistrar接口的實現類
在執行時,會調用該類中的registerBeanDefinitions方法,通過參數中的BeanDefinitionRegistry可以進行Bean的注冊