Contents

JavaConfig 設定 bean 物件

這邊不使用自動載入

一般注入

1
2
3
4
5
6
7
@Configuration
public class ...{
    @Bean
    public UserDao userDaoNormal{
        return new UserDaoNormal();
    }
}

建構式注入

一般方法

1
2
3
4
5
6
7
8
@Configuration
public class ...{
    @Bean
    public UserService userServiceNormal(){
        UserDao userDao = userDaoNormal();
        return new UserService(userDao);
    }
}

更好的方法(不多一個 instance )

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
@Configuration
public class ...{

    @Bean
    public UserDao userDaoNormal{
        return new UserDaoNormal();
    }

    @Bean
    public UserService userServiceNormal(userDao userDao){
        return new UserService(userDao);
    }
}

setter 注入方法

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
@Configuration
public class ...{

    @Bean
    public UserDao userDaoNormal{
        return new UserDaoNormal();
    }

    @Bean
    public UserService setUserDao(userDao userDao){
        return new UserService(userDao);
    }
}

任意方法也可以

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
@Configuration
public class ...{

    @Bean
    public UserDao userDaoNormal{
        return new UserDaoNormal();
    }

    @Bean
    public UserService prepareUserDao(userDao userDao){
        return new UserService(userDao);
    }
}

解決衝突方法

自動注入和 JavaConfig 解決方案一致

@Primary

Qualifier(“xxxXxxx”)

@Qualifier(“xxXxxx”) 宣告 or 參數

@Qualifier(“xxxXxxx”) 宣告

@Bean 命名方法

默認 @Bean 方法名稱