Basic Bean配置存在疑问(Basic Bean configuration doubt)
我关注此链接: http : //www.mkyong.com/spring/spring-quartz-scheduler-example/
一切都很好。 本教程显示了3个类和pom文件。
我想让它适用于2个班级。
但是我遇到了问题。
import org.springframework.context.support.ClassPathXmlApplicationContext; public class Loader { public static void main( String[] args ) throws Exception { new ClassPathXmlApplicationContext("Spring-Quartz.xml"); } }
这是第二堂课
public class Runner extends QuartzJobBean { Runner rRun = new Runner(); public void printMe() { System.out.println(" Quartz Running! ~"); } protected void executeInternal(JobExecutionContext context) throws JobExecutionException { rRun.printMe(); } }
这是
pombean配置文件:<beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.5.xsd"> <bean name="loader" class="org.springframework.scheduling.quartz.JobDetailBean"> <property name="jobClass" value="Loader" /> <property name="jobDataAsMap"> <map> <entry key="rRun" value-ref="rRun" /> </map> </property> </bean> <!-- <bean id="loader" class="org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean"> <property name="targetObject" ref="rRun" /> <property name="targetMethod" value="printMe" /> </bean> --> <bean id="myPropertyConfigurer" class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer"> <property name="location" value="application.properties"/> <property name="placeholderPrefix" value="${props:"/> </bean> <!-- Simple Trigger --> <bean id="simpleTrigger" class="org.springframework.scheduling.quartz.SimpleTriggerBean"> <property name="jobDetail" ref="loader" /> <property name="repeatInterval" value="${props:repeatInterval}" /> <property name="startDelay" value="${props:startDelay}" /> </bean> <!-- Cron Trigger --> <bean id="cronTrigger" class="org.springframework.scheduling.quartz.CronTriggerBean"> <property name="jobDetail" ref="runner" /> <property name="cronExpression" value="${props:cronExpression}" /> </bean> <bean class="org.springframework.scheduling.quartz.SchedulerFactoryBean"> <property name="jobDetails"> <list> <ref bean="runner" /> </list> </property> <property name="triggers"> <list> <ref bean="simpleTrigger" /> </list> </property> </bean> </beans>
我哪里做错了?
编辑:
我的问题是:
Exception in thread "main" org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'runner' defined in class path resource [Spring-Quartz.xml]: Cannot resolve reference to bean 'rRun' while setting bean property 'jobDataAsMap' with key [TypedStringValue: value [rRun], target type [null]]; nested exception is org.springframework.beans.factory.NoSuchBeanDefinitionException: No bean named 'rRun' is defined at org.springframework.beans.factory.support.BeanDefinitionValueResolver.resolveReference(BeanDefinitionValueResolver.java:328) at org.springframework.beans.factory.support.BeanDefinitionValueResolver.resolveValueIfNecessary(BeanDefinitionValueResolver.java:106) at org.springframework.beans.factory.support.BeanDefinitionValueResolver.resolveManagedMap(BeanDefinitionValueResolver.java:378) at org.springframework.beans.factory.support.BeanDefinitionValueResolver.resolveValueIfNecessary(BeanDefinitionValueResolver.java:161) at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.applyPropertyValues(AbstractAutowireCapableBeanFactory.java:1325) at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.populateBean(AbstractAutowireCapableBeanFactory.java:1086) at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:517) at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:456) at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:291) at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:222) at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:288) at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:190) at org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:580) at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:895) at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:425) at org.springframework.context.support.ClassPathXmlApplicationContext.<init>(ClassPathXmlApplicationContext.java:139) at org.springframework.context.support.ClassPathXmlApplicationContext.<init>(ClassPathXmlApplicationContext.java:83) at Loader.main(Loader.java:9) Caused by: org.springframework.beans.factory.NoSuchBeanDefinitionException: No bean named 'rRun' is defined at org.springframework.beans.factory.support.DefaultListableBeanFactory.getBeanDefinition(DefaultListableBeanFactory.java:527) at org.springframework.beans.factory.support.AbstractBeanFactory.getMergedLocalBeanDefinition(AbstractBeanFactory.java:1083) at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:274) at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:190) at org.springframework.beans.factory.support.BeanDefinitionValueResolver.resolveReference(BeanDefinitionValueResolver.java:322) ... 17 more
I am following this link: http://www.mkyong.com/spring/spring-quartz-scheduler-example/
Everything is working fine. The tutorial shows 3 classes and pom file.
I want to make it work with 2 classes.
However I am having issues.
import org.springframework.context.support.ClassPathXmlApplicationContext; public class Loader { public static void main( String[] args ) throws Exception { new ClassPathXmlApplicationContext("Spring-Quartz.xml"); } }
This is the second class
public class Runner extends QuartzJobBean { Runner rRun = new Runner(); public void printMe() { System.out.println(" Quartz Running! ~"); } protected void executeInternal(JobExecutionContext context) throws JobExecutionException { rRun.printMe(); } }
This is the
pombean config file:<beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.5.xsd"> <bean name="loader" class="org.springframework.scheduling.quartz.JobDetailBean"> <property name="jobClass" value="Loader" /> <property name="jobDataAsMap"> <map> <entry key="rRun" value-ref="rRun" /> </map> </property> </bean> <!-- <bean id="loader" class="org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean"> <property name="targetObject" ref="rRun" /> <property name="targetMethod" value="printMe" /> </bean> --> <bean id="myPropertyConfigurer" class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer"> <property name="location" value="application.properties"/> <property name="placeholderPrefix" value="${props:"/> </bean> <!-- Simple Trigger --> <bean id="simpleTrigger" class="org.springframework.scheduling.quartz.SimpleTriggerBean"> <property name="jobDetail" ref="loader" /> <property name="repeatInterval" value="${props:repeatInterval}" /> <property name="startDelay" value="${props:startDelay}" /> </bean> <!-- Cron Trigger --> <bean id="cronTrigger" class="org.springframework.scheduling.quartz.CronTriggerBean"> <property name="jobDetail" ref="runner" /> <property name="cronExpression" value="${props:cronExpression}" /> </bean> <bean class="org.springframework.scheduling.quartz.SchedulerFactoryBean"> <property name="jobDetails"> <list> <ref bean="runner" /> </list> </property> <property name="triggers"> <list> <ref bean="simpleTrigger" /> </list> </property> </bean> </beans>
Where did I go wrong?
EDIT:
My issues are:
Exception in thread "main" org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'runner' defined in class path resource [Spring-Quartz.xml]: Cannot resolve reference to bean 'rRun' while setting bean property 'jobDataAsMap' with key [TypedStringValue: value [rRun], target type [null]]; nested exception is org.springframework.beans.factory.NoSuchBeanDefinitionException: No bean named 'rRun' is defined at org.springframework.beans.factory.support.BeanDefinitionValueResolver.resolveReference(BeanDefinitionValueResolver.java:328) at org.springframework.beans.factory.support.BeanDefinitionValueResolver.resolveValueIfNecessary(BeanDefinitionValueResolver.java:106) at org.springframework.beans.factory.support.BeanDefinitionValueResolver.resolveManagedMap(BeanDefinitionValueResolver.java:378) at org.springframework.beans.factory.support.BeanDefinitionValueResolver.resolveValueIfNecessary(BeanDefinitionValueResolver.java:161) at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.applyPropertyValues(AbstractAutowireCapableBeanFactory.java:1325) at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.populateBean(AbstractAutowireCapableBeanFactory.java:1086) at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:517) at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:456) at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:291) at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:222) at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:288) at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:190) at org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:580) at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:895) at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:425) at org.springframework.context.support.ClassPathXmlApplicationContext.<init>(ClassPathXmlApplicationContext.java:139) at org.springframework.context.support.ClassPathXmlApplicationContext.<init>(ClassPathXmlApplicationContext.java:83) at Loader.main(Loader.java:9) Caused by: org.springframework.beans.factory.NoSuchBeanDefinitionException: No bean named 'rRun' is defined at org.springframework.beans.factory.support.DefaultListableBeanFactory.getBeanDefinition(DefaultListableBeanFactory.java:527) at org.springframework.beans.factory.support.AbstractBeanFactory.getMergedLocalBeanDefinition(AbstractBeanFactory.java:1083) at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:274) at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:190) at org.springframework.beans.factory.support.BeanDefinitionValueResolver.resolveReference(BeanDefinitionValueResolver.java:322) ... 17 more
原文:https://stackoverflow.com/questions/7488982
最满意答案
不同的Xcode项目可以共享公共代码(相同的源文件):在每个项目的导航区域中创建相应的组并添加共享文件。 有目的地,共享源文件夹既不应该是共享代码的项目的子文件夹。 可能,您需要正确设置标题搜索路径。
根据您的需要,更好的方法可能是创建库项目并通过将客户端二进制文件链接到库来共享该库。 最好的分步指导如何创建和使用库是在官方文档本身。
Different Xcode projects may share common code (identical source files): Create a corresponding Group in the Navigation area of each project and add shared files. Purposefully, the folder for shared source should neither be a subfolder of the projects sharing the code. Possibly, you need to properly setup header search paths.
Depending on your needs, a better approach might be to create a library project and share that library through linking the client binary to the library. The best step by step guide how to create and use a library is in the official documentation itself.
相关问答
更多-
我想在合并项目时使用工作区,同时保持项目独立性。 我使用工作区的例子是一系列从简单到复杂的教程项目。 每个项目都可以作为一个独立的项目,但将它们分组在一起可以帮助我组织整个项目。 在另一个例子中,我有一个为客户开发的应用程序。 该应用程序既可以作为独立应用程序,也可以作为整个项目中的模块。 独立项目可以构建独立应用程序。 另一个应用程序使用包含两个项目的工作区。 该应用程序的模块版本是从一个特殊的方案构建的,这个组合的应用程序不会在没有使用工作区的情况下构建。 上述两种情况的一种扭曲是构建文件夹的存储位置。 ...
-
我有这个完全相同的问题。 我认为这是因为已经打开了另一个工作区来引用您想要添加的项目。 我得到它的工作: 完全关闭xcode 双击工作区以启动Xcode并打开该工作区 从Finder拖放项目文件 工作很好。 我有许多工作空间都引用了openssl项目,并且在Xcode中只有一个工作空间一次打开时,它似乎可以正常工作。 I had this exact same problem. I think it stems from having another workspace already open refer ...
-
确保你没有在另一个窗口中打开项目。 Xcode只允许你一次打开一个项目。 在处理框架然后尝试将其添加到应用程序时,我犯了很多错误。 只需关闭您要拖入窗口的项目,一切都会很开心。 Be sure you don't have the project already open in another window. Xcode only lets you open a project one time. I've made this mistake a lot when working on a framewor ...
-
xcode工作区有2个项目。(xcode workspace with 2 projects. how to create object from project 1 in project 2?)[2023-11-13]
不同的Xcode项目可以共享公共代码(相同的源文件):在每个项目的导航区域中创建相应的组并添加共享文件。 有目的地,共享源文件夹既不应该是共享代码的项目的子文件夹。 可能,您需要正确设置标题搜索路径。 根据您的需要,更好的方法可能是创建库项目并通过将客户端二进制文件链接到库来共享该库。 最好的分步指导如何创建和使用库是在官方文档本身。 Different Xcode projects may share common code (identical source files): Create a corre ... -
您可以为此创建一个方案。 供参考: XCode Scheme 我尝试创建一个工作区并在其中添加了两个项目。 它出现在菜单(您可以在设备和模拟器之间选择)上,我想要触发构建操作的项目。 You can create a scheme for that. For reference: XCode Scheme I tried creating a workspace and added two projects in it. It appeared on the Menu (From which you sel ...
-
您需要首先定义所有项目通用的窗格 # Uncomment this line to define a global platform for your project platform :ios, '8.2' # Uncomment this line if you're using Swift use_frameworks! # Define main pods. def main_pods #your main pods pod 'AwesomeCache', '~> 5.0' ...
-
打开应该分开的项目。 选择“文件”>“将文件添加到ProjectName”。 在“打开面板”中找到共享文件。 选中“将项目复制到目标组的文件夹”复选框,以将共享文件复制到项目的文件夹中。 Open the project that should be separate. Choose File > Add Files to ProjectName. Locate the shared files in the Open Panel. Select the Copy items into destinatio ...
-
如果您只想使用某些文件而不是整个项目,可以拖动所需的文件并确保不检查“复制文件”,以便将引用拖入新项目中。 如果要导入整个项目,请先将其拖入当前项目。 然后单击IDE左上角的当前项目图标,在屏幕顶部中间部分选择项目后,您将看到常规功能信息列表等。选择构建设置。 搜索“标题搜索路径”并包含要导入的项目的路径。 例如,如果您当前的项目位于/Repos/MyFirstProject/myproj.xcodeProj中,而您的其他项目位于/Repos/MySecondProject/myotherproj.xcod ...
-
Xcode4工作区与静态库项目和应用程序项目(Xcode4 Workspace with Static library project & application project)[2023-02-19]
我遇到了同样的问题,我的解决方案是添加 rm -f BUILT_PRODUCTS_DIR/$EXECUTABLE_PATH 到build -> pre-actions部分(编辑方案,扩展构建和添加预执行)。 在Provide build settings from确保选择目标项目。 这将确保在脚本运行时配置正确的env变量。 我正在使用XCode 4.5.1。 Turns out XCode was doing everything right, and I wasn't. Another clean a ... -
当您要求Xcode创建一个新项目时,它为您提供了使其成为现有工作区的一部分的机会。 所以就这样做吧。 但是,我认为工作区是一个完整的红鲱鱼。 毕竟,它不是一个文件夹。 我所做的只是创建一个包含大量项目文件夹的文件夹。 很多项目文件夹。 像这样: https://github.com/mattneub/Programming-iOS-Book-Examples When you ask Xcode to make a new project, it offers you a chance to make it ...