1. 程式人生 > 實用技巧 >Spring註解驅動開發04(給容器中註冊元件的方式)

Spring註解驅動開發04(給容器中註冊元件的方式)

給容器中註冊元件的方式

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使用詳情

@Bean("元件id") 預設使用方法名作為id,返回值作為元件的型別

3. @Import(快速給容器中匯入一個元件)

  1. 直接在配置類上加上註解@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 {
}
  1. 編寫測試類
    @Test
    public void testImport(){
        try(ConfigurableApplicationContext ioc = new AnnotationConfigApplicationContext(MainConfig.class)) {
            //檢視容器中的所有物件
            String[] beanDefinitionNames = ioc.getBeanDefinitionNames();
            for (String beanDefinitionName : beanDefinitionNames) {
                System.out.println(beanDefinitionName);
            }
        }
    }
  1. 檢視列印結果
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