MongoTemplate Instanz nicht innerhalb Frühling
Möchte ich versuchen, spring integration mit MongoDB, Für diesen Zweck habe ich folgende Dinge. aber seine nicht funktioniert, wie Einige MongoTemplate Instanz wird nicht angelegt und wirft java.lang.NullPointerException.
hier ist meine application-context.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"
xsi:schemaLocation="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">
<!-- Activate annotation configured components -->
<context:annotation-config/>
<!-- Scan components for annotations within the configured package -->
<context:component-scan base-package="com.jeroenreijn.mongodb.example">
<context:exclude-filter type="annotation" expression="org.springframework.context.annotation.Configuration"/>
</context:component-scan>
<!-- Factory bean that creates the Mongo instance -->
<bean id="mongo" class="com.mongodb.Mongo">
<constructor-arg name="host" value="127.0.0.1" />
<constructor-arg name="port" value="27017" />
</bean>
<!-- Define the MongoTemplate which handles connectivity with MongoDB -->
<bean id="mongoTemplate" class="org.springframework.data.mongodb.core.MongoTemplate" depends-on="mongo">
<constructor-arg name="mongo" ref="mongo"/>
<constructor-arg name="databaseName" value="firstMongoDB"/>
</bean>
<!-- Use this post processor to translate any MongoExceptions thrown in @Repository annotated classes -->
<bean class="org.springframework.dao.annotation.PersistenceExceptionTranslationPostProcessor"/>
</beans>
hier ist meine main-Methode :
public class MainApplication {
/**
* This is a variable used for Logging purpose, I have used slf4j.
*/
final Logger LOGGER = LoggerFactory.getLogger(MainApplication.class);
@Autowired
MongoTemplate mongoTemplate;
public void savePerson(Person p) {
mongoTemplate.save(p);
}
public static void main(String[] args) {
Person p = new PersonImpl("1", "Ayushya", "Devmurari");
MainApplication ma = new MainApplication();
ma.savePerson(p);
ma.LOGGER.info("Person named : " + p.getName() + " with id : "
+ p.getId() + " is saved.");
}
}
Hier ist meine model-Klasse :
@Document(collection = "AnotherPersonCollection")
public class PersonImpl implements Person {
private String id;
private String name;
private String surname;
//Constructor
public PersonImpl() {
}
public PersonImpl(String id, String name, String surname) {
this.id = id;
this.name = name;
this.surname = surname;
}
@Override
public String getId() {
return id;
}
@Override
public void setId(String id) {
this.id = id;
}
@Override
public String getName() {
return name;
}
@Override
public void setName(String name) {
this.name = name;
}
@Override
public String getSurname() {
return surname;
}
@Override
public void setSurname(String surname) {
this.surname = surname;
}
@Override
public String toString() {
return "Person has name " + "Id :" + id + "\n" + name + " \n"
+ "surname :" + surname;
}
}
Hilfe benötigen, ich habe versucht, mehrere tutorials, wie mkyong und viele andere, und ich habe vor NoBeanDefinitionFound für "mongoTemplate" Fehler: so ich dies versuchte.
UPDATE: hier ist mein pom.xml
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0
http://maven.apache.org/maven-v4_0_0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.discusit</groupId>
<artifactId>MongoDBAppTrail4</artifactId>
<packaging>jar</packaging>
<version>1.0</version>
<name>Trying to create MongoDBApp</name>
<url>http://maven.apache.org</url>
<dependencies>
<!-- Log4J -->
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-log4j12</artifactId>
<version>1.7.5</version>
</dependency>
<!-- Spring framework -->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-core</artifactId>
<version>3.2.2.RELEASE</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context</artifactId>
<version>3.2.2.RELEASE</version>
</dependency>
<!-- Spring Web -->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-web</artifactId>
<version>3.2.2.RELEASE</version>
</dependency>
<!-- mongodb java driver -->
<dependency>
<groupId>org.mongodb</groupId>
<artifactId>mongo-java-driver</artifactId>
<version>2.11.0</version>
</dependency>
<!-- Spring data mongodb -->
<dependency>
<groupId>org.springframework.data</groupId>
<artifactId>spring-data-mongodb</artifactId>
<version>1.2.0.RELEASE</version>
</dependency>
<dependency>
<groupId>cglib</groupId>
<artifactId>cglib</artifactId>
<version>2.2.2</version>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.0</version>
<configuration>
<source>1.6</source>
<target>1.6</target>
</configuration>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-eclipse-plugin</artifactId>
<version>2.9</version>
<configuration>
<downloadSources>true</downloadSources>
<downloadJavadocs>true</downloadJavadocs>
</configuration>
</plugin>
</plugins>
</build>
</project>
Hier ist mein stacktrace :
log4j:WARN No appenders could be found for logger (org.springframework.core.env.StandardEnvironment).
log4j:WARN Please initialize the log4j system properly.
log4j:WARN See http://logging.apache.org/log4j/1.2/faq.html#noconfig for more info.
Exception in thread "main" org.springframework.beans.factory.NoSuchBeanDefinitionException: No bean named 'mongoTemplate' is defined
at org.springframework.beans.factory.support.DefaultListableBeanFactory.getBeanDefinition(DefaultListableBeanFactory.java:568)
at org.springframework.beans.factory.support.AbstractBeanFactory.getMergedLocalBeanDefinition(AbstractBeanFactory.java:1102)
at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:278)
at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:194)
at org.springframework.context.support.AbstractApplicationContext.getBean(AbstractApplicationContext.java:1117)
at com.discusit.main.MainApplication.main(MainApplication.java:39)
InformationsquelleAutor Bilbo Baggins | 2013-05-21
Du musst angemeldet sein, um einen Kommentar abzugeben.
Habe ich look @Aayush Lösung. Ich habe zwei gefunden Fehler:
Sie rufen Sie nicht richtig Ihre xml-Datei-Konfiguration.
Vor:
Nach:
Rufen Sie eine ExceptionTranslationPostProcessor. Warum ? Dieser Aufruf führt zu einem Fehler. Habe ich es entfernt.
So endlich, ich habe getestet, Ihre Anwendung mit einer kleinen änderung, und alle die es funktioniert. Vergessen Sie nicht, start mongodb server und erstellen Sie Ihre Datenbank "firstMongoDB". Für weitere Informationen Lesen Sie hier: http://docs.mongodb.org/manual/tutorial/getting-started/
Habe ich veröffentlicht Ihr Projekt in github: https://github.com/m-reka/spring-data-mongoTemplate
Sagen Sie mir, Wann kann ich es entfernen 🙂
Ja danke, ich habe vergessen, es zu entfernen (ich Mach das schnell). Also, Sie können entfernen Sie die @Autowired oder die bean im Kontext.
danke sehr für diese Antwort .. ich fand auch einige Probleme, um in meine STS, Die classpath-u erwähnt, ich schrieb es aber dennoch nicht, wobei es als classpath zeigt FileNotFoundException. Aber danke für deine ausführliche Antwort und Erklärung.. 🙂 🙂 🙂 🙂
Ich denke, es gibt einige problem mit meinem STS auch nicht nehmen classpath:META-INF/applicationContext.xml in anderen Anwendungen, die erfolgreich laufen, die ich gefunden habe, den Klassenpfad zu classpath*:applicationCOntext.xml aber wenn ich es als u erwähnt, es wirft FileNotFoundException.. irgendeine Idee wie man dieses Problem lösen ??
Okay, ich hatte den gleichen Fehler mit eclipse-editor. Ihr Projekt kann Fehler enthalten. Testen Sie diese Schritte: (1) Reinigen Sie Ihr Projekt mit maven-clean (in der Kommandozeile mvn clean). (2) Rechtsklick auf dein Projekt - > Maven > Projekt Aktualisieren... (3) Installieren Sie das maven-Abhängigkeiten (in der Kommandozeile mvn install). Oder können Sie arbeiten, wie mich. Ich habe eclipse neu installieren nicht (STS), aber eclipse juno und manuell installieren STS über eclipse mit eclipse marketplace.
InformationsquelleAutor Mentor Reka
Wie bereits erwähnt, müssen Sie erstellen Anwendungs-Kontext in der main-Klasse. Verwenden autowire definieren Sie Ihre main-Klasse als spring-bean.
Und dann bekommen nur die Instanz in der main-Klasse
Weiß nicht was falsch ist..und warum zeigt diese Fehler vor der Veröffentlichung hier suchte ich über das internet für dieses problem, ist das ein bug ??? oder clash zwischen Abhängigkeiten???
versuchen Sie einfach, um eine Liste aller Bohnen im Kontext. Es könnte sein, dass es einige Fehler bei der Erstellung einige der abhängigen Bohnen verwenden, dieses Recht nach ctx erstellt wird.aus.println(Arrays.asList(ctx.getBeanDefinitionNames()));
InformationsquelleAutor cxubrix
in der main-Methode hinzufügen :
Als Sie mit main-Methode, die ist, überspringen laden Sie die Bohnen im Frühjahr Kontext , also die autowire wird nicht funktionieren.
In der main-test, der:
ApplicationContext ctx = new GenericXmlApplicationContext("application-context.xml"); MongoOperations mongoOperation = (MongoOperations) ctx.getBean("mongoTemplate");
Danke für Antworten, versuchte dies auch, aber die gleichen Fehler, sagen Sie "Nein bean name mongoTemplate definiert"
den gleichen Fehler hält auf dem wiederholen. Ich habe bereits versucht, was Sie vorgeschlagen haben, und versuchte es noch einmal, wenn Sie gebucht aber funktioniert nicht, danke für Antworten
Können Sie veröffentlichen Ihr Projekt in github oder im Datei-hosting-website ?
InformationsquelleAutor johnny
InformationsquelleAutor Basker Ammu