java - Spring Bean Creation at Runtime -


i'm trying create beans @ runtime using @configuration , @bean annotations. reason trying have spring aware of created beans can handle scheduling application creating. i've defined annotated class so:

@configuration   public class gathererconfigbean {     @bean(name = "factorybean")     public methodinvokingjobdetailfactorybean createmethodinvokingjobdetail(string service, object obj, string method) throws classnotfoundexception, nosuchmethodexception{         methodinvokingjobdetailfactorybean jobdetailfactory = new methodinvokingjobdetailfactorybean();         jobdetailfactory.setbeanname(service + "factorybean");         jobdetailfactory.settargetobject(obj);         jobdetailfactory.settargetmethod(method);         jobdetailfactory.setconcurrent(false);         jobdetailfactory.afterpropertiesset();         return jobdetailfactory;     }      @bean(name = "triggerbean")     public crontriggerbean createtriggerbean(string service, jobdetail job, string schedule) throws parseexception{         crontriggerbean trigger = new crontriggerbean();         trigger.setbeanname(service + "triggerbean");         trigger.setjobdetail(job);         trigger.setcronexpression(schedule);         return trigger;     }      public crontrigger createtrigger(string service, jobdetail job, string schedule) throws parseexception{         return createtriggerbean(service, job, schedule);     }      public jobdetail createjobdetail(string service, abstractgatherer obj, string method) throws classnotfoundexception, nosuchmethodexception{         return (jobdetail) createmethodinvokingjobdetail(service, obj, method).getobject();     } } 

the problem when run following exceptions , have been unable find similar example of doing on-line. originally, had thought because have same name, doesn't seem case because when run 1 same error.

    exception in thread "main" org.springframework.beans.factory.unsatisfieddependencyexception: error creating bean name 'factorybean' defined in class path resource [com/linuxbox/enkive/statistics/gathering/gathererconfigbean.class]: unsatisfied dependency expressed through constructor argument index 0 of type [java.lang.string]: : no matching bean of type [java.lang.string] found dependency: expected @ least 1 bean qualifies autowire candidate dependency. dependency annotations: {}; nested exception org.springframework.beans.factory.nosuchbeandefinitionexception: no matching bean of type [java.lang.string] found dependency: expected @ least 1 bean qualifies autowire candidate dependency. dependency annotations: {} related cause: org.springframework.beans.factory.beancurrentlyincreationexception: error creating bean name 'factorybean': requested bean in creation: there unresolvable circular reference?     @ org.springframework.beans.factory.support.constructorresolver.createargumentarray(constructorresolver.java:730)     @ org.springframework.beans.factory.support.constructorresolver.instantiateusingfactorymethod(constructorresolver.java:461)     @ org.springframework.beans.factory.support.abstractautowirecapablebeanfactory.instantiateusingfactorymethod(abstractautowirecapablebeanfactory.java:983)     @ org.springframework.beans.factory.support.abstractautowirecapablebeanfactory.createbeaninstance(abstractautowirecapablebeanfactory.java:879)     @ org.springframework.beans.factory.support.abstractautowirecapablebeanfactory.docreatebean(abstractautowirecapablebeanfactory.java:485)     @ org.springframework.beans.factory.support.abstractautowirecapablebeanfactory.createbean(abstractautowirecapablebeanfactory.java:456)     @ org.springframework.beans.factory.support.abstractbeanfactory$1.getobject(abstractbeanfactory.java:291)     @ org.springframework.beans.factory.support.defaultsingletonbeanregistry.getsingleton(defaultsingletonbeanregistry.java:222)     @ org.springframework.beans.factory.support.abstractbeanfactory.dogetbean(abstractbeanfactory.java:288)     @ org.springframework.beans.factory.support.abstractbeanfactory.getbean(abstractbeanfactory.java:190)     @ org.springframework.beans.factory.support.defaultlistablebeanfactory.preinstantiatesingletons(defaultlistablebeanfactory.java:563)     @ org.springframework.context.support.abstractapplicationcontext.finishbeanfactoryinitialization(abstractapplicationcontext.java:895)     @ org.springframework.context.support.abstractapplicationcontext.refresh(abstractapplicationcontext.java:425)     @ org.springframework.context.support.classpathxmlapplicationcontext.<init>(classpathxmlapplicationcontext.java:139)     @ org.springframework.context.support.classpathxmlapplicationcontext.<init>(classpathxmlapplicationcontext.java:93)     @ com.linuxbox.enkive.main.run(main.java:54)     @ com.linuxbox.enkive.mainjettywebapps.main(mainjettywebapps.java:53) caused by: org.springframework.beans.factory.nosuchbeandefinitionexception: no matching bean of type [java.lang.string] found dependency: expected @ least 1 bean qualifies autowire candidate dependency. dependency annotations: {}     @ org.springframework.beans.factory.support.defaultlistablebeanfactory.raisenosuchbeandefinitionexception(defaultlistablebeanfactory.java:920)     @ org.springframework.beans.factory.support.defaultlistablebeanfactory.doresolvedependency(defaultlistablebeanfactory.java:789)     @ org.springframework.beans.factory.support.defaultlistablebeanfactory.resolvedependency(defaultlistablebeanfactory.java:703)     @ org.springframework.beans.factory.support.constructorresolver.resolveautowiredargument(constructorresolver.java:795)     @ org.springframework.beans.factory.support.constructorresolver.createargumentarray(constructorresolver.java:723)     ... 16 more related cause: org.springframework.beans.factory.beancurrentlyincreationexception: error creating bean name 'factorybean': requested bean in creation: there unresolvable circular reference?     @ org.springframework.beans.factory.support.defaultsingletonbeanregistry.beforesingletoncreation(defaultsingletonbeanregistry.java:297)     @ org.springframework.beans.factory.support.defaultsingletonbeanregistry.getsingleton(defaultsingletonbeanregistry.java:216)     @ org.springframework.beans.factory.support.abstractbeanfactory.dogetbean(abstractbeanfactory.java:288)     @ org.springframework.beans.factory.support.abstractbeanfactory.gettypeforfactorybean(abstractbeanfactory.java:1343)     @ org.springframework.beans.factory.support.abstractautowirecapablebeanfactory.gettypeforfactorybean(abstractautowirecapablebeanfactory.java:678)     @ org.springframework.beans.factory.support.abstractbeanfactory.istypematch(abstractbeanfactory.java:507)     @ org.springframework.beans.factory.support.defaultlistablebeanfactory.getbeannamesfortype(defaultlistablebeanfactory.java:317)     @ org.springframework.beans.factory.beanfactoryutils.beannamesfortypeincludingancestors(beanfactoryutils.java:185)     @ org.springframework.beans.factory.support.defaultlistablebeanfactory.findautowirecandidates(defaultlistablebeanfactory.java:829)     @ org.springframework.beans.factory.support.defaultlistablebeanfactory.doresolvedependency(defaultlistablebeanfactory.java:786)     @ org.springframework.beans.factory.support.defaultlistablebeanfactory.resolvedependency(defaultlistablebeanfactory.java:703)     @ org.springframework.beans.factory.support.constructorresolver.resolveautowiredargument(constructorresolver.java:795)     @ org.springframework.beans.factory.support.constructorresolver.createargumentarray(constructorresolver.java:723)     @ org.springframework.beans.factory.support.constructorresolver.instantiateusingfactorymethod(constructorresolver.java:461)     @ org.springframework.beans.factory.support.abstractautowirecapablebeanfactory.instantiateusingfactorymethod(abstractautowirecapablebeanfactory.java:983)     @ org.springframework.beans.factory.support.abstractautowirecapablebeanfactory.createbeaninstance(abstractautowirecapablebeanfactory.java:879)     @ org.springframework.beans.factory.support.abstractautowirecapablebeanfactory.docreatebean(abstractautowirecapablebeanfactory.java:485)     @ org.springframework.beans.factory.support.abstractautowirecapablebeanfactory.createbean(abstractautowirecapablebeanfactory.java:456)     @ org.springframework.beans.factory.support.abstractbeanfactory$1.getobject(abstractbeanfactory.java:291)     @ org.springframework.beans.factory.support.defaultsingletonbeanregistry.getsingleton(defaultsingletonbeanregistry.java:222)     @ org.springframework.beans.factory.support.abstractbeanfactory.dogetbean(abstractbeanfactory.java:288)     @ org.springframework.beans.factory.support.abstractbeanfactory.getbean(abstractbeanfactory.java:190)     @ org.springframework.beans.factory.support.defaultlistablebeanfactory.preinstantiatesingletons(defaultlistablebeanfactory.java:563)     @ org.springframework.context.support.abstractapplicationcontext.finishbeanfactoryinitialization(abstractapplicationcontext.java:895)     @ org.springframework.context.support.abstractapplicationcontext.refresh(abstractapplicationcontext.java:425)     @ org.springframework.context.support.classpathxmlapplicationcontext.<init>(classpathxmlapplicationcontext.java:139)     @ org.springframework.context.support.classpathxmlapplicationcontext.<init>(classpathxmlapplicationcontext.java:93)     @ com.linuxbox.enkive.main.run(main.java:54)     @ com.linuxbox.enkive.mainjettywebapps.main(mainjettywebapps.java:53) 

any help, feedback, ideas, or suggestions appreciated, , let me know if need more specific information!

i suggest use @postconstruct annotation on 1 of method needs executed after dependency injection performed. have @ link know more it.

one more way make class implement applicationcontextaware interface access application context. more details on please refer link.

hope helps you. cheers.


Comments

Popular posts from this blog

jquery - Invalid Assignment Left-Hand Side -

java - Play! framework 2.0: How to display multiple image? -

gmail - Is there any documentation for read-only access to the Google Contacts API? -