Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Submit feedback
Sign in / Register
Toggle navigation
S
spring-boot
Project
Project
Details
Activity
Releases
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
DEMO
spring-boot
Commits
4c32d6a7
Commit
4c32d6a7
authored
Apr 03, 2017
by
Stephane Nicoll
Browse files
Options
Browse Files
Download
Plain Diff
Merge branch '1.5.x'
parents
13e5d985
01637310
Changes
7
Hide whitespace changes
Inline
Side-by-side
Showing
7 changed files
with
157 additions
and
40 deletions
+157
-40
Neo4jDataAutoConfiguration.java
.../autoconfigure/data/neo4j/Neo4jDataAutoConfiguration.java
+0
-3
DataSourceTransactionManagerAutoConfiguration.java
...e/jdbc/DataSourceTransactionManagerAutoConfiguration.java
+1
-10
HibernateJpaAutoConfiguration.java
.../autoconfigure/orm/jpa/HibernateJpaAutoConfiguration.java
+1
-3
TransactionAutoConfiguration.java
...toconfigure/transaction/TransactionAutoConfiguration.java
+29
-2
Neo4jDataAutoConfigurationTests.java
...configure/data/neo4j/Neo4jDataAutoConfigurationTests.java
+1
-1
DataSourceTransactionManagerAutoConfigurationTests.java
...c/DataSourceTransactionManagerAutoConfigurationTests.java
+3
-15
TransactionAutoConfigurationTests.java
...figure/transaction/TransactionAutoConfigurationTests.java
+122
-6
No files found.
spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/data/neo4j/Neo4jDataAutoConfiguration.java
View file @
4c32d6a7
...
...
@@ -23,7 +23,6 @@ import org.neo4j.ogm.session.event.EventListener;
import
org.springframework.beans.factory.ObjectProvider
;
import
org.springframework.boot.autoconfigure.AutoConfigurationPackages
;
import
org.springframework.boot.autoconfigure.AutoConfigureAfter
;
import
org.springframework.boot.autoconfigure.EnableAutoConfiguration
;
import
org.springframework.boot.autoconfigure.condition.ConditionalOnClass
;
import
org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean
;
...
...
@@ -31,7 +30,6 @@ import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty;
import
org.springframework.boot.autoconfigure.condition.ConditionalOnWebApplication
;
import
org.springframework.boot.autoconfigure.condition.ConditionalOnWebApplication.Type
;
import
org.springframework.boot.autoconfigure.domain.EntityScanPackages
;
import
org.springframework.boot.autoconfigure.transaction.TransactionAutoConfiguration
;
import
org.springframework.boot.autoconfigure.transaction.TransactionManagerCustomizers
;
import
org.springframework.boot.context.properties.EnableConfigurationProperties
;
import
org.springframework.context.ApplicationContext
;
...
...
@@ -54,7 +52,6 @@ import org.springframework.web.servlet.config.annotation.WebMvcConfigurerAdapter
* @since 1.4.0
*/
@Configuration
@AutoConfigureAfter
(
TransactionAutoConfiguration
.
class
)
@ConditionalOnClass
({
SessionFactory
.
class
,
PlatformTransactionManager
.
class
})
@ConditionalOnMissingBean
(
SessionFactory
.
class
)
@EnableConfigurationProperties
(
Neo4jProperties
.
class
)
...
...
spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/jdbc/DataSourceTransactionManagerAutoConfiguration.java
View file @
4c32d6a7
/*
* Copyright 2012-201
6
the original author or authors.
* Copyright 2012-201
7
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.
...
...
@@ -32,8 +32,6 @@ import org.springframework.core.Ordered;
import
org.springframework.jdbc.core.JdbcTemplate
;
import
org.springframework.jdbc.datasource.DataSourceTransactionManager
;
import
org.springframework.transaction.PlatformTransactionManager
;
import
org.springframework.transaction.annotation.AbstractTransactionManagementConfiguration
;
import
org.springframework.transaction.annotation.EnableTransactionManagement
;
/**
* {@link EnableAutoConfiguration Auto-configuration} for
...
...
@@ -79,11 +77,4 @@ public class DataSourceTransactionManagerAutoConfiguration {
}
@ConditionalOnMissingBean
(
AbstractTransactionManagementConfiguration
.
class
)
@Configuration
@EnableTransactionManagement
(
proxyTargetClass
=
true
)
protected
static
class
TransactionManagementConfiguration
{
}
}
spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/orm/jpa/HibernateJpaAutoConfiguration.java
View file @
4c32d6a7
...
...
@@ -48,7 +48,6 @@ import org.springframework.jndi.JndiLocatorDelegate;
import
org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean
;
import
org.springframework.orm.jpa.vendor.AbstractJpaVendorAdapter
;
import
org.springframework.orm.jpa.vendor.HibernateJpaVendorAdapter
;
import
org.springframework.transaction.annotation.EnableTransactionManagement
;
import
org.springframework.transaction.jta.JtaTransactionManager
;
import
org.springframework.util.ClassUtils
;
...
...
@@ -61,8 +60,7 @@ import org.springframework.util.ClassUtils;
* @author Andy Wilkinson
*/
@Configuration
@ConditionalOnClass
({
LocalContainerEntityManagerFactoryBean
.
class
,
EnableTransactionManagement
.
class
,
EntityManager
.
class
})
@ConditionalOnClass
({
LocalContainerEntityManagerFactoryBean
.
class
,
EntityManager
.
class
})
@Conditional
(
HibernateEntityManagerCondition
.
class
)
@AutoConfigureAfter
({
DataSourceAutoConfiguration
.
class
})
public
class
HibernateJpaAutoConfiguration
extends
JpaBaseConfiguration
{
...
...
spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/transaction/TransactionAutoConfiguration.java
View file @
4c32d6a7
/*
* Copyright 2012-201
6
the original author or authors.
* Copyright 2012-201
7
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.
...
...
@@ -20,9 +20,12 @@ import java.util.List;
import
org.springframework.beans.factory.ObjectProvider
;
import
org.springframework.boot.autoconfigure.AutoConfigureAfter
;
import
org.springframework.boot.autoconfigure.condition.ConditionalOnBean
;
import
org.springframework.boot.autoconfigure.condition.ConditionalOnClass
;
import
org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean
;
import
org.springframework.boot.autoconfigure.condition.ConditionalOnProperty
;
import
org.springframework.boot.autoconfigure.condition.ConditionalOnSingleCandidate
;
import
org.springframework.boot.autoconfigure.data.neo4j.Neo4jDataAutoConfiguration
;
import
org.springframework.boot.autoconfigure.jdbc.DataSourceTransactionManagerAutoConfiguration
;
import
org.springframework.boot.autoconfigure.orm.jpa.HibernateJpaAutoConfiguration
;
import
org.springframework.boot.autoconfigure.transaction.jta.JtaAutoConfiguration
;
...
...
@@ -30,6 +33,8 @@ import org.springframework.boot.context.properties.EnableConfigurationProperties
import
org.springframework.context.annotation.Bean
;
import
org.springframework.context.annotation.Configuration
;
import
org.springframework.transaction.PlatformTransactionManager
;
import
org.springframework.transaction.annotation.AbstractTransactionManagementConfiguration
;
import
org.springframework.transaction.annotation.EnableTransactionManagement
;
import
org.springframework.transaction.support.TransactionTemplate
;
/**
...
...
@@ -42,7 +47,8 @@ import org.springframework.transaction.support.TransactionTemplate;
@Configuration
@ConditionalOnClass
(
PlatformTransactionManager
.
class
)
@AutoConfigureAfter
({
JtaAutoConfiguration
.
class
,
HibernateJpaAutoConfiguration
.
class
,
DataSourceTransactionManagerAutoConfiguration
.
class
})
DataSourceTransactionManagerAutoConfiguration
.
class
,
Neo4jDataAutoConfiguration
.
class
})
@EnableConfigurationProperties
(
TransactionProperties
.
class
)
public
class
TransactionAutoConfiguration
{
...
...
@@ -71,4 +77,25 @@ public class TransactionAutoConfiguration {
}
}
@Configuration
@ConditionalOnBean
(
PlatformTransactionManager
.
class
)
@ConditionalOnMissingBean
(
AbstractTransactionManagementConfiguration
.
class
)
public
static
class
EnableTransactionManagementConfiguration
{
@Configuration
@EnableTransactionManagement
(
proxyTargetClass
=
false
)
@ConditionalOnProperty
(
prefix
=
"spring.aop"
,
name
=
"proxy-target-class"
,
havingValue
=
"false"
,
matchIfMissing
=
false
)
public
static
class
JdkDynamicAutoProxyConfiguration
{
}
@Configuration
@EnableTransactionManagement
(
proxyTargetClass
=
true
)
@ConditionalOnProperty
(
prefix
=
"spring.aop"
,
name
=
"proxy-target-class"
,
havingValue
=
"true"
,
matchIfMissing
=
true
)
public
static
class
CglibAutoProxyConfiguration
{
}
}
}
spring-boot-autoconfigure/src/test/java/org/springframework/boot/autoconfigure/data/neo4j/Neo4jDataAutoConfigurationTests.java
View file @
4c32d6a7
...
...
@@ -146,7 +146,7 @@ public class Neo4jDataAutoConfigurationTests {
ctx
.
register
(
config
);
}
ctx
.
register
(
TestConfiguration
.
class
,
PropertyPlaceholderAutoConfiguration
.
class
,
TransactionAutoConfiguration
.
class
,
Neo4jData
AutoConfiguration
.
class
);
Neo4jDataAutoConfiguration
.
class
,
Transaction
AutoConfiguration
.
class
);
ctx
.
refresh
();
this
.
context
=
ctx
;
}
...
...
spring-boot-autoconfigure/src/test/java/org/springframework/boot/autoconfigure/jdbc/DataSourceTransactionManagerAutoConfigurationTests.java
View file @
4c32d6a7
/*
* Copyright 2012-201
6
the original author or authors.
* Copyright 2012-201
7
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.
...
...
@@ -28,7 +28,6 @@ import org.springframework.context.annotation.Configuration;
import
org.springframework.jdbc.datasource.DataSourceTransactionManager
;
import
org.springframework.transaction.PlatformTransactionManager
;
import
org.springframework.transaction.annotation.AbstractTransactionManagementConfiguration
;
import
org.springframework.transaction.annotation.EnableTransactionManagement
;
import
static
org
.
assertj
.
core
.
api
.
Assertions
.
assertThat
;
import
static
org
.
mockito
.
Mockito
.
mock
;
...
...
@@ -52,8 +51,6 @@ public class DataSourceTransactionManagerAutoConfigurationTests {
this
.
context
.
refresh
();
assertThat
(
this
.
context
.
getBean
(
DataSource
.
class
)).
isNotNull
();
assertThat
(
this
.
context
.
getBean
(
DataSourceTransactionManager
.
class
)).
isNotNull
();
assertThat
(
this
.
context
.
getBean
(
AbstractTransactionManagementConfiguration
.
class
))
.
isNotNull
();
}
@Test
...
...
@@ -68,8 +65,7 @@ public class DataSourceTransactionManagerAutoConfigurationTests {
@Test
public
void
testManualConfiguration
()
throws
Exception
{
this
.
context
.
register
(
SwitchTransactionsOn
.
class
,
EmbeddedDataSourceConfiguration
.
class
,
this
.
context
.
register
(
EmbeddedDataSourceConfiguration
.
class
,
DataSourceTransactionManagerAutoConfiguration
.
class
,
TransactionAutoConfiguration
.
class
);
this
.
context
.
refresh
();
...
...
@@ -79,8 +75,7 @@ public class DataSourceTransactionManagerAutoConfigurationTests {
@Test
public
void
testExistingTransactionManager
()
{
this
.
context
.
register
(
SwitchTransactionsOn
.
class
,
TransactionManagerConfiguration
.
class
,
this
.
context
.
register
(
TransactionManagerConfiguration
.
class
,
EmbeddedDataSourceConfiguration
.
class
,
DataSourceTransactionManagerAutoConfiguration
.
class
,
TransactionAutoConfiguration
.
class
);
...
...
@@ -99,8 +94,6 @@ public class DataSourceTransactionManagerAutoConfigurationTests {
this
.
context
.
refresh
();
assertThat
(
this
.
context
.
getBeansOfType
(
PlatformTransactionManager
.
class
))
.
isEmpty
();
assertThat
(
this
.
context
.
getBean
(
AbstractTransactionManagementConfiguration
.
class
))
.
isNotNull
();
}
@Test
...
...
@@ -130,11 +123,6 @@ public class DataSourceTransactionManagerAutoConfigurationTests {
assertThat
(
transactionManager
.
isRollbackOnCommitFailure
()).
isTrue
();
}
@EnableTransactionManagement
protected
static
class
SwitchTransactionsOn
{
}
@Configuration
protected
static
class
TransactionManagerConfiguration
{
...
...
spring-boot-autoconfigure/src/test/java/org/springframework/boot/autoconfigure/transaction/TransactionAutoConfigurationTests.java
View file @
4c32d6a7
/*
* Copyright 2012-201
6
the original author or authors.
* Copyright 2012-201
7
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.
...
...
@@ -19,17 +19,25 @@ package org.springframework.boot.autoconfigure.transaction;
import
java.util.List
;
import
java.util.Map
;
import
javax.sql.DataSource
;
import
org.junit.After
;
import
org.junit.Test
;
import
org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration
;
import
org.springframework.boot.autoconfigure.jdbc.DataSourceBuilder
;
import
org.springframework.boot.autoconfigure.jdbc.DataSourceTransactionManagerAutoConfiguration
;
import
org.springframework.boot.test.util.EnvironmentTestUtils
;
import
org.springframework.context.annotation.AnnotationConfigApplicationContext
;
import
org.springframework.context.annotation.Bean
;
import
org.springframework.context.annotation.Configuration
;
import
org.springframework.context.annotation.Import
;
import
org.springframework.jdbc.datasource.DataSourceTransactionManager
;
import
org.springframework.test.util.ReflectionTestUtils
;
import
org.springframework.transaction.PlatformTransactionManager
;
import
org.springframework.transaction.annotation.EnableTransactionManagement
;
import
org.springframework.transaction.annotation.Transactional
;
import
org.springframework.transaction.support.TransactionSynchronizationManager
;
import
org.springframework.transaction.support.TransactionTemplate
;
import
static
org
.
assertj
.
core
.
api
.
Assertions
.
assertThat
;
...
...
@@ -60,8 +68,8 @@ public class TransactionAutoConfigurationTests {
@Test
public
void
singleTransactionManager
()
{
load
(
DataSourceAutoConfiguration
.
class
,
DataSourceTransactionManagerAutoConfiguration
.
class
);
load
(
new
Class
<?>[]
{
DataSourceAutoConfiguration
.
class
,
DataSourceTransactionManagerAutoConfiguration
.
class
}
);
PlatformTransactionManager
transactionManager
=
this
.
context
.
getBean
(
PlatformTransactionManager
.
class
);
TransactionTemplate
transactionTemplate
=
this
.
context
...
...
@@ -93,15 +101,53 @@ public class TransactionAutoConfigurationTests {
List
<?>
field
=
(
List
<?>)
ReflectionTestUtils
.
getField
(
customizers
,
"customizers"
);
assertThat
(
field
).
hasSize
(
1
).
first
().
isInstanceOf
(
TransactionProperties
.
class
);
}
@Test
public
void
transactionNotManagedWithNoTransactionManager
()
{
load
(
BaseConfiguration
.
class
);
assertThat
(
this
.
context
.
getBean
(
TransactionalService
.
class
)
.
isTransactionActive
()).
isFalse
();
}
@Test
public
void
transactionManagerUsesCglibByDefault
()
{
load
(
TransactionManagersConfiguration
.
class
);
assertThat
(
this
.
context
.
getBean
(
AnotherServiceImpl
.
class
)
.
isTransactionActive
()).
isTrue
();
assertThat
(
this
.
context
.
getBeansOfType
(
TransactionalServiceImpl
.
class
)).
hasSize
(
1
);
}
@Test
public
void
transactionManagerCanBeConfiguredToJdkProxy
()
{
load
(
TransactionManagersConfiguration
.
class
,
"spring.aop.proxy-target-class=false"
);
assertThat
(
this
.
context
.
getBean
(
AnotherService
.
class
)
.
isTransactionActive
()).
isTrue
();
assertThat
(
this
.
context
.
getBeansOfType
(
AnotherServiceImpl
.
class
)).
hasSize
(
0
);
assertThat
(
this
.
context
.
getBeansOfType
(
TransactionalServiceImpl
.
class
)).
hasSize
(
0
);
}
@Test
public
void
customEnableTransactionManagementTakesPrecedence
()
{
load
(
new
Class
<?>[]
{
CustomTransactionManagementConfiguration
.
class
,
TransactionManagersConfiguration
.
class
},
"spring.aop.proxy-target-class=true"
);
assertThat
(
this
.
context
.
getBean
(
AnotherService
.
class
)
.
isTransactionActive
()).
isTrue
();
assertThat
(
this
.
context
.
getBeansOfType
(
AnotherServiceImpl
.
class
)).
hasSize
(
0
);
assertThat
(
this
.
context
.
getBeansOfType
(
TransactionalServiceImpl
.
class
)).
hasSize
(
0
);
}
private
void
load
(
Class
<?>
config
,
String
...
environment
)
{
load
(
new
Class
<?>[]
{
config
},
environment
);
}
private
void
load
(
Class
<?>
...
configs
)
{
private
void
load
(
Class
<?>
[]
configs
,
String
...
environment
)
{
AnnotationConfigApplicationContext
applicationContext
=
new
AnnotationConfigApplicationContext
();
applicationContext
.
register
(
configs
);
applicationContext
.
register
(
TransactionAutoConfiguration
.
class
);
EnvironmentTestUtils
.
addEnvironment
(
applicationContext
,
"spring.datasource.initialize:false"
);
EnvironmentTestUtils
.
addEnvironment
(
applicationContext
,
environment
);
applicationContext
.
refresh
();
this
.
context
=
applicationContext
;
}
...
...
@@ -141,4 +187,74 @@ public class TransactionAutoConfigurationTests {
}
@Configuration
static
class
BaseConfiguration
{
@Bean
public
TransactionalService
transactionalService
()
{
return
new
TransactionalServiceImpl
();
}
@Bean
public
AnotherServiceImpl
anotherService
()
{
return
new
AnotherServiceImpl
();
}
}
@Configuration
@Import
(
BaseConfiguration
.
class
)
static
class
TransactionManagersConfiguration
{
@Bean
public
DataSourceTransactionManager
transactionManager
()
{
return
new
DataSourceTransactionManager
(
dataSource
());
}
@Bean
public
DataSource
dataSource
()
{
return
DataSourceBuilder
.
create
()
.
driverClassName
(
"org.hsqldb.jdbc.JDBCDriver"
)
.
url
(
"jdbc:hsqldb:mem:tx"
).
username
(
"sa"
).
build
();
}
}
@Configuration
@EnableTransactionManagement
(
proxyTargetClass
=
false
)
static
class
CustomTransactionManagementConfiguration
{
}
interface
TransactionalService
{
@Transactional
boolean
isTransactionActive
();
}
static
class
TransactionalServiceImpl
implements
TransactionalService
{
@Override
public
boolean
isTransactionActive
()
{
return
TransactionSynchronizationManager
.
isActualTransactionActive
();
}
}
interface
AnotherService
{
boolean
isTransactionActive
();
}
static
class
AnotherServiceImpl
implements
AnotherService
{
@Override
@Transactional
public
boolean
isTransactionActive
()
{
return
TransactionSynchronizationManager
.
isActualTransactionActive
();
}
}
}
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment