1
1
/*
2
- * Copyright 2012-2023 the original author or authors.
2
+ * Copyright 2012-2024 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.
25
25
import org .springframework .beans .factory .support .BeanDefinitionRegistry ;
26
26
import org .springframework .beans .factory .support .DefaultListableBeanFactory ;
27
27
import org .springframework .beans .factory .support .GenericBeanDefinition ;
28
- import org .springframework .beans .factory .support .RootBeanDefinition ;
29
28
import org .springframework .boot .context .properties .bind .BindMethod ;
30
29
import org .springframework .context .annotation .Scope ;
31
30
import org .springframework .context .annotation .ScopedProxyMode ;
@@ -47,38 +46,12 @@ class ConfigurationPropertiesBeanRegistrarTests {
47
46
private final ConfigurationPropertiesBeanRegistrar registrar = new ConfigurationPropertiesBeanRegistrar (
48
47
this .registry );
49
48
50
- @ Test
51
- void registerScopedBeanDefinition () {
52
- String beanName = "scopedbeancp-" + ScopedBeanConfigurationProperties .class .getName ();
53
- this .registrar .register (ScopedBeanConfigurationProperties .class );
54
- BeanDefinition beanDefinition = this .registry .getBeanDefinition (beanName );
55
- assertThat (beanDefinition ).isNotNull ();
56
- assertThat (beanDefinition .getBeanClassName ()).isEqualTo (ScopedBeanConfigurationProperties .class .getName ());
57
- assertThat (beanDefinition .getScope ()).isEqualTo (BeanDefinition .SCOPE_PROTOTYPE );
58
- }
59
-
60
- @ Test
61
- void registerScopedBeanDefinitionWithProxyMode () {
62
- String beanName = "scopedbeancp-" + ProxyScopedBeanConfigurationProperties .class .getName ();
63
- this .registrar .register (ProxyScopedBeanConfigurationProperties .class );
64
- BeanDefinition proxiedBeanDefinition = this .registry .getBeanDefinition (beanName );
65
- assertThat (proxiedBeanDefinition ).isNotNull ();
66
- assertThat (proxiedBeanDefinition .getBeanClassName ()).isEqualTo (ScopedProxyFactoryBean .class .getName ());
67
- String targetBeanName = (String ) proxiedBeanDefinition .getPropertyValues ().get ("targetBeanName" );
68
- assertThat (targetBeanName ).isNotNull ();
69
- BeanDefinition beanDefinition = this .registry .getBeanDefinition (targetBeanName );
70
- assertThat (beanDefinition ).isNotNull ();
71
- assertThat (beanDefinition .getBeanClassName ()).isEqualTo (ProxyScopedBeanConfigurationProperties .class .getName ());
72
- assertThat (beanDefinition .getScope ()).isEqualTo (BeanDefinition .SCOPE_PROTOTYPE );
73
- }
74
-
75
49
@ Test
76
50
void registerWhenNotAlreadyRegisteredAddBeanDefinition () {
77
51
String beanName = "beancp-" + BeanConfigurationProperties .class .getName ();
78
52
this .registrar .register (BeanConfigurationProperties .class );
79
53
BeanDefinition definition = this .registry .getBeanDefinition (beanName );
80
54
assertThat (definition ).isNotNull ();
81
- assertThat (definition .getScope ()).isEqualTo (BeanDefinition .SCOPE_SINGLETON );
82
55
assertThat (definition .getBeanClassName ()).isEqualTo (BeanConfigurationProperties .class .getName ());
83
56
}
84
57
@@ -104,20 +77,53 @@ void registerWhenValueObjectRegistersValueObjectBeanDefinition() {
104
77
String beanName = "valuecp-" + ValueObjectConfigurationProperties .class .getName ();
105
78
this .registrar .register (ValueObjectConfigurationProperties .class );
106
79
BeanDefinition definition = this .registry .getBeanDefinition (beanName );
107
- assertThat (definition ).satisfies (configurationPropertiesBeanDefinition (BindMethod .VALUE_OBJECT ));
80
+ assertThat (definition ).satisfies (hasBindMethodAttribute (BindMethod .VALUE_OBJECT ));
108
81
}
109
82
110
83
@ Test
111
84
void registerWhenNotValueObjectRegistersRootBeanDefinitionWithJavaBeanBindMethod () {
112
85
String beanName = MultiConstructorBeanConfigurationProperties .class .getName ();
113
86
this .registrar .register (MultiConstructorBeanConfigurationProperties .class );
114
87
BeanDefinition definition = this .registry .getBeanDefinition (beanName );
115
- assertThat (definition ).satisfies (configurationPropertiesBeanDefinition (BindMethod .JAVA_BEAN ));
88
+ assertThat (definition ).satisfies (hasBindMethodAttribute (BindMethod .JAVA_BEAN ));
116
89
}
117
90
118
- private Consumer <BeanDefinition > configurationPropertiesBeanDefinition (BindMethod bindMethod ) {
91
+ @ Test
92
+ void registerWhenNoScopeUsesSingleton () {
93
+ String beanName = "beancp-" + BeanConfigurationProperties .class .getName ();
94
+ this .registrar .register (BeanConfigurationProperties .class );
95
+ BeanDefinition definition = this .registry .getBeanDefinition (beanName );
96
+ assertThat (definition ).isNotNull ();
97
+ assertThat (definition .getScope ()).isEqualTo (BeanDefinition .SCOPE_SINGLETON );
98
+ }
99
+
100
+ @ Test
101
+ void registerScopedBeanDefinition () {
102
+ String beanName = "beancp-" + ScopedBeanConfigurationProperties .class .getName ();
103
+ this .registrar .register (ScopedBeanConfigurationProperties .class );
104
+ BeanDefinition beanDefinition = this .registry .getBeanDefinition (beanName );
105
+ assertThat (beanDefinition ).isNotNull ();
106
+ assertThat (beanDefinition .getBeanClassName ()).isEqualTo (ScopedBeanConfigurationProperties .class .getName ());
107
+ assertThat (beanDefinition .getScope ()).isEqualTo (BeanDefinition .SCOPE_PROTOTYPE );
108
+ }
109
+
110
+ @ Test
111
+ void registerScopedBeanDefinitionWithProxyMode () {
112
+ String beanName = "beancp-" + ProxyScopedBeanConfigurationProperties .class .getName ();
113
+ this .registrar .register (ProxyScopedBeanConfigurationProperties .class );
114
+ BeanDefinition proxiedBeanDefinition = this .registry .getBeanDefinition (beanName );
115
+ assertThat (proxiedBeanDefinition ).isNotNull ();
116
+ assertThat (proxiedBeanDefinition .getBeanClassName ()).isEqualTo (ScopedProxyFactoryBean .class .getName ());
117
+ String targetBeanName = (String ) proxiedBeanDefinition .getPropertyValues ().get ("targetBeanName" );
118
+ assertThat (targetBeanName ).isNotNull ();
119
+ BeanDefinition beanDefinition = this .registry .getBeanDefinition (targetBeanName );
120
+ assertThat (beanDefinition ).isNotNull ();
121
+ assertThat (beanDefinition .getBeanClassName ()).isEqualTo (ProxyScopedBeanConfigurationProperties .class .getName ());
122
+ assertThat (beanDefinition .getScope ()).isEqualTo (BeanDefinition .SCOPE_PROTOTYPE );
123
+ }
124
+
125
+ private Consumer <BeanDefinition > hasBindMethodAttribute (BindMethod bindMethod ) {
119
126
return (definition ) -> {
120
- assertThat (definition ).isExactlyInstanceOf (RootBeanDefinition .class );
121
127
assertThat (definition .hasAttribute (BindMethod .class .getName ())).isTrue ();
122
128
assertThat (definition .getAttribute (BindMethod .class .getName ())).isEqualTo (bindMethod );
123
129
};
@@ -128,14 +134,14 @@ static class BeanConfigurationProperties {
128
134
129
135
}
130
136
131
- @ ConfigurationProperties (prefix = "scopedbeancp " )
137
+ @ ConfigurationProperties (prefix = "beancp " )
132
138
@ Scope (BeanDefinition .SCOPE_PROTOTYPE )
133
139
static class ScopedBeanConfigurationProperties {
134
140
135
141
}
136
142
137
- @ ConfigurationProperties (prefix = "scopedbeancp " )
138
- @ Scope (proxyMode = ScopedProxyMode . TARGET_CLASS , value = BeanDefinition . SCOPE_PROTOTYPE )
143
+ @ ConfigurationProperties (prefix = "beancp " )
144
+ @ Scope (scopeName = BeanDefinition . SCOPE_PROTOTYPE , proxyMode = ScopedProxyMode . TARGET_CLASS )
139
145
static class ProxyScopedBeanConfigurationProperties {
140
146
141
147
}
0 commit comments