Sunday 15 April 2012

java - Replace getBean with @Autowired for Service -



java - Replace getBean with @Autowired for Service -

here have main class @service called regionsserviceimpl. i'm initializing applicationcontext.getbean, want utilize @autowired. , when do, @autowired doesn't initialize it.

main class:

package com.rebel.shop; public class jparepotest { //applicationcontext ctx; @autowired regionsserviceimpl regionsserviceimpl; public jparepotest() { // ctx = new annotationconfigapplicationcontext(dataconfig.class); // regionsserviceimpl = ctx.getbean("regionsserviceimpl", regionsserviceimpl.class); } public static void main(string[] args) { jparepotest jparepotest = new jparepotest(); jparepotest.testservice(); } private void testservice() { system.out.println(regionsserviceimpl.findbyid(3l).getname()); } }

my service class:

package com.rebel.shop.persistence.jpa.service; @service public class regionsserviceimpl implements regionsservice { @resource private regionsrepository regionsrepository; @override public regions findbyid(long id) { homecoming regionsrepository.findone(id); } }

it's interface:

package com.rebel.shop.persistence.jpa.service; public interface regionsservice { public regions findbyid(long id); }

repo:

package com.rebel.shop.persistence.jpa.repository; public interface regionsrepository extends jparepository<regions, long> { }

and java config spring:

package com.rebel.shop.persistence.jpa.config; @configuration @enabletransactionmanagement @propertysource("classpath:app.properties") @enablejparepositories("com.rebel.shop.persistence.jpa.repository") @componentscan("com.rebel.shop") public class dataconfig { private static final string prop_database_driver = "db.driver"; private static final string prop_database_password = "db.password"; private static final string prop_database_url = "db.url"; private static final string prop_database_username = "db.username"; private static final string prop_hibernate_dialect = "db.hibernate.dialect"; private static final string prop_hibernate_show_sql = "db.hibernate.show_sql"; private static final string prop_entitymanager_packages_to_scan = "db.entitymanager.packages.to.scan"; private static final string prop_hibernate_hbm2ddl_auto = "db.hibernate.hbm2ddl.auto"; @resource private environment env; @bean public datasource datasource() { drivermanagerdatasource datasource = new drivermanagerdatasource(); datasource.setdriverclassname(env.getrequiredproperty(prop_database_driver)); datasource.seturl(env.getrequiredproperty(prop_database_url)); datasource.setusername(env.getrequiredproperty(prop_database_username)); datasource.setpassword(env.getrequiredproperty(prop_database_password)); homecoming datasource; } @bean public platformtransactionmanager transactionmanager() { jpatransactionmanager txmanager = new jpatransactionmanager(); txmanager.setentitymanagerfactory(entitymanagerfactory()); homecoming txmanager; } @bean public hibernateexceptiontranslator hibernateexceptiontranslator() { homecoming new hibernateexceptiontranslator(); } @bean public entitymanagerfactory entitymanagerfactory() { hibernatejpavendoradapter vendoradapter = new hibernatejpavendoradapter(); vendoradapter.setshowsql(false); vendoradapter.setgenerateddl(false); localcontainerentitymanagerfactorybean mill = new localcontainerentitymanagerfactorybean(); factory.setjpavendoradapter(vendoradapter); factory.setpackagestoscan("com.rebel.shop.persistence.entity"); factory.setdatasource(datasource()); factory.afterpropertiesset(); homecoming factory.getobject(); } // @bean // regionsserviceimpl regionsserviceimpl() { // homecoming new regionsserviceimpl(); // } }

thanks in advance!

upd1:

exception:

exception in thread "main" java.lang.nullpointerexception @ com.rebel.shop.jparepotest.testservice(jparepotest.java:33) @ com.rebel.shop.jparepotest.main(jparepotest.java:29) @ sun.reflect.nativemethodaccessorimpl.invoke0(native method) @ sun.reflect.nativemethodaccessorimpl.invoke(nativemethodaccessorimpl.java:62) @ sun.reflect.delegatingmethodaccessorimpl.invoke(delegatingmethodaccessorimpl.java:43) @ java.lang.reflect.method.invoke(method.java:483) @ com.intellij.rt.execution.application.appmain.main(appmain.java:134)

you not using spring container, rather instantiating object using new, hence no spring bean autowired, modify bean below

package com.rebel.shop; @runwith(springjunit4classrunner.class) @contextconfiguration(dataconfig.class) public class jparepotest { //applicationcontext ctx; @autowired regionsserviceimpl regionsserviceimpl; public jparepotest() { // ctx = new annotationconfigapplicationcontext(dataconfig.class); // regionsserviceimpl = ctx.getbean("regionsserviceimpl", regionsserviceimpl.class); } @test public void mainmethod() { testservice(); } private void testservice() { system.out.println(regionsserviceimpl.findbyid(3l).getname()); } }

java spring jpa spring-data spring-data-jpa

No comments:

Post a Comment