|
1 | 1 | /*
|
2 |
| - * Copyright 2002-2020 the original author or authors. |
| 2 | + * Copyright 2002-2022 the original author or authors. |
3 | 3 | *
|
4 | 4 | * Licensed under the Apache License, Version 2.0 (the "License");
|
5 | 5 | * you may not use this file except in compliance with the License.
|
@@ -148,25 +148,53 @@ void autowiringIsEnabledByDefault() {
|
148 | 148 | void nullReturningBeanPostProcessor() {
|
149 | 149 | AnnotationConfigApplicationContext context = new AnnotationConfigApplicationContext();
|
150 | 150 | context.register(AutowiredConfig.class);
|
| 151 | + // 1st BPP always gets invoked |
151 | 152 | context.getBeanFactory().addBeanPostProcessor(new BeanPostProcessor() {
|
152 | 153 | @Override
|
153 | 154 | public Object postProcessBeforeInitialization(Object bean, String beanName) {
|
| 155 | + if (bean instanceof TestBean) { |
| 156 | + TestBean testBean = (TestBean) bean; |
| 157 | + testBean.name = testBean.name + "-before"; |
| 158 | + } |
| 159 | + return bean; |
| 160 | + } |
| 161 | + @Override |
| 162 | + public Object postProcessAfterInitialization(Object bean, String beanName) { |
| 163 | + if (bean instanceof TestBean) { |
| 164 | + TestBean testBean = (TestBean) bean; |
| 165 | + testBean.name = testBean.name + "-after"; |
| 166 | + } |
| 167 | + return bean; |
| 168 | + } |
| 169 | + }); |
| 170 | + // 2nd BPP always returns null for a TestBean |
| 171 | + context.getBeanFactory().addBeanPostProcessor(new BeanPostProcessor() { |
| 172 | + @Override |
| 173 | + public Object postProcessBeforeInitialization(Object bean, String beanName) { |
| 174 | + return (bean instanceof TestBean ? null : bean); |
| 175 | + } |
| 176 | + @Override |
| 177 | + public Object postProcessAfterInitialization(Object bean, String beanName) { |
154 | 178 | return (bean instanceof TestBean ? null : bean);
|
155 | 179 | }
|
156 | 180 | });
|
| 181 | + // 3rd BPP never gets invoked with a TestBean |
157 | 182 | context.getBeanFactory().addBeanPostProcessor(new BeanPostProcessor() {
|
158 | 183 | @Override
|
159 | 184 | public Object postProcessBeforeInitialization(Object bean, String beanName) {
|
160 |
| - bean.getClass().getName(); |
| 185 | + assertThat(bean).isNotInstanceOf(TestBean.class); |
161 | 186 | return bean;
|
162 | 187 | }
|
163 | 188 | @Override
|
164 | 189 | public Object postProcessAfterInitialization(Object bean, String beanName) {
|
165 |
| - bean.getClass().getName(); |
| 190 | + assertThat(bean).isNotInstanceOf(TestBean.class); |
166 | 191 | return bean;
|
167 | 192 | }
|
168 | 193 | });
|
169 | 194 | context.refresh();
|
| 195 | + TestBean testBean = context.getBean(TestBean.class); |
| 196 | + assertThat(testBean).isNotNull(); |
| 197 | + assertThat(testBean.name).isEqualTo("foo-before-after"); |
170 | 198 | }
|
171 | 199 |
|
172 | 200 | @Test
|
|
0 commit comments