mongodb - MongoTemplate instance is not created inside spring -
i want try spring integration mongodb, purpose did following things. not working how mongotemplate instance not created , throws java.lang.nullpointerexception. here 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 annotations within 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 creates 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 mongotemplate handles connectivity 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 post processor translate mongoexceptions thrown in @repository annotated classes --> <bean class="org.springframework.dao.annotation.persistenceexceptiontranslationpostprocessor"/> </beans>
here main method :
public class mainapplication { /** * variable used logging purpose, 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() + " id : " + p.getid() + " saved."); } }
here model class :
@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; } }
need assistance have tried several tutorials, mkyong , many others , have faced nobeandefinitionfound "mongotemplate" error: tried this.
update: here 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 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>
here stacktrace :
log4j:warn no appenders found logger (org.springframework.core.env.standardenvironment). log4j:warn please initialize log4j system properly. log4j:warn see http://logging.apache.org/log4j/1.2/faq.html#noconfig more info. exception in thread "main" org.springframework.beans.factory.nosuchbeandefinitionexception: no bean named 'mongotemplate' defined @ org.springframework.beans.factory.support.defaultlistablebeanfactory.getbeandefinition(defaultlistablebeanfactory.java:568) @ org.springframework.beans.factory.support.abstractbeanfactory.getmergedlocalbeandefinition(abstractbeanfactory.java:1102) @ org.springframework.beans.factory.support.abstractbeanfactory.dogetbean(abstractbeanfactory.java:278) @ org.springframework.beans.factory.support.abstractbeanfactory.getbean(abstractbeanfactory.java:194) @ org.springframework.context.support.abstractapplicationcontext.getbean(abstractapplicationcontext.java:1117) @ com.discusit.main.mainapplication.main(mainapplication.java:39)
i have @aayush solution. have found 2 errors:
you don't call correctly xml file configuration.
before:
applicationcontext ctx = new genericxmlapplicationcontext("classpath*:application-context.xml");
after:
applicationcontext ctx = new genericxmlapplicationcontext("classpath:meta-inf/applicationcontext.xml");
you call exceptiontranslationpostprocessor. why ? call causes error. removed it.
<bean class="org.springframework.dao.annotation.persistenceexceptiontranslationpostprocessor"/>
so finally, have tested application small changes , it's working. dont forget start mongodb server , create database "firstmongodb". more information read here: http://docs.mongodb.org/manual/tutorial/getting-started/
i have published project in github: https://github.com/m-reka/spring-data-mongotemplate
tell me when can remove :)
Comments
Post a Comment