Pregunta

Estoy escribiendo un programa de Java independiente que llame al repositorio de datos de primavera para la gestión.Estoy usando Mongo DB por persistencia.Estoy siguiendo las publicaciones de StackOverflow y algunos proyectos de GitHub, pero cuando ejecuto mi programa, falla, ya que el repositorio es nulo.No soy experto en primavera, por lo que sería útil si alguien pudiera mostrarme el problema con el programa publicado.

Aplicación-contexto.xml

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:context="http://www.springframework.org/schema/context"
    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.xsd
    http://www.springframework.org/schema/beans 
    http://www.springframework.org/schema/beans/spring-beans.xsd">


<mongo:mongo id="mongo" host="monopolyvm3" port="27017" />
<mongo:db-factory dbname="test" mongo-ref="mongo" />
<mongo:db-factory id="mongoDbFactory" dbname="cloud"
    mongo-ref="mongo" />


<bean id="mappingContext" class="org.springframework.data.mongodb.core.mapping.MongoMappingContext" />

<bean id="defaultMongoTypeMapper"
    class="org.springframework.data.mongodb.core.convert.DefaultMongoTypeMapper">
    <constructor-arg name="typeKey"><null/></constructor-arg>
</bean>

<bean id="mappingMongoConverter" class="org.springframework.data.mongodb.core.convert.MappingMongoConverter">
    <constructor-arg name="mongoDbFactory" ref="mongoDbFactory" />
    <constructor-arg name="mappingContext" ref="mappingContext" />
    <property name="typeMapper" ref="defaultMongoTypeMapper" />
</bean>

<bean id="mongoTemplate" class="org.springframework.data.mongodb.core.MongoTemplate">
    <constructor-arg ref="mongoDbFactory" />
    <constructor-arg name="mongoConverter" ref="mappingMongoConverter" />
    <property name="writeConcern" value="SAFE" />
</bean>
<context:component-scan base-package="com.xxxx"></context:component-scan>

<mongo:repositories base-package="com.xxxx.yyyy" />

Repositorio

public interface SlpRepository extends MongoRepository<Slp, Long> {

}

Programa principal

public class App {

    @Autowired
    static
    SlpRepository slpRepository;
    public static void main(String[] args) {
        ApplicationContext ctx = new GenericXmlApplicationContext("application-context.xml");
        Slp slp = new Slp();
        slp.setClientCount(100000L);
        slp.setPolicyName("testing");
        slp.setSlpName("slp_testing");
        slpRepository.save(slp);

    }


}

Object to store
------------------

@Document(collection="slps")
public class Slp implements Serializable {


    private Long slpId;
    private String slpName;
    private String policyName;
    private Long clientCount;
}
.....all getters and setters

JFYI ... Intenté ahorrar objeto usando Mongotemplate y funciona bien.

¿Fue útil?

Solución

El problema en este ejemplo es que crea el contexto en su clase de aplicación, pero nunca obtiene un asa al repositorio del contexto de la aplicación.No puede conectar el cable automático en la misma clase que posee el contexto de la aplicación.Lo que puede probar es obtener la instancia del repositorio del contexto (es decir, I.E CTX.GETBEAN (SLPRPOSITORY.CLASS).

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top