Skip to content
Permalink

Comparing changes

Choose two branches to see what’s changed or to start a new pull request. If you need to, you can also or learn more about diff comparisons.

Open a pull request

Create a new pull request by comparing changes across two branches. If you need to, you can also . Learn more about diff comparisons here.
base repository: spring-projects/spring-framework
Failed to load repositories. Confirm that selected base ref is valid, then try again.
Loading
base: v5.2.7.RELEASE
Choose a base ref
...
head repository: spring-projects/spring-framework
Failed to load repositories. Confirm that selected head ref is valid, then try again.
Loading
compare: v5.2.8.RELEASE
Choose a head ref
Loading
Showing with 1,718 additions and 1,073 deletions.
  1. +17 −17 build.gradle
  2. +1 −1 gradle.properties
  3. +3 −2 spring-aop/src/main/java/org/springframework/aop/interceptor/AbstractMonitoringInterceptor.java
  4. +2 −1 ...ava/org/springframework/beans/factory/aspectj/AbstractInterfaceDrivenDependencyInjectionAspect.aj
  5. +6 −2 ...aspects/src/main/java/org/springframework/beans/factory/aspectj/AnnotationBeanConfigurerAspect.aj
  6. +8 −8 spring-beans/src/main/java/org/springframework/beans/BeanWrapperImpl.java
  7. +12 −8 spring-beans/src/main/java/org/springframework/beans/factory/annotation/Value.java
  8. +16 −18 ...s/src/main/java/org/springframework/beans/factory/support/AbstractAutowireCapableBeanFactory.java
  9. +13 −5 spring-beans/src/main/java/org/springframework/beans/factory/support/AbstractBeanDefinition.java
  10. +18 −12 spring-beans/src/main/java/org/springframework/beans/factory/support/AbstractBeanFactory.java
  11. +13 −1 spring-beans/src/main/java/org/springframework/beans/factory/support/BeanDefinitionDefaults.java
  12. +48 −40 spring-beans/src/main/java/org/springframework/beans/factory/support/DefaultListableBeanFactory.java
  13. +5 −7 spring-beans/src/main/java/org/springframework/beans/factory/support/FactoryBeanRegistrySupport.java
  14. +69 −26 spring-context-support/src/main/java/org/springframework/cache/caffeine/CaffeineCacheManager.java
  15. +2 −2 ...xt-support/src/main/java/org/springframework/cache/jcache/config/AbstractJCacheConfiguration.java
  16. +9 −4 ...context-support/src/main/java/org/springframework/scheduling/commonj/WorkManagerTaskExecutor.java
  17. +19 −7 ...g-context-support/src/test/java/org/springframework/cache/caffeine/CaffeineCacheManagerTests.java
  18. +4 −3 spring-context/src/main/java/org/springframework/context/ConfigurableApplicationContext.java
  19. +4 −3 ...ontext/src/main/java/org/springframework/ejb/config/AbstractJndiLocatingBeanDefinitionParser.java
  20. +2 −2 spring-context/src/main/java/org/springframework/jmx/export/metadata/AbstractJmxAttribute.java
  21. +17 −5 ...src/main/java/org/springframework/scheduling/annotation/ScheduledAnnotationBeanPostProcessor.java
  22. +6 −1 spring-context/src/main/java/org/springframework/scheduling/concurrent/ConcurrentTaskExecutor.java
  23. +4 −3 ...g-context/src/main/java/org/springframework/scheduling/concurrent/DefaultManagedTaskExecutor.java
  24. +8 −1 spring-context/src/main/java/org/springframework/scheduling/concurrent/ThreadPoolTaskExecutor.java
  25. +13 −11 spring-context/src/test/java/org/springframework/ejb/config/JeeNamespaceHandlerTests.java
  26. +3 −0 spring-core/spring-core.gradle
  27. +3 −2 spring-core/src/main/java/org/springframework/core/codec/AbstractSingleValueEncoder.java
  28. +40 −18 spring-core/src/main/java/org/springframework/core/env/MutablePropertySources.java
  29. +11 −6 spring-core/src/main/java/org/springframework/core/env/Profiles.java
  30. +30 −4 spring-core/src/main/java/org/springframework/core/env/ProfilesParser.java
  31. +4 −4 spring-core/src/main/java/org/springframework/core/env/PropertySource.java
  32. +15 −3 spring-core/src/main/java/org/springframework/core/io/buffer/DataBufferUtils.java
  33. +6 −1 spring-core/src/main/java/org/springframework/core/task/SimpleAsyncTaskExecutor.java
  34. +9 −2 spring-core/src/main/java/org/springframework/core/task/TaskDecorator.java
  35. +6 −1 spring-core/src/main/java/org/springframework/core/task/support/TaskExecutorAdapter.java
  36. +7 −4 spring-core/src/main/java/org/springframework/util/Assert.java
  37. +7 −7 spring-core/src/main/java/org/springframework/util/FileCopyUtils.java
  38. +2 −2 spring-core/src/main/java/org/springframework/util/SocketUtils.java
  39. +5 −5 spring-core/src/main/java/org/springframework/util/StreamUtils.java
  40. +65 −3 spring-core/src/test/java/org/springframework/core/env/ProfilesTests.java
  41. +9 −5 spring-jdbc/src/main/java/org/springframework/jdbc/core/StatementCreatorUtils.java
  42. +66 −46 spring-jdbc/src/main/java/org/springframework/jdbc/core/metadata/GenericCallMetaDataProvider.java
  43. +28 −12 spring-jms/src/main/java/org/springframework/jms/config/AbstractJmsListenerContainerFactory.java
  44. +35 −39 ...messaging/src/main/java/org/springframework/messaging/rsocket/DefaultRSocketRequesterBuilder.java
  45. +2 −3 ...ging/src/test/java/org/springframework/messaging/rsocket/DefaultRSocketRequesterBuilderTests.java
  46. +6 −1 spring-tx/src/main/java/org/springframework/jca/work/WorkManagerTaskExecutor.java
  47. +16 −14 spring-tx/src/main/java/org/springframework/transaction/interceptor/TransactionAspectSupport.java
  48. +31 −19 ...tx/src/main/java/org/springframework/transaction/reactive/AbstractReactiveTransactionManager.java
  49. +16 −12 spring-web/src/main/java/org/springframework/http/client/reactive/ReactorClientHttpConnector.java
  50. +2 −1 spring-web/src/main/java/org/springframework/http/client/reactive/ReactorClientHttpRequest.java
  51. +61 −12 spring-web/src/main/java/org/springframework/http/client/reactive/ReactorClientHttpResponse.java
  52. +4 −4 spring-web/src/main/java/org/springframework/http/client/reactive/ReactorResourceFactory.java
  53. +3 −2 spring-web/src/main/java/org/springframework/http/codec/EncoderHttpMessageWriter.java
  54. +21 −5 spring-web/src/main/java/org/springframework/http/codec/json/AbstractJackson2Encoder.java
  55. +1 −25 spring-web/src/main/java/org/springframework/http/codec/json/Jackson2CodecSupport.java
  56. +2 −1 spring-web/src/main/java/org/springframework/http/codec/multipart/MultipartHttpMessageWriter.java
  57. +8 −2 spring-web/src/main/java/org/springframework/http/converter/StringHttpMessageConverter.java
  58. +49 −36 ...b/src/main/java/org/springframework/http/converter/json/AbstractJackson2HttpMessageConverter.java
  59. +1 −0 ...g-web/src/main/java/org/springframework/http/server/reactive/DefaultServerHttpRequestBuilder.java
  60. +6 −1 spring-web/src/main/java/org/springframework/http/server/reactive/ReactorServerHttpRequest.java
  61. +1 −2 spring-web/src/main/java/org/springframework/web/bind/annotation/RequestMapping.java
  62. +4 −4 spring-web/src/main/java/org/springframework/web/context/request/WebRequest.java
  63. +3 −3 spring-web/src/main/java/org/springframework/web/context/support/WebApplicationContextUtils.java
  64. +3 −6 spring-web/src/main/java/org/springframework/web/filter/ShallowEtagHeaderFilter.java
  65. +1 −9 spring-web/src/main/java/org/springframework/web/server/adapter/WebHttpHandlerBuilder.java
  66. +7 −2 spring-web/src/main/java/org/springframework/web/util/UriComponentsBuilder.java
  67. +0 −7 spring-web/src/test/java/org/springframework/http/codec/cbor/Jackson2CborDecoderTests.java
  68. +0 −8 spring-web/src/test/java/org/springframework/http/codec/cbor/Jackson2CborEncoderTests.java
  69. +34 −5 spring-web/src/test/java/org/springframework/http/codec/json/Jackson2JsonDecoderTests.java
  70. +13 −0 spring-web/src/test/java/org/springframework/http/codec/json/Jackson2JsonEncoderTests.java
  71. +0 −8 spring-web/src/test/java/org/springframework/http/codec/json/Jackson2SmileDecoderTests.java
  72. +0 −7 spring-web/src/test/java/org/springframework/http/codec/json/Jackson2SmileEncoderTests.java
  73. +24 −1 spring-web/src/test/java/org/springframework/http/converter/StringHttpMessageConverterTests.java
  74. +45 −2 ...c/test/java/org/springframework/http/converter/json/MappingJackson2HttpMessageConverterTests.java
  75. +0 −5 .../java/org/springframework/http/converter/smile/MappingJackson2SmileHttpMessageConverterTests.java
  76. +17 −1 ...test/java/org/springframework/http/converter/xml/MappingJackson2XmlHttpMessageConverterTests.java
  77. +30 −1 spring-web/src/test/java/org/springframework/http/server/reactive/ServerHttpRequestTests.java
  78. +181 −93 spring-web/src/test/java/org/springframework/web/util/UriComponentsBuilderTests.java
  79. +6 −5 spring-webflux/src/main/java/org/springframework/web/reactive/config/CorsRegistration.java
  80. +5 −3 spring-webflux/src/main/java/org/springframework/web/reactive/config/CorsRegistry.java
  81. +3 −5 ...main/java/org/springframework/web/reactive/result/method/annotation/ControllerMethodResolver.java
  82. +1 −2 ...springframework/web/reactive/result/method/annotation/RequestAttributeMethodArgumentResolver.java
  83. +2 −2 ...va/org/springframework/web/reactive/socket/server/upgrade/ReactorNettyRequestUpgradeStrategy.java
  84. +1 −1 .../springframework/web/reactive/result/method/annotation/CrossOriginAnnotationIntegrationTests.java
  85. +1 −1 ...a/org/springframework/web/reactive/result/method/annotation/GlobalCorsConfigIntegrationTests.java
  86. +39 −0 ...g/springframework/web/reactive/socket/server/upgrade/ReactorNettyRequestUpgradeStrategyTests.java
  87. +6 −6 spring-webmvc/src/main/java/org/springframework/web/servlet/config/annotation/CorsRegistration.java
  88. +0 −2 spring-webmvc/src/main/java/org/springframework/web/servlet/config/annotation/CorsRegistry.java
  89. +4 −5 ...main/java/org/springframework/web/servlet/mvc/method/annotation/RequestMappingHandlerAdapter.java
  90. +2 −2 spring-webmvc/src/main/java/org/springframework/web/servlet/view/AbstractTemplateViewResolver.java
  91. +2 −2 ...rc/main/java/org/springframework/web/socket/adapter/standard/StandardWebSocketHandlerAdapter.java
  92. +12 −12 src/docs/asciidoc/core/core-aop-api.adoc
  93. +101 −98 src/docs/asciidoc/core/core-aop.adoc
  94. +74 −74 src/docs/asciidoc/core/core-beans.adoc
  95. +2 −2 src/docs/asciidoc/core/core-resources.adoc
  96. +4 −6 src/docs/asciidoc/core/core-validation.adoc
  97. +46 −45 src/docs/asciidoc/data-access.adoc
  98. +49 −48 src/docs/asciidoc/integration.adoc
  99. +1 −1 src/docs/asciidoc/languages/dynamic-languages.adoc
  100. +5 −4 src/docs/asciidoc/overview.adoc
  101. +64 −64 src/docs/asciidoc/testing.adoc
  102. +8 −9 src/docs/asciidoc/web/webflux-functional.adoc
  103. +2 −2 src/docs/asciidoc/web/webflux-websocket.adoc
  104. +5 −5 src/docs/asciidoc/web/webflux.adoc
  105. +2 −2 src/docs/asciidoc/web/webmvc-functional.adoc
  106. +9 −9 src/docs/asciidoc/web/webmvc.adoc
  107. 0 src/nohttp/{whitelist.lines → allowlist.lines}
34 changes: 17 additions & 17 deletions build.gradle
Original file line number Diff line number Diff line change
@@ -4,7 +4,7 @@ plugins {
id 'org.jetbrains.dokka' version '0.10.1' apply false
id 'org.asciidoctor.jvm.convert' version '2.4.0'
id 'io.spring.gradle-enterprise-conventions' version '0.0.2'
id 'io.spring.nohttp' version '0.0.4.RELEASE'
id 'io.spring.nohttp' version '0.0.5.RELEASE'
id 'de.undercouch.download' version '4.0.0'
id 'com.gradle.build-scan' version '3.2'
id "com.jfrog.artifactory" version '4.12.0' apply false
@@ -27,10 +27,10 @@ configure(allprojects) { project ->
dependencyManagement {
imports {
mavenBom "com.fasterxml.jackson:jackson-bom:2.10.4"
mavenBom "io.netty:netty-bom:4.1.50.Final"
mavenBom "io.projectreactor:reactor-bom:Dysprosium-SR8"
mavenBom "io.rsocket:rsocket-bom:1.0.0"
mavenBom "org.eclipse.jetty:jetty-bom:9.4.29.v20200521"
mavenBom "io.netty:netty-bom:4.1.51.Final"
mavenBom "io.projectreactor:reactor-bom:Dysprosium-SR10"
mavenBom "io.rsocket:rsocket-bom:1.0.1"
mavenBom "org.eclipse.jetty:jetty-bom:9.4.30.v20200611"
mavenBom "org.jetbrains.kotlin:kotlin-bom:1.3.72"
mavenBom "org.jetbrains.kotlinx:kotlinx-coroutines-bom:1.3.5"
mavenBom "org.junit:junit-bom:5.6.2"
@@ -63,7 +63,7 @@ configure(allprojects) { project ->
dependency "io.reactivex.rxjava2:rxjava:2.2.19"
dependency "io.projectreactor.tools:blockhound:1.0.2.RELEASE"

dependency "com.caucho:hessian:4.0.62"
dependency "com.caucho:hessian:4.0.63"
dependency "com.fasterxml:aalto-xml:1.2.2"
dependency("com.fasterxml.woodstox:woodstox-core:6.1.1") {
exclude group: "stax", name: "stax-api"
@@ -75,7 +75,7 @@ configure(allprojects) { project ->
exclude group: "xpp3", name: "xpp3_min"
exclude group: "xmlpull", name: "xmlpull"
}
dependency "org.apache.johnzon:johnzon-jsonb:1.2.6"
dependency "org.apache.johnzon:johnzon-jsonb:1.2.8"
dependency("org.codehaus.jettison:jettison:1.3.8") {
exclude group: "stax", name: "stax-api"
}
@@ -87,8 +87,8 @@ configure(allprojects) { project ->
dependency "org.yaml:snakeyaml:1.26"

dependency "com.h2database:h2:1.4.200"
dependency "com.github.ben-manes.caffeine:caffeine:2.8.4"
dependency "com.github.librepdf:openpdf:1.3.17"
dependency "com.github.ben-manes.caffeine:caffeine:2.8.5"
dependency "com.github.librepdf:openpdf:1.3.20"
dependency "com.rometools:rome:1.12.2"
dependency "commons-io:commons-io:2.5"
dependency "io.vavr:vavr:0.10.3"
@@ -115,19 +115,19 @@ configure(allprojects) { project ->
dependency "net.sf.ehcache:ehcache:2.10.6"
dependency "org.ehcache:jcache:1.0.1"
dependency "org.ehcache:ehcache:3.4.0"
dependency "org.hibernate:hibernate-core:5.4.17.Final"
dependency "org.hibernate:hibernate-core:5.4.18.Final"
dependency "org.hibernate:hibernate-validator:6.1.5.Final"
dependency "org.webjars:webjars-locator-core:0.45"
dependency "org.webjars:underscorejs:1.8.3"

dependencySet(group: 'org.apache.tomcat', version: '9.0.36') {
dependencySet(group: 'org.apache.tomcat', version: '9.0.37') {
entry 'tomcat-util'
entry('tomcat-websocket') {
exclude group: "org.apache.tomcat", name: "tomcat-websocket-api"
exclude group: "org.apache.tomcat", name: "tomcat-servlet-api"
}
}
dependencySet(group: 'org.apache.tomcat.embed', version: '9.0.36') {
dependencySet(group: 'org.apache.tomcat.embed', version: '9.0.37') {
entry 'tomcat-embed-core'
entry 'tomcat-embed-websocket'
}
@@ -152,7 +152,7 @@ configure(allprojects) { project ->
dependency("org.apache.httpcomponents:httpasyncclient:4.1.4") {
exclude group: "commons-logging", name: "commons-logging"
}
dependency "org.eclipse.jetty:jetty-reactive-httpclient:1.1.3"
dependency "org.eclipse.jetty:jetty-reactive-httpclient:1.1.4"

dependency "org.jruby:jruby:9.2.11.1"
dependency "org.python:jython-standalone:2.7.1"
@@ -194,10 +194,10 @@ configure(allprojects) { project ->
}
dependency "io.mockk:mockk:1.10.0"

dependency("net.sourceforge.htmlunit:htmlunit:2.40.0") {
dependency("net.sourceforge.htmlunit:htmlunit:2.42.0") {
exclude group: "commons-logging", name: "commons-logging"
}
dependency("org.seleniumhq.selenium:htmlunit-driver:2.40.0") {
dependency("org.seleniumhq.selenium:htmlunit-driver:2.42.0") {
exclude group: "commons-logging", name: "commons-logging"
}
dependency("org.seleniumhq.selenium:selenium-java:3.141.59") {
@@ -325,7 +325,7 @@ configure([rootProject] + javaProjects) { project ->
}

checkstyle {
toolVersion = "8.33"
toolVersion = "8.34"
configDir = rootProject.file("src/checkstyle")
}

@@ -386,7 +386,7 @@ configure(rootProject) {

nohttp {
source.exclude "**/test-output/**"
whitelistFile = project.file("src/nohttp/whitelist.lines")
allowlistFile = project.file("src/nohttp/allowlist.lines")
def rootPath = file(rootDir).toPath()
def projectDirs = allprojects.collect { it.projectDir } + "${rootDir}/buildSrc"
projectDirs.forEach { dir ->
2 changes: 1 addition & 1 deletion gradle.properties
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
version=5.2.7.BUILD-SNAPSHOT
version=5.2.8.RELEASE
org.gradle.jvmargs=-Xmx1536M
org.gradle.caching=true
org.gradle.parallel=true
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
/*
* Copyright 2002-2017 the original author or authors.
* Copyright 2002-2020 the original author or authors.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -103,7 +103,8 @@ protected String createInvocationTraceName(MethodInvocation invocation) {
if (this.logTargetClassInvocation && clazz.isInstance(invocation.getThis())) {
clazz = invocation.getThis().getClass();
}
return getPrefix() + clazz.getName() + '.' + method.getName() + getSuffix();
String className = clazz.getName();
return getPrefix() + className + '.' + method.getName() + getSuffix();
}

}
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
/*
* Copyright 2002-2014 the original author or authors.
* Copyright 2002-2020 the original author or authors.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -67,6 +67,7 @@ import java.io.Serializable;
* @since 2.5.2
*/
public abstract aspect AbstractInterfaceDrivenDependencyInjectionAspect extends AbstractDependencyInjectionAspect {

/**
* Select initialization join point as object construction
*/
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
/*
* Copyright 2002-2017 the original author or authors.
* Copyright 2002-2020 the original author or authors.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -47,22 +47,26 @@ import org.springframework.beans.factory.wiring.BeanConfigurerSupport;
public aspect AnnotationBeanConfigurerAspect extends AbstractInterfaceDrivenDependencyInjectionAspect
implements BeanFactoryAware, InitializingBean, DisposableBean {

private BeanConfigurerSupport beanConfigurerSupport = new BeanConfigurerSupport();
private final BeanConfigurerSupport beanConfigurerSupport = new BeanConfigurerSupport();


@Override
public void setBeanFactory(BeanFactory beanFactory) {
this.beanConfigurerSupport.setBeanWiringInfoResolver(new AnnotationBeanWiringInfoResolver());
this.beanConfigurerSupport.setBeanFactory(beanFactory);
}

@Override
public void afterPropertiesSet() {
this.beanConfigurerSupport.afterPropertiesSet();
}

@Override
public void configureBean(Object bean) {
this.beanConfigurerSupport.configureBean(bean);
}

@Override
public void destroy() {
this.beanConfigurerSupport.destroy();
}
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
/*
* Copyright 2002-2018 the original author or authors.
* Copyright 2002-2020 the original author or authors.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -289,15 +289,15 @@ public TypeDescriptor nested(int level) {
@Override
@Nullable
public Object getValue() throws Exception {
final Method readMethod = this.pd.getReadMethod();
Method readMethod = this.pd.getReadMethod();
if (System.getSecurityManager() != null) {
AccessController.doPrivileged((PrivilegedAction<Object>) () -> {
ReflectionUtils.makeAccessible(readMethod);
return null;
});
try {
return AccessController.doPrivileged((PrivilegedExceptionAction<Object>) () ->
readMethod.invoke(getWrappedInstance(), (Object[]) null), acc);
return AccessController.doPrivileged((PrivilegedExceptionAction<Object>)
() -> readMethod.invoke(getWrappedInstance(), (Object[]) null), acc);
}
catch (PrivilegedActionException pae) {
throw pae.getException();
@@ -310,8 +310,8 @@ public Object getValue() throws Exception {
}

@Override
public void setValue(final @Nullable Object value) throws Exception {
final Method writeMethod = (this.pd instanceof GenericTypeAwarePropertyDescriptor ?
public void setValue(@Nullable Object value) throws Exception {
Method writeMethod = (this.pd instanceof GenericTypeAwarePropertyDescriptor ?
((GenericTypeAwarePropertyDescriptor) this.pd).getWriteMethodForActualAccess() :
this.pd.getWriteMethod());
if (System.getSecurityManager() != null) {
@@ -320,8 +320,8 @@ public void setValue(final @Nullable Object value) throws Exception {
return null;
});
try {
AccessController.doPrivileged((PrivilegedExceptionAction<Object>) () ->
writeMethod.invoke(getWrappedInstance(), value), acc);
AccessController.doPrivileged((PrivilegedExceptionAction<Object>)
() -> writeMethod.invoke(getWrappedInstance(), value), acc);
}
catch (PrivilegedActionException ex) {
throw ex.getException();
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
/*
* Copyright 2002-2019 the original author or authors.
* Copyright 2002-2020 the original author or authors.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -23,14 +23,17 @@
import java.lang.annotation.Target;

/**
* Annotation at the field or method/constructor parameter level
* that indicates a default value expression for the affected argument.
* Annotation used at the field or method/constructor parameter level
* that indicates a default value expression for the annotated element.
*
* <p>Typically used for expression-driven dependency injection. Also supported
* for dynamic resolution of handler method parameters, e.g. in Spring MVC.
* <p>Typically used for expression-driven or property-driven dependency injection.
* Also supported for dynamic resolution of handler method arguments &mdash; for
* example, in Spring MVC.
*
* <p>A common use case is to assign default field values using
* <code>#{systemProperties.myProp}</code> style expressions.
* <p>A common use case is to inject values using
* <code>#{systemProperties.myProp}</code> style SpEL (Spring Expression Language)
* expressions. Alternatively, values may be injected using
* <code>${my.app.myProp}</code> style property placeholders.
*
* <p>Note that actual processing of the {@code @Value} annotation is performed
* by a {@link org.springframework.beans.factory.config.BeanPostProcessor
@@ -55,7 +58,8 @@
public @interface Value {

/**
* The actual value expression &mdash; for example, <code>#{systemProperties.myProp}</code>.
* The actual value expression such as <code>#{systemProperties.myProp}</code>
* or property placeholder such as <code>${my.app.myProp}</code>.
*/
String value();

Original file line number Diff line number Diff line change
@@ -356,21 +356,20 @@ public Object createBean(Class<?> beanClass, int autowireMode, boolean dependenc
@Override
public Object autowire(Class<?> beanClass, int autowireMode, boolean dependencyCheck) throws BeansException {
// Use non-singleton bean definition, to avoid registering bean as dependent bean.
final RootBeanDefinition bd = new RootBeanDefinition(beanClass, autowireMode, dependencyCheck);
RootBeanDefinition bd = new RootBeanDefinition(beanClass, autowireMode, dependencyCheck);
bd.setScope(SCOPE_PROTOTYPE);
if (bd.getResolvedAutowireMode() == AUTOWIRE_CONSTRUCTOR) {
return autowireConstructor(beanClass.getName(), bd, null, null).getWrappedInstance();
}
else {
Object bean;
final BeanFactory parent = this;
if (System.getSecurityManager() != null) {
bean = AccessController.doPrivileged((PrivilegedAction<Object>) () ->
getInstantiationStrategy().instantiate(bd, null, parent),
bean = AccessController.doPrivileged(
(PrivilegedAction<Object>) () -> getInstantiationStrategy().instantiate(bd, null, this),
getAccessControlContext());
}
else {
bean = getInstantiationStrategy().instantiate(bd, null, parent);
bean = getInstantiationStrategy().instantiate(bd, null, this);
}
populateBean(beanClass.getName(), bd, new BeanWrapperImpl(bean));
return bean;
@@ -545,7 +544,7 @@ protected Object createBean(String beanName, RootBeanDefinition mbd, @Nullable O
* @see #instantiateUsingFactoryMethod
* @see #autowireConstructor
*/
protected Object doCreateBean(final String beanName, final RootBeanDefinition mbd, final @Nullable Object[] args)
protected Object doCreateBean(String beanName, RootBeanDefinition mbd, @Nullable Object[] args)
throws BeanCreationException {

// Instantiate the bean.
@@ -556,7 +555,7 @@ protected Object doCreateBean(final String beanName, final RootBeanDefinition mb
if (instanceWrapper == null) {
instanceWrapper = createBeanInstance(beanName, mbd, args);
}
final Object bean = instanceWrapper.getWrappedInstance();
Object bean = instanceWrapper.getWrappedInstance();
Class<?> beanType = instanceWrapper.getWrappedClass();
if (beanType != NullBean.class) {
mbd.resolvedTargetType = beanType;
@@ -1299,17 +1298,16 @@ protected Constructor<?>[] determineConstructorsFromBeanPostProcessors(@Nullable
* @param mbd the bean definition for the bean
* @return a BeanWrapper for the new instance
*/
protected BeanWrapper instantiateBean(final String beanName, final RootBeanDefinition mbd) {
protected BeanWrapper instantiateBean(String beanName, RootBeanDefinition mbd) {
try {
Object beanInstance;
final BeanFactory parent = this;
if (System.getSecurityManager() != null) {
beanInstance = AccessController.doPrivileged((PrivilegedAction<Object>) () ->
getInstantiationStrategy().instantiate(mbd, beanName, parent),
beanInstance = AccessController.doPrivileged(
(PrivilegedAction<Object>) () -> getInstantiationStrategy().instantiate(mbd, beanName, this),
getAccessControlContext());
}
else {
beanInstance = getInstantiationStrategy().instantiate(mbd, beanName, parent);
beanInstance = getInstantiationStrategy().instantiate(mbd, beanName, this);
}
BeanWrapper bw = new BeanWrapperImpl(beanInstance);
initBeanWrapper(bw);
@@ -1772,7 +1770,7 @@ private Object convertForProperty(
* @see #invokeInitMethods
* @see #applyBeanPostProcessorsAfterInitialization
*/
protected Object initializeBean(final String beanName, final Object bean, @Nullable RootBeanDefinition mbd) {
protected Object initializeBean(String beanName, Object bean, @Nullable RootBeanDefinition mbd) {
if (System.getSecurityManager() != null) {
AccessController.doPrivileged((PrivilegedAction<Object>) () -> {
invokeAwareMethods(beanName, bean);
@@ -1803,7 +1801,7 @@ protected Object initializeBean(final String beanName, final Object bean, @Nulla
return wrappedBean;
}

private void invokeAwareMethods(final String beanName, final Object bean) {
private void invokeAwareMethods(String beanName, Object bean) {
if (bean instanceof Aware) {
if (bean instanceof BeanNameAware) {
((BeanNameAware) bean).setBeanName(beanName);
@@ -1832,7 +1830,7 @@ private void invokeAwareMethods(final String beanName, final Object bean) {
* @throws Throwable if thrown by init methods or by the invocation process
* @see #invokeCustomInitMethod
*/
protected void invokeInitMethods(String beanName, final Object bean, @Nullable RootBeanDefinition mbd)
protected void invokeInitMethods(String beanName, Object bean, @Nullable RootBeanDefinition mbd)
throws Throwable {

boolean isInitializingBean = (bean instanceof InitializingBean);
@@ -1873,7 +1871,7 @@ protected void invokeInitMethods(String beanName, final Object bean, @Nullable R
* methods with arguments.
* @see #invokeInitMethods
*/
protected void invokeCustomInitMethod(String beanName, final Object bean, RootBeanDefinition mbd)
protected void invokeCustomInitMethod(String beanName, Object bean, RootBeanDefinition mbd)
throws Throwable {

String initMethodName = mbd.getInitMethodName();
@@ -1908,8 +1906,8 @@ protected void invokeCustomInitMethod(String beanName, final Object bean, RootBe
return null;
});
try {
AccessController.doPrivileged((PrivilegedExceptionAction<Object>) () ->
methodToInvoke.invoke(bean), getAccessControlContext());
AccessController.doPrivileged((PrivilegedExceptionAction<Object>)
() -> methodToInvoke.invoke(bean), getAccessControlContext());
}
catch (PrivilegedActionException pae) {
InvocationTargetException ex = (InvocationTargetException) pae.getException();
Loading