Bean的实例化

构造器: 通过构造方法创建Bean(@Compoent就是这种方式)

静态工厂: 一个静态方法返回Bean,声明这个静态方法,例如@Bean或xml配置文件,工厂需要@Configuration

工厂方法: 工厂继承FactoryBean<>接口,指定泛型,即需要创建的Bean,声明这个工厂

实例工厂: 和静态工厂类似,方法不需要是静态的(@Bean就是这种方式)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
@Configuration
public class AppConfig {

// 1. 构造器方式
@Bean
public UserService userServiceByConstructor() {
return new UserService();
}

// 2. 静态工厂方式
@Bean
public UserService userServiceByStaticFactory() {
return UserFactory.createStaticUserService();
}

// 3. 实例工厂方式
@Bean
public UserFactory userFactory() {
return new UserFactory();
}

@Bean
public UserService userServiceByInstanceFactory(UserFactory userFactory) {
return userFactory.createInstanceUserService();
}

// 4. FactoryBean 方式
@Bean
public UserServiceFactoryBean userServiceByFactoryBean() {
return new UserServiceFactoryBean();
}
}