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
2e9005de
Commit
2e9005de
authored
Apr 04, 2019
by
ayudovin
Committed by
Madhura Bhave
Apr 15, 2019
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Add property to configure Mongo auto index creation
Closes gh-16454
parent
08260388
Changes
4
Hide whitespace changes
Inline
Side-by-side
Showing
4 changed files
with
42 additions
and
0 deletions
+42
-0
MongoDataConfiguration.java
...boot/autoconfigure/data/mongo/MongoDataConfiguration.java
+4
-0
MongoProperties.java
...ngframework/boot/autoconfigure/mongo/MongoProperties.java
+14
-0
MongoDataAutoConfigurationTests.java
...configure/data/mongo/MongoDataAutoConfigurationTests.java
+12
-0
MongoPropertiesTests.java
...mework/boot/autoconfigure/mongo/MongoPropertiesTests.java
+12
-0
No files found.
spring-boot-project/spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/data/mongo/MongoDataConfiguration.java
View file @
2e9005de
...
@@ -21,6 +21,7 @@ import org.springframework.beans.BeanUtils;
...
@@ -21,6 +21,7 @@ import org.springframework.beans.BeanUtils;
import
org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean
;
import
org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean
;
import
org.springframework.boot.autoconfigure.domain.EntityScanner
;
import
org.springframework.boot.autoconfigure.domain.EntityScanner
;
import
org.springframework.boot.autoconfigure.mongo.MongoProperties
;
import
org.springframework.boot.autoconfigure.mongo.MongoProperties
;
import
org.springframework.boot.context.properties.PropertyMapper
;
import
org.springframework.context.ApplicationContext
;
import
org.springframework.context.ApplicationContext
;
import
org.springframework.context.annotation.Bean
;
import
org.springframework.context.annotation.Bean
;
import
org.springframework.context.annotation.Configuration
;
import
org.springframework.context.annotation.Configuration
;
...
@@ -34,6 +35,7 @@ import org.springframework.data.mongodb.core.mapping.MongoMappingContext;
...
@@ -34,6 +35,7 @@ import org.springframework.data.mongodb.core.mapping.MongoMappingContext;
* Base configuration class for Spring Data's mongo support.
* Base configuration class for Spring Data's mongo support.
*
*
* @author Madhura Bhave
* @author Madhura Bhave
* @author Artsiom Yudovin
*/
*/
@Configuration
(
proxyBeanMethods
=
false
)
@Configuration
(
proxyBeanMethods
=
false
)
class
MongoDataConfiguration
{
class
MongoDataConfiguration
{
...
@@ -43,7 +45,9 @@ class MongoDataConfiguration {
...
@@ -43,7 +45,9 @@ class MongoDataConfiguration {
public
MongoMappingContext
mongoMappingContext
(
ApplicationContext
applicationContext
,
public
MongoMappingContext
mongoMappingContext
(
ApplicationContext
applicationContext
,
MongoProperties
properties
,
MongoCustomConversions
conversions
)
MongoProperties
properties
,
MongoCustomConversions
conversions
)
throws
ClassNotFoundException
{
throws
ClassNotFoundException
{
PropertyMapper
mapper
=
PropertyMapper
.
get
().
alwaysApplyingWhenNonNull
();
MongoMappingContext
context
=
new
MongoMappingContext
();
MongoMappingContext
context
=
new
MongoMappingContext
();
mapper
.
from
(
properties
.
isAutoIndexCreation
()).
to
(
context:
:
setAutoIndexCreation
);
context
.
setInitialEntitySet
(
new
EntityScanner
(
applicationContext
)
context
.
setInitialEntitySet
(
new
EntityScanner
(
applicationContext
)
.
scan
(
Document
.
class
,
Persistent
.
class
));
.
scan
(
Document
.
class
,
Persistent
.
class
));
Class
<?>
strategyClass
=
properties
.
getFieldNamingStrategy
();
Class
<?>
strategyClass
=
properties
.
getFieldNamingStrategy
();
...
...
spring-boot-project/spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/mongo/MongoProperties.java
View file @
2e9005de
...
@@ -31,6 +31,7 @@ import org.springframework.boot.context.properties.ConfigurationProperties;
...
@@ -31,6 +31,7 @@ import org.springframework.boot.context.properties.ConfigurationProperties;
* @author Stephane Nicoll
* @author Stephane Nicoll
* @author Nasko Vasilev
* @author Nasko Vasilev
* @author Mark Paluch
* @author Mark Paluch
* @author Artsiom Yudovin
*/
*/
@ConfigurationProperties
(
prefix
=
"spring.data.mongodb"
)
@ConfigurationProperties
(
prefix
=
"spring.data.mongodb"
)
public
class
MongoProperties
{
public
class
MongoProperties
{
...
@@ -90,6 +91,11 @@ public class MongoProperties {
...
@@ -90,6 +91,11 @@ public class MongoProperties {
*/
*/
private
Class
<?>
fieldNamingStrategy
;
private
Class
<?>
fieldNamingStrategy
;
/**
* Enables/disables auto-index creation.
*/
private
Boolean
autoIndexCreation
;
public
String
getHost
()
{
public
String
getHost
()
{
return
this
.
host
;
return
this
.
host
;
}
}
...
@@ -173,4 +179,12 @@ public class MongoProperties {
...
@@ -173,4 +179,12 @@ public class MongoProperties {
return
new
MongoClientURI
(
determineUri
()).
getDatabase
();
return
new
MongoClientURI
(
determineUri
()).
getDatabase
();
}
}
public
Boolean
isAutoIndexCreation
()
{
return
this
.
autoIndexCreation
;
}
public
void
setAutoIndexCreation
(
Boolean
autoIndexCreation
)
{
this
.
autoIndexCreation
=
autoIndexCreation
;
}
}
}
spring-boot-project/spring-boot-autoconfigure/src/test/java/org/springframework/boot/autoconfigure/data/mongo/MongoDataAutoConfigurationTests.java
View file @
2e9005de
...
@@ -132,6 +132,18 @@ public class MongoDataAutoConfigurationTests {
...
@@ -132,6 +132,18 @@ public class MongoDataAutoConfigurationTests {
});
});
}
}
@Test
public
void
customAutoIndexCreation
()
{
this
.
contextRunner
.
withPropertyValues
(
"spring.data.mongodb.autoIndexCreation:true"
)
.
run
((
context
)
->
{
MongoMappingContext
mappingContext
=
context
.
getBean
(
MongoMappingContext
.
class
);
assertThat
(
mappingContext
.
isAutoIndexCreation
())
.
isEqualTo
(
Boolean
.
TRUE
);
});
}
@Test
@Test
public
void
interfaceFieldNamingStrategy
()
{
public
void
interfaceFieldNamingStrategy
()
{
this
.
contextRunner
this
.
contextRunner
...
...
spring-boot-project/spring-boot-autoconfigure/src/test/java/org/springframework/boot/autoconfigure/mongo/MongoPropertiesTests.java
View file @
2e9005de
...
@@ -37,6 +37,7 @@ import static org.assertj.core.api.Assertions.assertThat;
...
@@ -37,6 +37,7 @@ import static org.assertj.core.api.Assertions.assertThat;
* @author Andy Wilkinson
* @author Andy Wilkinson
* @author Stephane Nicoll
* @author Stephane Nicoll
* @author Mark Paluch
* @author Mark Paluch
* @author Artsiom Yudovin
*/
*/
public
class
MongoPropertiesTests
{
public
class
MongoPropertiesTests
{
...
@@ -155,6 +156,17 @@ public class MongoPropertiesTests {
...
@@ -155,6 +156,17 @@ public class MongoPropertiesTests {
assertServerAddress
(
allAddresses
.
get
(
0
),
"localhost"
,
27017
);
assertServerAddress
(
allAddresses
.
get
(
0
),
"localhost"
,
27017
);
}
}
@Test
public
void
canBindAutoIndexCreation
()
{
AnnotationConfigApplicationContext
context
=
new
AnnotationConfigApplicationContext
();
TestPropertyValues
.
of
(
"spring.data.mongodb.autoIndexCreation:true"
)
.
applyTo
(
context
);
context
.
register
(
Config
.
class
);
context
.
refresh
();
MongoProperties
properties
=
context
.
getBean
(
MongoProperties
.
class
);
assertThat
(
properties
.
isAutoIndexCreation
()).
isEqualTo
(
Boolean
.
TRUE
);
}
private
void
assertServerAddress
(
ServerAddress
serverAddress
,
String
expectedHost
,
private
void
assertServerAddress
(
ServerAddress
serverAddress
,
String
expectedHost
,
int
expectedPort
)
{
int
expectedPort
)
{
assertThat
(
serverAddress
.
getHost
()).
isEqualTo
(
expectedHost
);
assertThat
(
serverAddress
.
getHost
()).
isEqualTo
(
expectedHost
);
...
...
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