Spring註解驅動開發04(給容器中註冊元件的方式)
阿新 • • 發佈:2020-08-19
給容器中註冊元件的方式
1. 元件註解標註 + 包掃描(適用於自己寫的類)
//控制層元件
@Controller
public class PersonController {
}
//業務邏輯層元件
@Service
public class PersonServic {
}
//持久層元件
@Repository
public class PersonDao {
}
//其他元件
@Component
public class Person {
}
包掃描(註解或者xml的方式)
1.使用註解的方式 @ComponentScan(value = "com.xxx") 2.使用xml的方式 <context:component-scan base-package="com.xxx"/>
2. @Bean(適用於第三方包裡面的元件)
@Bean("元件id") 預設使用方法名作為id,返回值作為元件的型別
3. @Import(快速給容器中匯入一個元件)
- 直接在配置類上加上註解@Import(要加入到ioc容器中的類的類模板)
@Configuration @ComponentScan(value = "com.atguigu",excludeFilters = { //不掃描@controller和service註解,type預設為註解型別,可以不寫 @ComponentScan.Filter(type = FilterType.CUSTOM,classes = {Myfilter.class})}) @SuppressWarnings("all") @Import(HashMap.class) //將HashMap類加入到ioc容器中 public class MainConfig { }
- 編寫測試類
@Test public void testImport(){ try(ConfigurableApplicationContext ioc = new AnnotationConfigApplicationContext(MainConfig.class)) { //檢視容器中的所有物件 String[] beanDefinitionNames = ioc.getBeanDefinitionNames(); for (String beanDefinitionName : beanDefinitionNames) { System.out.println(beanDefinitionName); } } }
- 檢視列印結果
org.springframework.context.annotation.internalCommonAnnotationProcessor
org.springframework.context.event.internalEventListenerProcessor
org.springframework.context.event.internalEventListenerFactory
mainConfig
personController
personServic
java.util.HashMap //可以看到ioc容器中已經有hashmap
person
p1