首页 \ 问答 \ Basic Bean配置存在疑问(Basic Bean configuration doubt)

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();
    }
}

这是 pom bean配置文件:

<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 pom bean 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
更新时间:2022-07-30 08:07

最满意答案

不同的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项目可以共享公共代码(相同的源文件):在每个项目的导航区域中创建相应的组并添加共享文件。 有目的地,共享源文件夹既不应该是共享代码的项目的子文件夹。 可能,您需要正确设置标题搜索路径。 根据您的需要,更好的方法可能是创建库项目并通过将客户端二进制文件链接到库来共享该库。 最好的分步指导如何创建和使用库是在官方文档本身。 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 ...
  • 我遇到了同样的问题,我的解决方案是添加 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 ...

相关文章

更多

最新问答

更多
  • 您如何使用git diff文件,并将其应用于同一存储库的副本的本地分支?(How do you take a git diff file, and apply it to a local branch that is a copy of the same repository?)
  • 将长浮点值剪切为2个小数点并复制到字符数组(Cut Long Float Value to 2 decimal points and copy to Character Array)
  • OctoberCMS侧边栏不呈现(OctoberCMS Sidebar not rendering)
  • 页面加载后对象是否有资格进行垃圾回收?(Are objects eligible for garbage collection after the page loads?)
  • codeigniter中的语言不能按预期工作(language in codeigniter doesn' t work as expected)
  • 在计算机拍照在哪里进入
  • 使用cin.get()从c ++中的输入流中丢弃不需要的字符(Using cin.get() to discard unwanted characters from the input stream in c++)
  • No for循环将在for循环中运行。(No for loop will run inside for loop. Testing for primes)
  • 单页应用程序:页面重新加载(Single Page Application: page reload)
  • 在循环中选择具有相似模式的列名称(Selecting Column Name With Similar Pattern in a Loop)
  • System.StackOverflow错误(System.StackOverflow error)
  • KnockoutJS未在嵌套模板上应用beforeRemove和afterAdd(KnockoutJS not applying beforeRemove and afterAdd on nested templates)
  • 散列包括方法和/或嵌套属性(Hash include methods and/or nested attributes)
  • android - 如何避免使用Samsung RFS文件系统延迟/冻结?(android - how to avoid lag/freezes with Samsung RFS filesystem?)
  • TensorFlow:基于索引列表创建新张量(TensorFlow: Create a new tensor based on list of indices)
  • 企业安全培训的各项内容
  • 错误:RPC失败;(error: RPC failed; curl transfer closed with outstanding read data remaining)
  • C#类名中允许哪些字符?(What characters are allowed in C# class name?)
  • NumPy:将int64值存储在np.array中并使用dtype float64并将其转换回整数是否安全?(NumPy: Is it safe to store an int64 value in an np.array with dtype float64 and later convert it back to integer?)
  • 注销后如何隐藏导航portlet?(How to hide navigation portlet after logout?)
  • 将多个行和可变行移动到列(moving multiple and variable rows to columns)
  • 提交表单时忽略基础href,而不使用Javascript(ignore base href when submitting form, without using Javascript)
  • 对setOnInfoWindowClickListener的意图(Intent on setOnInfoWindowClickListener)
  • Angular $资源不会改变方法(Angular $resource doesn't change method)
  • 在Angular 5中不是一个函数(is not a function in Angular 5)
  • 如何配置Composite C1以将.m和桌面作为同一站点提供服务(How to configure Composite C1 to serve .m and desktop as the same site)
  • 不适用:悬停在悬停时:在元素之前[复制](Don't apply :hover when hovering on :before element [duplicate])
  • 常见的python rpc和cli接口(Common python rpc and cli interface)
  • Mysql DB单个字段匹配多个其他字段(Mysql DB single field matching to multiple other fields)
  • 产品页面上的Magento Up出售对齐问题(Magento Up sell alignment issue on the products page)