Merge branch '6.2.x'

# Conflicts:
#	spring-beans/src/main/java/org/springframework/beans/factory/support/FactoryBeanRegistrySupport.java
This commit is contained in:
Juergen Hoeller 2025-10-02 13:17:45 +02:00
commit 7089bdcc3a
2 changed files with 15 additions and 1 deletions

View File

@ -134,7 +134,17 @@ public abstract class FactoryBeanRegistrySupport extends DefaultSingletonBeanReg
boolean smart = (factory instanceof SmartFactoryBean<?>);
Object object = (!smart ? this.factoryBeanObjectCache.get(beanName) : null);
if (object == null) {
object = doGetObjectFromFactoryBean(factory, requiredType, beanName);
if (locked) {
// The common case: within general singleton lock.
object = doGetObjectFromFactoryBean(factory, requiredType, beanName);
}
else {
// Fall back to local synchronization on the given FactoryBean instance,
// as a defensive measure for non-thread-safe FactoryBean implementations.
synchronized (factory) {
object = doGetObjectFromFactoryBean(factory, requiredType, beanName);
}
}
// Only post-process and store if not put there already during getObject() call above
// (for example, because of circular reference processing triggered by custom getBean calls)
Object alreadyThere = (!smart ? this.factoryBeanObjectCache.get(beanName) : null);

View File

@ -182,6 +182,10 @@ public abstract class JdbcTransactionObjectSupport implements SavepointManager,
// typically on Oracle - ignore
}
catch (SQLException ex) {
if ("3B001".equals(ex.getSQLState())) {
// Savepoint already released (HSQLDB, PostgreSQL, DB2) - ignore
return;
}
// ignore Microsoft SQLServerException: This operation is not supported.
String msg = ex.getMessage();
if (msg == null || !msg.contains("not supported")) {