adding initial GridFS integration.
This commit is contained in:
		
							parent
							
								
									4ffc95dc7f
								
							
						
					
					
						commit
						0d53b9d9fa
					
				|  | @ -0,0 +1,56 @@ | |||
| package org.springframework.boot.autoconfigure.mongo; | ||||
| 
 | ||||
| import com.mongodb.Mongo; | ||||
| import org.springframework.beans.factory.annotation.Autowired; | ||||
| import org.springframework.boot.autoconfigure.AutoConfigureAfter; | ||||
| import org.springframework.boot.autoconfigure.condition.ConditionalOnClass; | ||||
| import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean; | ||||
| import org.springframework.boot.context.properties.EnableConfigurationProperties; | ||||
| import org.springframework.context.annotation.Bean; | ||||
| import org.springframework.context.annotation.Configuration; | ||||
| import org.springframework.data.mongodb.MongoDbFactory; | ||||
| import org.springframework.data.mongodb.core.MongoTemplate; | ||||
| import org.springframework.data.mongodb.core.SimpleMongoDbFactory; | ||||
| import org.springframework.data.mongodb.gridfs.GridFsTemplate; | ||||
| import org.springframework.util.StringUtils; | ||||
| 
 | ||||
| /** | ||||
|  * <P> | ||||
|  * {@link org.springframework.boot.autoconfigure.EnableAutoConfiguration Auto-configuration} for | ||||
|  * Mongo's {@link com.mongodb.gridfs.GridFS Grid FS} Spring Data's | ||||
|  * {@link org.springframework.data.mongodb.gridfs.GridFsTemplate GridFsTemplate}. | ||||
|  * | ||||
|  * <p> | ||||
|  * You can override which GridFS database is used by specifying {@code spring.data.mongodb.gridFsDatabase}, | ||||
|  * otherwise it defaults to the general {@code spring.data.mongodb.database} parameter. | ||||
|  * | ||||
|  * @author Josh Long | ||||
|  */ | ||||
| @Configuration | ||||
| @ConditionalOnClass({Mongo.class, GridFsTemplate.class}) | ||||
| @EnableConfigurationProperties(MongoProperties.class) | ||||
| @AutoConfigureAfter(MongoTemplateAutoConfiguration.class) | ||||
| public class GridFsTemplateAutoConfiguration { | ||||
| 
 | ||||
|     @Autowired | ||||
|     private MongoProperties mongoProperties; | ||||
| 
 | ||||
|     @Bean | ||||
|     @ConditionalOnMissingBean | ||||
|     public MongoDbFactory mongoDbFactory(Mongo mongo) throws Exception { | ||||
| 
 | ||||
|         String db = StringUtils.hasText(this.mongoProperties.getGridFsDatabase()) ? | ||||
|                 this.mongoProperties.getGridFsDatabase() : this.mongoProperties.getMongoClientDatabase() ; | ||||
| 
 | ||||
|         return new SimpleMongoDbFactory(mongo, db ); | ||||
|     } | ||||
| 
 | ||||
|     @Bean | ||||
|     @ConditionalOnMissingBean | ||||
|     public GridFsTemplate gridFsTemplate(MongoDbFactory mongoDbFactory, | ||||
|                                          MongoTemplate mongoTemplate) { | ||||
|         return new GridFsTemplate(mongoDbFactory, mongoTemplate.getConverter()); | ||||
|     } | ||||
| 
 | ||||
| 
 | ||||
| } | ||||
|  | @ -16,75 +16,86 @@ | |||
| 
 | ||||
| package org.springframework.boot.autoconfigure.mongo; | ||||
| 
 | ||||
| import java.net.UnknownHostException; | ||||
| 
 | ||||
| import org.springframework.boot.context.properties.ConfigurationProperties; | ||||
| 
 | ||||
| import com.mongodb.DBPort; | ||||
| import com.mongodb.MongoClient; | ||||
| import com.mongodb.MongoClientURI; | ||||
| import org.springframework.boot.context.properties.ConfigurationProperties; | ||||
| 
 | ||||
| import java.net.UnknownHostException; | ||||
| 
 | ||||
| /** | ||||
|  * Configuration properties for Mongo. | ||||
|  *  | ||||
|  * | ||||
|  * @author Dave Syer | ||||
|  * @author Phillip Webb | ||||
|  * @author Josh Long | ||||
|  */ | ||||
| @ConfigurationProperties(prefix = "spring.data.mongodb") | ||||
| public class MongoProperties { | ||||
| 
 | ||||
| 	private String host; | ||||
|     private String host; | ||||
| 
 | ||||
| 	private int port = DBPort.PORT; | ||||
|     private int port = DBPort.PORT; | ||||
| 
 | ||||
| 	private String uri = "mongodb://localhost/test"; | ||||
|     private String uri = "mongodb://localhost/test"; | ||||
| 
 | ||||
| 	private String database; | ||||
|     private String database; | ||||
| 
 | ||||
| 	public String getHost() { | ||||
| 		return this.host; | ||||
| 	} | ||||
|     private String gridFsDatabase; | ||||
| 
 | ||||
| 	public void setHost(String host) { | ||||
| 		this.host = host; | ||||
| 	} | ||||
| 
 | ||||
| 	public String getDatabase() { | ||||
| 		return this.database; | ||||
| 	} | ||||
|     public String getHost() { | ||||
|         return this.host; | ||||
|     } | ||||
| 
 | ||||
| 	public void setDatabase(String database) { | ||||
| 		this.database = database; | ||||
| 	} | ||||
|     public void setHost(String host) { | ||||
|         this.host = host; | ||||
|     } | ||||
| 
 | ||||
| 	public String getUri() { | ||||
| 		return this.uri; | ||||
| 	} | ||||
|     public String getDatabase() { | ||||
|         return this.database; | ||||
|     } | ||||
| 
 | ||||
| 	public void setUri(String uri) { | ||||
| 		this.uri = uri; | ||||
| 	} | ||||
|     public void setDatabase(String database) { | ||||
|         this.database = database; | ||||
|     } | ||||
| 
 | ||||
| 	public int getPort() { | ||||
| 		return this.port; | ||||
| 	} | ||||
|     public String getUri() { | ||||
|         return this.uri; | ||||
|     } | ||||
| 
 | ||||
| 	public void setPort(int port) { | ||||
| 		this.port = port; | ||||
| 	} | ||||
|     public void setUri(String uri) { | ||||
|         this.uri = uri; | ||||
|     } | ||||
| 
 | ||||
| 	public String getMongoClientDatabase() { | ||||
| 		if (this.database != null) { | ||||
| 			return this.database; | ||||
| 		} | ||||
| 		return new MongoClientURI(this.uri).getDatabase(); | ||||
| 	} | ||||
|     public int getPort() { | ||||
|         return this.port; | ||||
|     } | ||||
| 
 | ||||
| 	public MongoClient createMongoClient() throws UnknownHostException { | ||||
| 		if (this.host != null) { | ||||
| 			return new MongoClient(this.host, this.port); | ||||
| 		} | ||||
| 		return new MongoClient(new MongoClientURI(this.uri)); | ||||
| 	} | ||||
|     public void setPort(int port) { | ||||
|         this.port = port; | ||||
|     } | ||||
| 
 | ||||
|     public String getGridFsDatabase() { | ||||
|         return gridFsDatabase; | ||||
|     } | ||||
| 
 | ||||
|     public void setGridFsDatabase(String gridFsDatabase) { | ||||
|         this.gridFsDatabase = gridFsDatabase; | ||||
|     } | ||||
| 
 | ||||
|     public String getMongoClientDatabase() { | ||||
|         if (this.database != null) { | ||||
|             return this.database; | ||||
|         } | ||||
|         return new MongoClientURI(this.uri).getDatabase(); | ||||
|     } | ||||
| 
 | ||||
|     public MongoClient createMongoClient() throws UnknownHostException { | ||||
|         if (this.host != null) { | ||||
|             return new MongoClient(this.host, this.port); | ||||
|         } | ||||
|         return new MongoClient(new MongoClientURI(this.uri)); | ||||
|     } | ||||
| 
 | ||||
| } | ||||
|  |  | |||
|  | @ -0,0 +1,31 @@ | |||
| package org.springframework.boot.autoconfigure.mongo; | ||||
| 
 | ||||
| 
 | ||||
| import org.junit.After; | ||||
| import org.junit.Test; | ||||
| import org.springframework.boot.autoconfigure.PropertyPlaceholderAutoConfiguration; | ||||
| import org.springframework.context.annotation.AnnotationConfigApplicationContext; | ||||
| import org.springframework.data.mongodb.core.MongoTemplate; | ||||
| import org.springframework.data.mongodb.gridfs.GridFsTemplate; | ||||
| 
 | ||||
| import static org.junit.Assert.assertEquals; | ||||
| 
 | ||||
| public class GridFsTemplateAutoConfigurationTests { | ||||
| 
 | ||||
|     private AnnotationConfigApplicationContext context; | ||||
| 
 | ||||
|     @After | ||||
|     public void close() { | ||||
|         if (this.context != null) { | ||||
|             this.context.close(); | ||||
|         } | ||||
|     } | ||||
| 
 | ||||
|     @Test | ||||
|     public void templateExists() { | ||||
|         this.context = new AnnotationConfigApplicationContext( | ||||
|                 PropertyPlaceholderAutoConfiguration.class, MongoAutoConfiguration.class, | ||||
|                 MongoTemplateAutoConfiguration.class , GridFsTemplateAutoConfiguration.class); | ||||
|         assertEquals(1, this.context.getBeanNamesForType(GridFsTemplate.class).length); | ||||
|     } | ||||
| } | ||||
		Loading…
	
		Reference in New Issue