Thanks to visit codestin.com
Credit goes to github.com

Skip to content

Commit c4ed057

Browse files
committed
fix readme file name
1 parent 8564c37 commit c4ed057

File tree

3 files changed

+99
-99
lines changed

3 files changed

+99
-99
lines changed
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,98 @@
1+
### 通过Java配置Bean的几种方式
2+
3+
#### 1.通过@Configuration注解注入Bean的方式
4+
5+
```java
6+
@Configuration
7+
public class MyBeanConfiguration {
8+
9+
/**
10+
* 通过 @Configuration注解 注入一个Bean
11+
*/
12+
@Bean("dog")
13+
public Animal getDog() {
14+
return new Dog();
15+
}
16+
17+
}
18+
```
19+
20+
21+
22+
#### 2.通过实现FactoryBean<?>接口的方式注入Bean
23+
24+
```java
25+
@Component
26+
public class MyFactoryBean implements FactoryBean<Animal> {
27+
28+
/**
29+
* 返回要注入的类
30+
*/
31+
@Override
32+
public Animal getObject() throws Exception {
33+
return new Cat();
34+
}
35+
36+
/**
37+
* 获取要注入类的类型
38+
*/
39+
@Override
40+
public Class<?> getObjectType() {
41+
return Animal.class;
42+
}
43+
44+
@Override
45+
public boolean isSingleton() {
46+
return FactoryBean.super.isSingleton();
47+
}
48+
49+
}
50+
```
51+
52+
53+
54+
#### 3.通过实现BeanDefinitionRegistryPostProcessor接口的方式注入Bean
55+
56+
```java
57+
@Component
58+
public class MyBeanDefinitionRegistry implements BeanDefinitionRegistryPostProcessor {
59+
60+
/**
61+
* 通过BeanDefinitionRegistryPostProcessor
62+
*/
63+
@Override
64+
public void postProcessBeanDefinitionRegistry(BeanDefinitionRegistry beanDefinitionRegistry) throws BeansException {
65+
RootBeanDefinition rootBeanDefinition = new RootBeanDefinition();
66+
rootBeanDefinition.setBeanClass(Monkey.class);
67+
beanDefinitionRegistry.registerBeanDefinition("monkey", rootBeanDefinition);
68+
}
69+
70+
@Override
71+
public void postProcessBeanFactory(ConfigurableListableBeanFactory configurableListableBeanFactory) throws BeansException {
72+
73+
}
74+
}
75+
```
76+
77+
78+
79+
#### 4.通过实现ImportBeanDefinitionRegistrar接口的方式注入Bean
80+
81+
```java
82+
public class MyImportBeanDefinitionRegistrar implements ImportBeanDefinitionRegistrar {
83+
84+
/**
85+
* 通过ImportBeanDefinitionRegistrar注入Bean
86+
*/
87+
@Override
88+
public void registerBeanDefinitions(AnnotationMetadata importingClassMetadata, BeanDefinitionRegistry registry) {
89+
RootBeanDefinition rootBeanDefinition = new RootBeanDefinition();
90+
rootBeanDefinition.setBeanClass(Bird.class);
91+
registry.registerBeanDefinition("bird", rootBeanDefinition);
92+
}
93+
}
94+
95+
```
96+
97+
> 使用时:用 @Import(MyImportBeanDefinitionRegistrar.class) 进行注入
98+

springboot-source-code-analysis/(3)工厂加载机制解析.md

+1-1
Original file line numberDiff line numberDiff line change
@@ -69,7 +69,7 @@ public final class SpringFactoriesLoader {
6969
ClassLoader classLoader = getClassLoader();
7070
// 通过这个SpringFactoriesLoader#loadFactoryNames方法获取Spring中所有系统初始化器实现的全路径名
7171
Set<String> names = new LinkedHashSet<>(SpringFactoriesLoader.loadFactoryNames(type, classLoader));
72-
// 通过createSpringFactoriesInstances#()创建它们的实例
72+
// #()创建它们的实例
7373
List<T> instances = createSpringFactoriesInstances(type, parameterTypes, classLoader, args, names);
7474
// 通过注解@Order进行排序
7575
AnnotationAwareOrderComparator.sort(instances);

springboot-source-code-analysis/通过Java配置Bean的几种方式.md

-98
This file was deleted.

0 commit comments

Comments
 (0)