DATAMONGO-476 - JavaConfig support for repositories.
This commit is contained in:
@@ -18,7 +18,7 @@
|
|||||||
<org.springframework.version.30>3.0.7.RELEASE</org.springframework.version.30>
|
<org.springframework.version.30>3.0.7.RELEASE</org.springframework.version.30>
|
||||||
<org.springframework.version.40>4.0.0.RELEASE</org.springframework.version.40>
|
<org.springframework.version.40>4.0.0.RELEASE</org.springframework.version.40>
|
||||||
<org.springframework.version.range>[${org.springframework.version.30}, ${org.springframework.version.40})</org.springframework.version.range>
|
<org.springframework.version.range>[${org.springframework.version.30}, ${org.springframework.version.40})</org.springframework.version.range>
|
||||||
<data.commons.version>1.3.2.BUILD-SNAPSHOT</data.commons.version>
|
<data.commons.version>1.4.0.BUILD-SNAPSHOT</data.commons.version>
|
||||||
<aspectj.version>1.6.11.RELEASE</aspectj.version>
|
<aspectj.version>1.6.11.RELEASE</aspectj.version>
|
||||||
<bundlor.failOnWarnings>true</bundlor.failOnWarnings>
|
<bundlor.failOnWarnings>true</bundlor.failOnWarnings>
|
||||||
</properties>
|
</properties>
|
||||||
|
|||||||
@@ -16,7 +16,9 @@
|
|||||||
package org.springframework.data.mongodb.config;
|
package org.springframework.data.mongodb.config;
|
||||||
|
|
||||||
import org.springframework.beans.factory.xml.NamespaceHandlerSupport;
|
import org.springframework.beans.factory.xml.NamespaceHandlerSupport;
|
||||||
import org.springframework.data.mongodb.repository.config.MongoRepositoryConfigParser;
|
import org.springframework.data.mongodb.repository.config.MongoRepositoryConfigurationExtension;
|
||||||
|
import org.springframework.data.repository.config.RepositoryBeanDefinitionParser;
|
||||||
|
import org.springframework.data.repository.config.RepositoryConfigurationExtension;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* {@link org.springframework.beans.factory.xml.NamespaceHandler} for Mongo DB based repositories.
|
* {@link org.springframework.beans.factory.xml.NamespaceHandler} for Mongo DB based repositories.
|
||||||
@@ -32,7 +34,10 @@ public class MongoNamespaceHandler extends NamespaceHandlerSupport {
|
|||||||
*/
|
*/
|
||||||
public void init() {
|
public void init() {
|
||||||
|
|
||||||
registerBeanDefinitionParser("repositories", new MongoRepositoryConfigParser());
|
RepositoryConfigurationExtension extension = new MongoRepositoryConfigurationExtension();
|
||||||
|
RepositoryBeanDefinitionParser repositoryBeanDefinitionParser = new RepositoryBeanDefinitionParser(extension);
|
||||||
|
|
||||||
|
registerBeanDefinitionParser("repositories", repositoryBeanDefinitionParser);
|
||||||
registerBeanDefinitionParser("mapping-converter", new MappingMongoConverterParser());
|
registerBeanDefinitionParser("mapping-converter", new MappingMongoConverterParser());
|
||||||
registerBeanDefinitionParser("mongo", new MongoParser());
|
registerBeanDefinitionParser("mongo", new MongoParser());
|
||||||
registerBeanDefinitionParser("db-factory", new MongoDbFactoryParser());
|
registerBeanDefinitionParser("db-factory", new MongoDbFactoryParser());
|
||||||
|
|||||||
@@ -0,0 +1,120 @@
|
|||||||
|
/*
|
||||||
|
* Copyright 2012 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.
|
||||||
|
* You may obtain a copy of the License at
|
||||||
|
*
|
||||||
|
* http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
*
|
||||||
|
* Unless required by applicable law or agreed to in writing, software
|
||||||
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
* See the License for the specific language governing permissions and
|
||||||
|
* limitations under the License.
|
||||||
|
*/
|
||||||
|
package org.springframework.data.mongodb.repository.config;
|
||||||
|
|
||||||
|
import java.lang.annotation.Documented;
|
||||||
|
import java.lang.annotation.ElementType;
|
||||||
|
import java.lang.annotation.Retention;
|
||||||
|
import java.lang.annotation.RetentionPolicy;
|
||||||
|
import java.lang.annotation.Target;
|
||||||
|
|
||||||
|
import org.springframework.beans.factory.FactoryBean;
|
||||||
|
import org.springframework.context.annotation.ComponentScan.Filter;
|
||||||
|
import org.springframework.context.annotation.Import;
|
||||||
|
import org.springframework.data.mongodb.core.MongoTemplate;
|
||||||
|
import org.springframework.data.mongodb.repository.support.MongoRepositoryFactoryBean;
|
||||||
|
import org.springframework.data.repository.query.QueryLookupStrategy;
|
||||||
|
import org.springframework.data.repository.query.QueryLookupStrategy.Key;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Annotation to activate MongoDB repositories. If no base package is configured through either {@link #value()},
|
||||||
|
* {@link #basePackages()} or {@link #basePackageClasses()} it will trigger scanning of the package of annotated class.
|
||||||
|
*
|
||||||
|
* @author Oliver Gierke
|
||||||
|
*/
|
||||||
|
@Target(ElementType.TYPE)
|
||||||
|
@Retention(RetentionPolicy.RUNTIME)
|
||||||
|
@Documented
|
||||||
|
@Import(MongoRepositoriesRegistrar.class)
|
||||||
|
public @interface EnableMongoRepositories {
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Alias for the {@link #basePackages()} attribute. Allows for more concise annotation declarations e.g.:
|
||||||
|
* {@code @EnableJpaRepositories("org.my.pkg")} instead of {@code @EnableJpaRepositories(basePackages="org.my.pkg")}.
|
||||||
|
*/
|
||||||
|
String[] value() default {};
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Base packages to scan for annotated components. {@link #value()} is an alias for (and mutually exclusive with) this
|
||||||
|
* attribute. Use {@link #basePackageClasses()} for a type-safe alternative to String-based package names.
|
||||||
|
*/
|
||||||
|
String[] basePackages() default {};
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Type-safe alternative to {@link #basePackages()} for specifying the packages to scan for annotated components. The
|
||||||
|
* package of each class specified will be scanned. Consider creating a special no-op marker class or interface in
|
||||||
|
* each package that serves no purpose other than being referenced by this attribute.
|
||||||
|
*/
|
||||||
|
Class<?>[] basePackageClasses() default {};
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Specifies which types are eligible for component scanning. Further narrows the set of candidate components from
|
||||||
|
* everything in {@link #basePackages()} to everything in the base packages that matches the given filter or filters.
|
||||||
|
*/
|
||||||
|
Filter[] includeFilters() default {};
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Specifies which types are not eligible for component scanning.
|
||||||
|
*/
|
||||||
|
Filter[] excludeFilters() default {};
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Returns the postfix to be used when looking up custom repository implementations. Defaults to {@literal Impl}. So
|
||||||
|
* for a repository named {@code PersonRepository} the corresponding implementation class will be looked up scanning
|
||||||
|
* for {@code PersonRepositoryImpl}.
|
||||||
|
*
|
||||||
|
* @return
|
||||||
|
*/
|
||||||
|
String repositoryImplementationPostfix() default "";
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Configures the location of where to find the Spring Data named queries properties file. Will default to
|
||||||
|
* {@code META-INFO/mongo-named-queries.properties}.
|
||||||
|
*
|
||||||
|
* @return
|
||||||
|
*/
|
||||||
|
String namedQueriesLocation() default "";
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Returns the key of the {@link QueryLookupStrategy} to be used for lookup queries for query methods. Defaults to
|
||||||
|
* {@link Key#CREATE_IF_NOT_FOUND}.
|
||||||
|
*
|
||||||
|
* @return
|
||||||
|
*/
|
||||||
|
Key queryLookupStrategy() default Key.CREATE_IF_NOT_FOUND;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Returns the {@link FactoryBean} class to be used for each repository instance. Defaults to
|
||||||
|
* {@link MongoRepositoryFactoryBean}.
|
||||||
|
*
|
||||||
|
* @return
|
||||||
|
*/
|
||||||
|
Class<?> repositoryFactoryBeanClass() default MongoRepositoryFactoryBean.class;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Configures the name of the {@link MongoTemplate} bean to be used with the repositories detected.
|
||||||
|
*
|
||||||
|
* @return
|
||||||
|
*/
|
||||||
|
String mongoTemplateRef() default "mongoTemplate";
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Whether to automatically create indexes for query methods defined in the repository interface.
|
||||||
|
*
|
||||||
|
* @return
|
||||||
|
*/
|
||||||
|
boolean createIndexesForQueryMethods() default false;
|
||||||
|
}
|
||||||
@@ -0,0 +1,48 @@
|
|||||||
|
/*
|
||||||
|
* Copyright 2012 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.
|
||||||
|
* You may obtain a copy of the License at
|
||||||
|
*
|
||||||
|
* http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
*
|
||||||
|
* Unless required by applicable law or agreed to in writing, software
|
||||||
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
* See the License for the specific language governing permissions and
|
||||||
|
* limitations under the License.
|
||||||
|
*/
|
||||||
|
package org.springframework.data.mongodb.repository.config;
|
||||||
|
|
||||||
|
import java.lang.annotation.Annotation;
|
||||||
|
|
||||||
|
import org.springframework.context.annotation.ImportBeanDefinitionRegistrar;
|
||||||
|
import org.springframework.data.repository.config.RepositoryBeanDefinitionRegistrarSupport;
|
||||||
|
import org.springframework.data.repository.config.RepositoryConfigurationExtension;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Mongo-specific {@link ImportBeanDefinitionRegistrar}.
|
||||||
|
*
|
||||||
|
* @author Oliver Gierke
|
||||||
|
*/
|
||||||
|
class MongoRepositoriesRegistrar extends RepositoryBeanDefinitionRegistrarSupport {
|
||||||
|
|
||||||
|
/*
|
||||||
|
* (non-Javadoc)
|
||||||
|
* @see org.springframework.data.repository.config.RepositoryBeanDefinitionRegistrarSupport#getAnnotation()
|
||||||
|
*/
|
||||||
|
@Override
|
||||||
|
protected Class<? extends Annotation> getAnnotation() {
|
||||||
|
return EnableMongoRepositories.class;
|
||||||
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
* (non-Javadoc)
|
||||||
|
* @see org.springframework.data.repository.config.RepositoryBeanDefinitionRegistrarSupport#getExtension()
|
||||||
|
*/
|
||||||
|
@Override
|
||||||
|
protected RepositoryConfigurationExtension getExtension() {
|
||||||
|
return new MongoRepositoryConfigurationExtension();
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -1,54 +0,0 @@
|
|||||||
/*
|
|
||||||
* Copyright 2011 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.
|
|
||||||
* You may obtain a copy of the License at
|
|
||||||
*
|
|
||||||
* http://www.apache.org/licenses/LICENSE-2.0
|
|
||||||
*
|
|
||||||
* Unless required by applicable law or agreed to in writing, software
|
|
||||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
||||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
||||||
* See the License for the specific language governing permissions and
|
|
||||||
* limitations under the License.
|
|
||||||
*/
|
|
||||||
package org.springframework.data.mongodb.repository.config;
|
|
||||||
|
|
||||||
import org.springframework.beans.factory.support.BeanDefinitionBuilder;
|
|
||||||
import org.springframework.beans.factory.support.BeanDefinitionRegistry;
|
|
||||||
import org.springframework.data.mongodb.repository.config.SimpleMongoRepositoryConfiguration.MongoRepositoryConfiguration;
|
|
||||||
import org.springframework.data.repository.config.AbstractRepositoryConfigDefinitionParser;
|
|
||||||
import org.w3c.dom.Element;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* {@link org.springframework.beans.factory.xml.BeanDefinitionParser} to create Mongo DB repositories from classpath
|
|
||||||
* scanning or manual definition.
|
|
||||||
*
|
|
||||||
* @author Oliver Gierke
|
|
||||||
*/
|
|
||||||
public class MongoRepositoryConfigParser extends
|
|
||||||
AbstractRepositoryConfigDefinitionParser<SimpleMongoRepositoryConfiguration, MongoRepositoryConfiguration> {
|
|
||||||
|
|
||||||
/*
|
|
||||||
* (non-Javadoc)
|
|
||||||
* @see org.springframework.data.repository.config.AbstractRepositoryConfigDefinitionParser#getGlobalRepositoryConfigInformation(org.w3c.dom.Element)
|
|
||||||
*/
|
|
||||||
@Override
|
|
||||||
protected SimpleMongoRepositoryConfiguration getGlobalRepositoryConfigInformation(Element element) {
|
|
||||||
|
|
||||||
return new SimpleMongoRepositoryConfiguration(element);
|
|
||||||
}
|
|
||||||
|
|
||||||
/*
|
|
||||||
* (non-Javadoc)
|
|
||||||
* @see org.springframework.data.repository.config.AbstractRepositoryConfigDefinitionParser#postProcessBeanDefinition(org.springframework.data.repository.config.SingleRepositoryConfigInformation, org.springframework.beans.factory.support.BeanDefinitionBuilder, org.springframework.beans.factory.support.BeanDefinitionRegistry, java.lang.Object)
|
|
||||||
*/
|
|
||||||
@Override
|
|
||||||
protected void postProcessBeanDefinition(MongoRepositoryConfiguration context, BeanDefinitionBuilder builder,
|
|
||||||
BeanDefinitionRegistry registry, Object beanSource) {
|
|
||||||
|
|
||||||
builder.addPropertyReference("mongoOperations", context.getMongoTemplateRef());
|
|
||||||
builder.addPropertyValue("createIndexesForQueryMethods", context.getCreateQueryIndexes());
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -0,0 +1,82 @@
|
|||||||
|
/*
|
||||||
|
* Copyright 2012 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.
|
||||||
|
* You may obtain a copy of the License at
|
||||||
|
*
|
||||||
|
* http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
*
|
||||||
|
* Unless required by applicable law or agreed to in writing, software
|
||||||
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
* See the License for the specific language governing permissions and
|
||||||
|
* limitations under the License.
|
||||||
|
*/
|
||||||
|
package org.springframework.data.mongodb.repository.config;
|
||||||
|
|
||||||
|
import org.springframework.beans.factory.support.BeanDefinitionBuilder;
|
||||||
|
import org.springframework.core.annotation.AnnotationAttributes;
|
||||||
|
import org.springframework.data.mongodb.repository.support.MongoRepositoryFactoryBean;
|
||||||
|
import org.springframework.data.repository.config.AnnotationRepositoryConfigurationSource;
|
||||||
|
import org.springframework.data.repository.config.RepositoryConfigurationExtension;
|
||||||
|
import org.springframework.data.repository.config.RepositoryConfigurationExtensionSupport;
|
||||||
|
import org.springframework.data.repository.config.XmlRepositoryConfigurationSource;
|
||||||
|
import org.w3c.dom.Element;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* {@link RepositoryConfigurationExtension} for MongoDB.
|
||||||
|
*
|
||||||
|
* @author Oliver Gierke
|
||||||
|
*/
|
||||||
|
public class MongoRepositoryConfigurationExtension extends RepositoryConfigurationExtensionSupport {
|
||||||
|
|
||||||
|
private static final String MONGO_TEMPLATE_REF = "mongo-template-ref";
|
||||||
|
private static final String CREATE_QUERY_INDEXES = "create-query-indexes";
|
||||||
|
|
||||||
|
/*
|
||||||
|
* (non-Javadoc)
|
||||||
|
* @see org.springframework.data.repository.config.RepositoryConfigurationExtensionSupport#getModulePrefix()
|
||||||
|
*/
|
||||||
|
@Override
|
||||||
|
protected String getModulePrefix() {
|
||||||
|
return "mongo";
|
||||||
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
* (non-Javadoc)
|
||||||
|
* @see org.springframework.data.repository.config.RepositoryConfigurationExtension#getRepositoryFactoryClassName()
|
||||||
|
*/
|
||||||
|
public String getRepositoryFactoryClassName() {
|
||||||
|
return MongoRepositoryFactoryBean.class.getName();
|
||||||
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
* (non-Javadoc)
|
||||||
|
* @see org.springframework.data.repository.config.RepositoryConfigurationExtensionSupport#postProcess(org.springframework.beans.factory.support.BeanDefinitionBuilder, org.springframework.data.repository.config.XmlRepositoryConfigurationSource)
|
||||||
|
*/
|
||||||
|
@Override
|
||||||
|
public void postProcess(BeanDefinitionBuilder builder, XmlRepositoryConfigurationSource config) {
|
||||||
|
|
||||||
|
Element element = config.getElement();
|
||||||
|
|
||||||
|
String attribute = element.getAttribute(MONGO_TEMPLATE_REF);
|
||||||
|
builder.addPropertyReference("mongoOperations", attribute);
|
||||||
|
|
||||||
|
attribute = element.getAttribute(CREATE_QUERY_INDEXES);
|
||||||
|
builder.addPropertyValue("createIndexesForQueryMethods", attribute);
|
||||||
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
* (non-Javadoc)
|
||||||
|
* @see org.springframework.data.repository.config.RepositoryConfigurationExtensionSupport#postProcess(org.springframework.beans.factory.support.BeanDefinitionBuilder, org.springframework.data.repository.config.AnnotationRepositoryConfigurationSource)
|
||||||
|
*/
|
||||||
|
@Override
|
||||||
|
public void postProcess(BeanDefinitionBuilder builder, AnnotationRepositoryConfigurationSource config) {
|
||||||
|
|
||||||
|
AnnotationAttributes attributes = config.getAttributes();
|
||||||
|
|
||||||
|
builder.addPropertyReference("mongoOperations", attributes.getString("mongoTemplateRef"));
|
||||||
|
builder.addPropertyValue("createIndexesForQueryMethods", attributes.getBoolean("createIndexesForQueryMethods"));
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -1,196 +0,0 @@
|
|||||||
/*
|
|
||||||
* Copyright 2011 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.
|
|
||||||
* You may obtain a copy of the License at
|
|
||||||
*
|
|
||||||
* http://www.apache.org/licenses/LICENSE-2.0
|
|
||||||
*
|
|
||||||
* Unless required by applicable law or agreed to in writing, software
|
|
||||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
||||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
||||||
* See the License for the specific language governing permissions and
|
|
||||||
* limitations under the License.
|
|
||||||
*/
|
|
||||||
package org.springframework.data.mongodb.repository.config;
|
|
||||||
|
|
||||||
import org.springframework.data.mongodb.repository.support.MongoRepositoryFactoryBean;
|
|
||||||
import org.springframework.data.repository.config.AutomaticRepositoryConfigInformation;
|
|
||||||
import org.springframework.data.repository.config.ManualRepositoryConfigInformation;
|
|
||||||
import org.springframework.data.repository.config.RepositoryConfig;
|
|
||||||
import org.springframework.data.repository.config.SingleRepositoryConfigInformation;
|
|
||||||
import org.springframework.util.StringUtils;
|
|
||||||
import org.w3c.dom.Element;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* {@link RepositoryConfig} implementation to create {@link MongoRepositoryConfiguration} instances for both automatic
|
|
||||||
* and manual configuration.
|
|
||||||
*
|
|
||||||
* @author Oliver Gierke
|
|
||||||
*/
|
|
||||||
public class SimpleMongoRepositoryConfiguration
|
|
||||||
extends
|
|
||||||
RepositoryConfig<SimpleMongoRepositoryConfiguration.MongoRepositoryConfiguration, SimpleMongoRepositoryConfiguration> {
|
|
||||||
|
|
||||||
private static final String MONGO_TEMPLATE_REF = "mongo-template-ref";
|
|
||||||
private static final String CREATE_QUERY_INDEXES = "create-query-indexes";
|
|
||||||
private static final String DEFAULT_MONGO_TEMPLATE_REF = "mongoTemplate";
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Creates a new {@link SimpleMongoRepositoryConfiguration} for the given {@link Element}.
|
|
||||||
*
|
|
||||||
* @param repositoriesElement
|
|
||||||
*/
|
|
||||||
protected SimpleMongoRepositoryConfiguration(Element repositoriesElement) {
|
|
||||||
|
|
||||||
super(repositoriesElement, MongoRepositoryFactoryBean.class.getName());
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Returns the bean name of the {@link org.springframework.data.mongodb.core.core.MongoTemplate} to be referenced.
|
|
||||||
*
|
|
||||||
* @return
|
|
||||||
*/
|
|
||||||
public String getMongoTemplateRef() {
|
|
||||||
|
|
||||||
String templateRef = getSource().getAttribute(MONGO_TEMPLATE_REF);
|
|
||||||
return StringUtils.hasText(templateRef) ? templateRef : DEFAULT_MONGO_TEMPLATE_REF;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Returns whether to create indexes for query methods.
|
|
||||||
*
|
|
||||||
* @return
|
|
||||||
*/
|
|
||||||
public boolean getCreateQueryIndexes() {
|
|
||||||
|
|
||||||
String createQueryIndexes = getSource().getAttribute(CREATE_QUERY_INDEXES);
|
|
||||||
return StringUtils.hasText(createQueryIndexes) ? Boolean.parseBoolean(createQueryIndexes) : false;
|
|
||||||
}
|
|
||||||
|
|
||||||
/*
|
|
||||||
* (non-Javadoc)
|
|
||||||
*
|
|
||||||
* @see
|
|
||||||
* org.springframework.data.repository.config.GlobalRepositoryConfigInformation
|
|
||||||
* #getAutoconfigRepositoryInformation(java.lang.String)
|
|
||||||
*/
|
|
||||||
public MongoRepositoryConfiguration getAutoconfigRepositoryInformation(String interfaceName) {
|
|
||||||
|
|
||||||
return new AutomaticMongoRepositoryConfiguration(interfaceName, this);
|
|
||||||
}
|
|
||||||
|
|
||||||
/*
|
|
||||||
* (non-Javadoc)
|
|
||||||
* @see org.springframework.data.repository.config.RepositoryConfig#getNamedQueriesLocation()
|
|
||||||
*/
|
|
||||||
public String getNamedQueriesLocation() {
|
|
||||||
return "classpath*:META-INF/mongo-named-queries.properties";
|
|
||||||
}
|
|
||||||
|
|
||||||
/*
|
|
||||||
* (non-Javadoc)
|
|
||||||
*
|
|
||||||
* @see org.springframework.data.repository.config.RepositoryConfig#
|
|
||||||
* createSingleRepositoryConfigInformationFor(org.w3c.dom.Element)
|
|
||||||
*/
|
|
||||||
@Override
|
|
||||||
protected MongoRepositoryConfiguration createSingleRepositoryConfigInformationFor(Element element) {
|
|
||||||
|
|
||||||
return new ManualMongoRepositoryConfiguration(element, this);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Simple interface for configuration values specific to Mongo repositories.
|
|
||||||
*
|
|
||||||
* @author Oliver Gierke
|
|
||||||
*/
|
|
||||||
public interface MongoRepositoryConfiguration extends
|
|
||||||
SingleRepositoryConfigInformation<SimpleMongoRepositoryConfiguration> {
|
|
||||||
|
|
||||||
String getMongoTemplateRef();
|
|
||||||
|
|
||||||
boolean getCreateQueryIndexes();
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Implements manual lookup of the additional attributes.
|
|
||||||
*
|
|
||||||
* @author Oliver Gierke
|
|
||||||
*/
|
|
||||||
private static class ManualMongoRepositoryConfiguration extends
|
|
||||||
ManualRepositoryConfigInformation<SimpleMongoRepositoryConfiguration> implements MongoRepositoryConfiguration {
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Creates a new {@link ManualMongoRepositoryConfiguration} for the given {@link Element} and parent.
|
|
||||||
*
|
|
||||||
* @param element
|
|
||||||
* @param parent
|
|
||||||
*/
|
|
||||||
public ManualMongoRepositoryConfiguration(Element element, SimpleMongoRepositoryConfiguration parent) {
|
|
||||||
|
|
||||||
super(element, parent);
|
|
||||||
}
|
|
||||||
|
|
||||||
/*
|
|
||||||
* (non-Javadoc)
|
|
||||||
*
|
|
||||||
* @see org.springframework.data.mongodb.repository.config.
|
|
||||||
* SimpleMongoRepositoryConfiguration
|
|
||||||
* .MongoRepositoryConfiguration#getMongoTemplateRef()
|
|
||||||
*/
|
|
||||||
public String getMongoTemplateRef() {
|
|
||||||
|
|
||||||
return getAttribute(MONGO_TEMPLATE_REF);
|
|
||||||
}
|
|
||||||
|
|
||||||
/* (non-Javadoc)
|
|
||||||
* @see org.springframework.data.mongodb.config.SimpleMongoRepositoryConfiguration.MongoRepositoryConfiguration#getCreateQueryIndexes()
|
|
||||||
*/
|
|
||||||
public boolean getCreateQueryIndexes() {
|
|
||||||
|
|
||||||
String attribute = getAttribute(CREATE_QUERY_INDEXES);
|
|
||||||
return attribute == null ? false : Boolean.parseBoolean(attribute);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Implements the lookup of the additional attributes during automatic configuration.
|
|
||||||
*
|
|
||||||
* @author Oliver Gierke
|
|
||||||
*/
|
|
||||||
private static class AutomaticMongoRepositoryConfiguration extends
|
|
||||||
AutomaticRepositoryConfigInformation<SimpleMongoRepositoryConfiguration> implements MongoRepositoryConfiguration {
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Creates a new {@link AutomaticMongoRepositoryConfiguration} for the given interface and parent.
|
|
||||||
*
|
|
||||||
* @param interfaceName
|
|
||||||
* @param parent
|
|
||||||
*/
|
|
||||||
public AutomaticMongoRepositoryConfiguration(String interfaceName, SimpleMongoRepositoryConfiguration parent) {
|
|
||||||
|
|
||||||
super(interfaceName, parent);
|
|
||||||
}
|
|
||||||
|
|
||||||
/*
|
|
||||||
* (non-Javadoc)
|
|
||||||
*
|
|
||||||
* @see org.springframework.data.mongodb.repository.config.
|
|
||||||
* SimpleMongoRepositoryConfiguration
|
|
||||||
* .MongoRepositoryConfiguration#getMongoTemplateRef()
|
|
||||||
*/
|
|
||||||
public String getMongoTemplateRef() {
|
|
||||||
|
|
||||||
return getParent().getMongoTemplateRef();
|
|
||||||
}
|
|
||||||
|
|
||||||
/* (non-Javadoc)
|
|
||||||
* @see org.springframework.data.mongodb.config.SimpleMongoRepositoryConfiguration.MongoRepositoryConfiguration#getCreateQueryIndexes()
|
|
||||||
*/
|
|
||||||
public boolean getCreateQueryIndexes() {
|
|
||||||
return getParent().getCreateQueryIndexes();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -103,15 +103,6 @@ The Mongo URI string.]]></xsd:documentation>
|
|||||||
</xsd:complexType>
|
</xsd:complexType>
|
||||||
</xsd:element>
|
</xsd:element>
|
||||||
|
|
||||||
<xsd:complexType name="mongo-repository">
|
|
||||||
<xsd:complexContent>
|
|
||||||
<xsd:extension base="repository:repository">
|
|
||||||
<xsd:attributeGroup ref="mongo-repository-attributes"/>
|
|
||||||
<xsd:attributeGroup ref="repository:repository-attributes"/>
|
|
||||||
</xsd:extension>
|
|
||||||
</xsd:complexContent>
|
|
||||||
</xsd:complexType>
|
|
||||||
|
|
||||||
<xsd:attributeGroup name="mongo-repository-attributes">
|
<xsd:attributeGroup name="mongo-repository-attributes">
|
||||||
<xsd:attribute name="mongo-template-ref" type="mongoTemplateRef" default="mongoTemplate">
|
<xsd:attribute name="mongo-template-ref" type="mongoTemplateRef" default="mongoTemplate">
|
||||||
<xsd:annotation>
|
<xsd:annotation>
|
||||||
@@ -134,9 +125,6 @@ The Mongo URI string.]]></xsd:documentation>
|
|||||||
<xsd:complexType>
|
<xsd:complexType>
|
||||||
<xsd:complexContent>
|
<xsd:complexContent>
|
||||||
<xsd:extension base="repository:repositories">
|
<xsd:extension base="repository:repositories">
|
||||||
<xsd:sequence>
|
|
||||||
<xsd:element name="repository" minOccurs="0" maxOccurs="unbounded" type="mongo-repository"/>
|
|
||||||
</xsd:sequence>
|
|
||||||
<xsd:attributeGroup ref="mongo-repository-attributes"/>
|
<xsd:attributeGroup ref="mongo-repository-attributes"/>
|
||||||
<xsd:attributeGroup ref="repository:repository-attributes"/>
|
<xsd:attributeGroup ref="repository:repository-attributes"/>
|
||||||
</xsd:extension>
|
</xsd:extension>
|
||||||
|
|||||||
@@ -20,6 +20,7 @@ import static org.junit.Assert.*;
|
|||||||
|
|
||||||
import org.apache.webbeans.cditest.CdiTestContainer;
|
import org.apache.webbeans.cditest.CdiTestContainer;
|
||||||
import org.apache.webbeans.cditest.CdiTestContainerLoader;
|
import org.apache.webbeans.cditest.CdiTestContainerLoader;
|
||||||
|
import org.junit.AfterClass;
|
||||||
import org.junit.BeforeClass;
|
import org.junit.BeforeClass;
|
||||||
import org.junit.Test;
|
import org.junit.Test;
|
||||||
import org.springframework.data.mongodb.repository.Person;
|
import org.springframework.data.mongodb.repository.Person;
|
||||||
@@ -39,11 +40,16 @@ public class CdiExtensionIntegrationTests {
|
|||||||
container.bootContainer();
|
container.bootContainer();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@AfterClass
|
||||||
|
public static void tearDown() throws Exception {
|
||||||
|
container.shutdownContainer();
|
||||||
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void bootstrapsRepositoryCorrectly() {
|
public void bootstrapsRepositoryCorrectly() {
|
||||||
|
|
||||||
RepositoryClient client = container.getInstance(RepositoryClient.class);
|
RepositoryClient client = container.getInstance(RepositoryClient.class);
|
||||||
PersonRepository repository = client.getRepository();
|
CdiPersonRepository repository = client.getRepository();
|
||||||
|
|
||||||
assertThat(repository, is(notNullValue()));
|
assertThat(repository, is(notNullValue()));
|
||||||
|
|
||||||
|
|||||||
@@ -18,7 +18,7 @@ package org.springframework.data.mongodb.repository.cdi;
|
|||||||
import org.springframework.data.mongodb.repository.Person;
|
import org.springframework.data.mongodb.repository.Person;
|
||||||
import org.springframework.data.repository.Repository;
|
import org.springframework.data.repository.Repository;
|
||||||
|
|
||||||
public interface PersonRepository extends Repository<Person, String> {
|
public interface CdiPersonRepository extends Repository<Person, String> {
|
||||||
|
|
||||||
void deleteAll();
|
void deleteAll();
|
||||||
|
|
||||||
@@ -18,18 +18,17 @@ package org.springframework.data.mongodb.repository.cdi;
|
|||||||
import javax.inject.Inject;
|
import javax.inject.Inject;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
*
|
|
||||||
* @author Oliver Gierke
|
* @author Oliver Gierke
|
||||||
*/
|
*/
|
||||||
class RepositoryClient {
|
class RepositoryClient {
|
||||||
|
|
||||||
@Inject
|
@Inject
|
||||||
PersonRepository repository;
|
CdiPersonRepository repository;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @return the repository
|
* @return the repository
|
||||||
*/
|
*/
|
||||||
public PersonRepository getRepository() {
|
public CdiPersonRepository getRepository() {
|
||||||
return repository;
|
return repository;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -0,0 +1,58 @@
|
|||||||
|
/*
|
||||||
|
* Copyright 2012 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.
|
||||||
|
* You may obtain a copy of the License at
|
||||||
|
*
|
||||||
|
* http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
*
|
||||||
|
* Unless required by applicable law or agreed to in writing, software
|
||||||
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
* See the License for the specific language governing permissions and
|
||||||
|
* limitations under the License.
|
||||||
|
*/
|
||||||
|
package org.springframework.data.mongodb.repository.config;
|
||||||
|
|
||||||
|
import org.junit.Test;
|
||||||
|
import org.junit.runner.RunWith;
|
||||||
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
|
import org.springframework.context.annotation.Bean;
|
||||||
|
import org.springframework.context.annotation.Configuration;
|
||||||
|
import org.springframework.data.mongodb.core.MongoOperations;
|
||||||
|
import org.springframework.data.mongodb.core.MongoTemplate;
|
||||||
|
import org.springframework.data.mongodb.core.SimpleMongoDbFactory;
|
||||||
|
import org.springframework.data.mongodb.repository.PersonRepository;
|
||||||
|
import org.springframework.test.context.ContextConfiguration;
|
||||||
|
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
|
||||||
|
|
||||||
|
import com.mongodb.Mongo;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Integration tests for {@link MongoRepositoriesRegistrar}.
|
||||||
|
*
|
||||||
|
* @author Oliver Gierke
|
||||||
|
*/
|
||||||
|
@RunWith(SpringJUnit4ClassRunner.class)
|
||||||
|
@ContextConfiguration
|
||||||
|
public class MongoRepositoriesRegistrarIntegrationTests {
|
||||||
|
|
||||||
|
@Configuration
|
||||||
|
@EnableMongoRepositories(basePackages = "org.springframework.data.mongodb.repository")
|
||||||
|
static class Config {
|
||||||
|
|
||||||
|
@Bean
|
||||||
|
public MongoOperations mongoTemplate() throws Exception {
|
||||||
|
return new MongoTemplate(new SimpleMongoDbFactory(new Mongo(), "database"));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@Autowired
|
||||||
|
PersonRepository personRepository;
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void testConfiguration() {
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -3,7 +3,7 @@
|
|||||||
xmlns:mongo="http://www.springframework.org/schema/data/mongo"
|
xmlns:mongo="http://www.springframework.org/schema/data/mongo"
|
||||||
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
||||||
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
|
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
|
||||||
http://www.springframework.org/schema/data/mongo http://www.springframework.org/schema/data/mongo/spring-mongo-1.0.xsd">
|
http://www.springframework.org/schema/data/mongo http://www.springframework.org/schema/data/mongo/spring-mongo.xsd">
|
||||||
|
|
||||||
<mongo:mongo host="localhost" port="27017"/>
|
<mongo:mongo host="localhost" port="27017"/>
|
||||||
|
|
||||||
|
|||||||
@@ -3,7 +3,7 @@
|
|||||||
xmlns:mongo="http://www.springframework.org/schema/data/mongo"
|
xmlns:mongo="http://www.springframework.org/schema/data/mongo"
|
||||||
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
||||||
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
|
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
|
||||||
http://www.springframework.org/schema/data/mongo http://www.springframework.org/schema/data/mongo/spring-mongo-1.0.xsd">
|
http://www.springframework.org/schema/data/mongo http://www.springframework.org/schema/data/mongo/spring-mongo.xsd">
|
||||||
|
|
||||||
<bean id="mongoTemplate" class="org.springframework.data.mongodb.core.MongoTemplate">
|
<bean id="mongoTemplate" class="org.springframework.data.mongodb.core.MongoTemplate">
|
||||||
<constructor-arg>
|
<constructor-arg>
|
||||||
|
|||||||
@@ -2,7 +2,7 @@
|
|||||||
<beans xmlns="http://www.springframework.org/schema/beans"
|
<beans xmlns="http://www.springframework.org/schema/beans"
|
||||||
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
||||||
xmlns:mongo="http://www.springframework.org/schema/data/mongo"
|
xmlns:mongo="http://www.springframework.org/schema/data/mongo"
|
||||||
xsi:schemaLocation="http://www.springframework.org/schema/data/mongo http://www.springframework.org/schema/data/mongo/spring-mongo-1.0.xsd
|
xsi:schemaLocation="http://www.springframework.org/schema/data/mongo http://www.springframework.org/schema/data/mongo/spring-mongo.xsd
|
||||||
http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd">
|
http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd">
|
||||||
|
|
||||||
<mongo:db-factory id="first" mongo-ref="mongo" write-concern="rack1" />
|
<mongo:db-factory id="first" mongo-ref="mongo" write-concern="rack1" />
|
||||||
|
|||||||
@@ -2,7 +2,7 @@
|
|||||||
<beans xmlns="http://www.springframework.org/schema/beans"
|
<beans xmlns="http://www.springframework.org/schema/beans"
|
||||||
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
||||||
xmlns:mongo="http://www.springframework.org/schema/data/mongo"
|
xmlns:mongo="http://www.springframework.org/schema/data/mongo"
|
||||||
xsi:schemaLocation="http://www.springframework.org/schema/data/mongo http://www.springframework.org/schema/data/mongo/spring-mongo-1.0.xsd
|
xsi:schemaLocation="http://www.springframework.org/schema/data/mongo http://www.springframework.org/schema/data/mongo/spring-mongo.xsd
|
||||||
http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd">
|
http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd">
|
||||||
|
|
||||||
<mongo:db-factory id="first" mongo-ref="mongo" write-concern="SAFE" />
|
<mongo:db-factory id="first" mongo-ref="mongo" write-concern="SAFE" />
|
||||||
|
|||||||
@@ -3,7 +3,7 @@
|
|||||||
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
||||||
xmlns:mongo="http://www.springframework.org/schema/data/mongo"
|
xmlns:mongo="http://www.springframework.org/schema/data/mongo"
|
||||||
xmlns:context="http://www.springframework.org/schema/context"
|
xmlns:context="http://www.springframework.org/schema/context"
|
||||||
xsi:schemaLocation="http://www.springframework.org/schema/data/mongo http://www.springframework.org/schema/data/mongo/spring-mongo-1.0.xsd
|
xsi:schemaLocation="http://www.springframework.org/schema/data/mongo http://www.springframework.org/schema/data/mongo/spring-mongo.xsd
|
||||||
http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
|
http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
|
||||||
http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.0.xsd">
|
http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.0.xsd">
|
||||||
|
|
||||||
|
|||||||
@@ -3,7 +3,7 @@
|
|||||||
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
||||||
xmlns:mongo="http://www.springframework.org/schema/data/mongo"
|
xmlns:mongo="http://www.springframework.org/schema/data/mongo"
|
||||||
xmlns:context="http://www.springframework.org/schema/context"
|
xmlns:context="http://www.springframework.org/schema/context"
|
||||||
xsi:schemaLocation="http://www.springframework.org/schema/data/mongo http://www.springframework.org/schema/data/mongo/spring-mongo-1.0.xsd
|
xsi:schemaLocation="http://www.springframework.org/schema/data/mongo http://www.springframework.org/schema/data/mongo/spring-mongo.xsd
|
||||||
http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
|
http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
|
||||||
http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.0.xsd">
|
http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.0.xsd">
|
||||||
|
|
||||||
|
|||||||
@@ -3,9 +3,9 @@
|
|||||||
xmlns:mongo="http://www.springframework.org/schema/data/mongo"
|
xmlns:mongo="http://www.springframework.org/schema/data/mongo"
|
||||||
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
||||||
xmlns:util="http://www.springframework.org/schema/util"
|
xmlns:util="http://www.springframework.org/schema/util"
|
||||||
xsi:schemaLocation="http://www.springframework.org/schema/data/mongo http://www.springframework.org/schema/data/mongo/spring-mongo-1.0.xsd
|
xsi:schemaLocation="http://www.springframework.org/schema/data/mongo http://www.springframework.org/schema/data/mongo/spring-mongo.xsd
|
||||||
http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
|
http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
|
||||||
http://www.springframework.org/schema/util http://www.springframework.org/schema/util/spring-util-3.0.xsd">
|
http://www.springframework.org/schema/util http://www.springframework.org/schema/util/spring-util.xsd">
|
||||||
|
|
||||||
<mongo:db-factory dbname="repositories" />
|
<mongo:db-factory dbname="repositories" />
|
||||||
|
|
||||||
|
|||||||
@@ -3,9 +3,9 @@
|
|||||||
xmlns:mongo="http://www.springframework.org/schema/data/mongo"
|
xmlns:mongo="http://www.springframework.org/schema/data/mongo"
|
||||||
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
||||||
xmlns:util="http://www.springframework.org/schema/util"
|
xmlns:util="http://www.springframework.org/schema/util"
|
||||||
xsi:schemaLocation="http://www.springframework.org/schema/data/mongo http://www.springframework.org/schema/data/mongo/spring-mongo-1.0.xsd
|
xsi:schemaLocation="http://www.springframework.org/schema/data/mongo http://www.springframework.org/schema/data/mongo/spring-mongo.xsd
|
||||||
http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
|
http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
|
||||||
http://www.springframework.org/schema/util http://www.springframework.org/schema/util/spring-util-3.0.xsd">
|
http://www.springframework.org/schema/util http://www.springframework.org/schema/util/spring-util.xsd">
|
||||||
|
|
||||||
<mongo:db-factory dbname="repositories"/>
|
<mongo:db-factory dbname="repositories"/>
|
||||||
<mongo:mapping-converter base-package="org.springframework.data.mongodb.repository"/>
|
<mongo:mapping-converter base-package="org.springframework.data.mongodb.repository"/>
|
||||||
@@ -15,7 +15,6 @@
|
|||||||
<constructor-arg ref="mappingConverter"/>
|
<constructor-arg ref="mappingConverter"/>
|
||||||
</bean>
|
</bean>
|
||||||
|
|
||||||
<mongo:repositories base-package="org.springframework.data.mongodb.repository"
|
<mongo:repositories base-package="org.springframework.data.mongodb.repository" create-query-indexes="true" />
|
||||||
create-query-indexes="true" />
|
|
||||||
|
|
||||||
</beans>
|
</beans>
|
||||||
|
|||||||
@@ -4,7 +4,7 @@
|
|||||||
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
||||||
xmlns:repository="http://www.springframework.org/schema/data/repository"
|
xmlns:repository="http://www.springframework.org/schema/data/repository"
|
||||||
xmlns:util="http://www.springframework.org/schema/util"
|
xmlns:util="http://www.springframework.org/schema/util"
|
||||||
xsi:schemaLocation="http://www.springframework.org/schema/data/mongo http://www.springframework.org/schema/data/mongo/spring-mongo-1.0.xsd
|
xsi:schemaLocation="http://www.springframework.org/schema/data/mongo http://www.springframework.org/schema/data/mongo/spring-mongo.xsd
|
||||||
http://www.springframework.org/schema/data/repository http://www.springframework.org/schema/data/repository/spring-repository-1.0.xsd
|
http://www.springframework.org/schema/data/repository http://www.springframework.org/schema/data/repository/spring-repository-1.0.xsd
|
||||||
http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
|
http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
|
||||||
http://www.springframework.org/schema/util http://www.springframework.org/schema/util/spring-util-3.0.xsd">
|
http://www.springframework.org/schema/util http://www.springframework.org/schema/util/spring-util-3.0.xsd">
|
||||||
|
|||||||
@@ -4,7 +4,7 @@
|
|||||||
xmlns:p="http://www.springframework.org/schema/p"
|
xmlns:p="http://www.springframework.org/schema/p"
|
||||||
xmlns:mongo="http://www.springframework.org/schema/data/mongo"
|
xmlns:mongo="http://www.springframework.org/schema/data/mongo"
|
||||||
xmlns:context="http://www.springframework.org/schema/context"
|
xmlns:context="http://www.springframework.org/schema/context"
|
||||||
xsi:schemaLocation="http://www.springframework.org/schema/data/mongo http://www.springframework.org/schema/data/mongo/spring-mongo-1.0.xsd
|
xsi:schemaLocation="http://www.springframework.org/schema/data/mongo http://www.springframework.org/schema/data/mongo/spring-mongo.xsd
|
||||||
http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
|
http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
|
||||||
http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd">
|
http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd">
|
||||||
|
|
||||||
|
|||||||
@@ -2,8 +2,8 @@
|
|||||||
<beans xmlns="http://www.springframework.org/schema/beans"
|
<beans xmlns="http://www.springframework.org/schema/beans"
|
||||||
xmlns:mongo="http://www.springframework.org/schema/data/mongo"
|
xmlns:mongo="http://www.springframework.org/schema/data/mongo"
|
||||||
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
||||||
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
|
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
|
||||||
http://www.springframework.org/schema/data/mongo http://www.springframework.org/schema/data/mongo/spring-mongo-1.0.xsd">
|
http://www.springframework.org/schema/data/mongo http://www.springframework.org/schema/data/mongo/spring-mongo.xsd">
|
||||||
|
|
||||||
<bean class="org.springframework.data.mongodb.core.TestMongoConfiguration"/>
|
<bean class="org.springframework.data.mongodb.core.TestMongoConfiguration"/>
|
||||||
|
|
||||||
|
|||||||
@@ -9,8 +9,8 @@
|
|||||||
|
|
||||||
<para>This chapter will point out the specialties for repository support
|
<para>This chapter will point out the specialties for repository support
|
||||||
for MongoDB. This builds on the core repository support explained in <xref
|
for MongoDB. This builds on the core repository support explained in <xref
|
||||||
linkend="repositories" />. So make sure you've got a sound understanding
|
linkend="repositories"/>. So make sure you've got a sound understanding of
|
||||||
of the basic concepts explained there.</para>
|
the basic concepts explained there.</para>
|
||||||
</section>
|
</section>
|
||||||
|
|
||||||
<section id="mongo-repo-usage">
|
<section id="mongo-repo-usage">
|
||||||
@@ -91,6 +91,36 @@
|
|||||||
configure <code>mongo-template-ref</code> explicitly if you deviate from
|
configure <code>mongo-template-ref</code> explicitly if you deviate from
|
||||||
this convention.</para>
|
this convention.</para>
|
||||||
|
|
||||||
|
<para>If you'd rather like to go with JavaConfig use the
|
||||||
|
<interfacename>@EnableMongoRepositories</interfacename> annotation. The
|
||||||
|
annotation carries the very same attributes like the namespace element. If
|
||||||
|
no base package is configured the infrastructure will scan the package of
|
||||||
|
the annotated configuration class.</para>
|
||||||
|
|
||||||
|
<example>
|
||||||
|
<title>JavaConfig for repositories</title>
|
||||||
|
|
||||||
|
<programlisting id="id2371855_07-mongodb" language="java">@Configuration
|
||||||
|
@EnableMongoRepositories
|
||||||
|
class ApplicationConfig extends AbstractMongoConfiguration {
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected String getDatabaseName() {
|
||||||
|
return "e-store";
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public Mongo mongo() throws Exception {
|
||||||
|
return new Mongo();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected String getMappingBasePackage() {
|
||||||
|
return "com.oreilly.springdata.mongodb"
|
||||||
|
}
|
||||||
|
}</programlisting>
|
||||||
|
</example>
|
||||||
|
|
||||||
<para>As our domain repository extends
|
<para>As our domain repository extends
|
||||||
<interfacename>PagingAndSortingRepository</interfacename> it provides you
|
<interfacename>PagingAndSortingRepository</interfacename> it provides you
|
||||||
with CRUD operations as well as methods for paginated and sorted access to
|
with CRUD operations as well as methods for paginated and sorted access to
|
||||||
@@ -169,11 +199,11 @@ public class PersonRepositoryTests {
|
|||||||
<title>Supported keywords for query methods</title>
|
<title>Supported keywords for query methods</title>
|
||||||
|
|
||||||
<tgroup cols="3">
|
<tgroup cols="3">
|
||||||
<colspec colwidth="1*" />
|
<colspec colwidth="1*"/>
|
||||||
|
|
||||||
<colspec colwidth="2*" />
|
<colspec colwidth="2*"/>
|
||||||
|
|
||||||
<colspec colwidth="2*" />
|
<colspec colwidth="2*"/>
|
||||||
|
|
||||||
<thead>
|
<thead>
|
||||||
<row>
|
<row>
|
||||||
@@ -370,7 +400,7 @@ Distance distance = new Distance(200, Metrics.KILOMETERS);
|
|||||||
<simplesect>
|
<simplesect>
|
||||||
<title>Geo-near queries</title>
|
<title>Geo-near queries</title>
|
||||||
|
|
||||||
<para></para>
|
<para/>
|
||||||
|
|
||||||
<programlisting language="java">public interface PersonRepository extends MongoRepository<Person, String>
|
<programlisting language="java">public interface PersonRepository extends MongoRepository<Person, String>
|
||||||
|
|
||||||
@@ -512,4 +542,4 @@ Page<Person> page = repository.findAll(person.lastname.contains("a"),
|
|||||||
MongoDB queries.</para>
|
MongoDB queries.</para>
|
||||||
</section>
|
</section>
|
||||||
</section>
|
</section>
|
||||||
</chapter>
|
</chapter>
|
||||||
|
|||||||
Reference in New Issue
Block a user