【问题标题】:Problem with Spring @Configuration classSpring @Configuration 类的问题
【发布时间】:2011-02-20 00:55:00
【问题描述】:

我使用带有@Configuration 注释的类来配置我的spring 应用程序:

@配置 公共类 SpringConfiguration { @Value("${驱动程序}") 字符串驱动程序; @Value("${url}") 字符串网址; @Value("${minIdle}") 私人int minIdle; // 截图 .. @Bean(destroyMethod = "关闭") 公共数据源数据源(){ 数据源 dataSource = new DataSource(); dataSource.setDriverClassName(驱动程序); 数据源.setUrl(url); 数据源.setUsername(用户); dataSource.setPassword(密码); dataSource.setMinIdle(minIdle); 返回数据源; }

以及 CLASSPATH 中的属性文件

驱动程序=org.postgresql.Driver url=jdbc:postgresql:servicerepodb minIdle=1

我想在我的 DAO 类中获取我的 DataSource 配置对象:

ApplicationContext ctx = new AnnotationConfigApplicationContext(SpringConfiguration.class); 数据源 dataSource = ctx.getBean(DataSource.class);

但我得到了错误:

org.springframework.beans.factory.BeanCreationException: 创建名为“springConfiguration”的 bean 时出错:注入自动装配的依赖项 失败的;嵌套异常是 org.springframework.beans.factory.BeanCreationException: 无法自动装配字段:私有 int de.hska.repo.configuration.SpringConfiguration.minIdle;嵌套异常是 org.springframework.beans.TypeMismatchException:无法将“java.lang.String”类型的值转换为所需的“int”类型;嵌套异常是 **java.lang.NumberFormatException: For input string: "${minIdle}"** 引起:java.lang.NumberFormatException:对于输入字符串:**“${minIdle}”** 在 java.lang.NumberFormatException.forInputString(**Unknown Source**) 在 java.lang.Integer.parseInt(未知来源) 在 java.lang.Integer.valueOf(未知来源)

它适用于字符串属性(驱动程序,url),但无法解析 ${minIdle}(int 类型)! 请帮忙。提前谢谢!

【问题讨论】:

    标签: spring configuration


    【解决方案1】:

    更新: 使用更新的信息和您自己的answer,我删除了所有数据源内容,因为我非常确信您的问题与<context:property-placeholder /> 元素有关。

    我认为您来自answer 的错误消息是问题的根源:

    原因: java.lang.NumberFormatException:对于 输入字符串:“${minIdle}”

    我认为问题在于 PropertyPlaceholderConfigurer 未初始化。如果您使用<context:property-placeholder /> 元素进行配置,则在初始化过程结束和 Spring 容器处于运行阶段之前,所有占位符都将被后处理操作中的属性文件中的相应值替换。

    如果是解析错误,并且属性文件包含这样的一行:

    minIdle=demo string
    

    那么,错误消息将使用"demo string" 而不是"${minIdle}"

    在解析方面,Spring 将使用 @Value 注释为您处理解析,并且您的 minIdle 字段在我的计算机上可以正常工作:

     @Value("${minIdle}")
     private int minIdle;
    

    我设法获得您的异常消息的唯一方法是如果我忘记添加 <context:property-placeholder /> 元素。然后我得到了与错误消息中访问的最后一个属性相同的异常消息。

    演示应用

    一个模拟你的问题的小实验:

    @Value("${a}")
    private String a;
    
    @Value("${b}")
    private Integer b;
    
    @Bean
    public String demo() {
        System.out.println("a: " + a);
        System.out.println("b: " + b);
    
        return a + ", " + b;
    }
    

    没有property-placeholder 元素:

    原因: java.lang.NumberFormatException:对于 输入字符串:“${b}”

    使用property-placeholder 可以正常工作。

    【讨论】:

    • 我使用 org.apache.tomcat.jdbc.pool.DataSource
    • 对不起。我没有看到您的数据源的包名称。
    • @Espen 是对的,我在没有 property-placeholder 的情况下使用 Spring 3.1.2 时遇到了同样的错误,在我们的项目属性中,org.apache.commons.configuration.PropertiesConfiguration 正在加载
    • 抱歉,忘记了。但这发生在一周之后,我再次修改了我的工作,然后代码工作正常!
    【解决方案2】:

    上周我遇到了一些类似的错误。我会检查您使用的是哪个版本的spring。转到 3.0.2 为我在 Validator 类上修复了一个类似的错误。

    我最近还为数组属性注册了一个错误。这似乎是您的问题,但您可能需要通过执行属性注入的弹簧代码进行调试,以查看它如何处理您的属性。就我而言,问题出在 BeanDefinitionVistor 中,它包含决定如何处理任何给定属性的代码。跟踪这个类。可能是它决定不使用属性解析器来注入值。该错误表明是这种情况,因为它看起来像是在尝试传递原始字符串,而不是用您传递的值替换它。

    祝你好运 德里克

    【讨论】:

      【解决方案3】:

      我使用 Spring 3.0.2。似乎只能解析字符串属性。 我将 minIdle 属性的类型更改为 String:

      @Value("${minIdle}") 私有字符串 minIdle;

      在我的 dataSorce 方法中,我将手动字符串转换为 int:

      @Bean(destroyMethod = "关闭") 公共数据源数据源(){ 数据源 dataSource = new org.apache.tomcat.jdbc.pool.DataSource() dataSource.setDriverClassName(驱动程序); 数据源.setUrl(url); 数据源.setUsername(用户); dataSource.setPassword(密码); //转换手册 dataSource.setMinIdle(Integer.valueOf(minIdle)); 返回数据源; }

      它工作正常(也没有强制转换) - 我的应用程序使用这些设置运行。如果我尝试使用 SpringConfiguation 类作为构造函数参数获取 ApplicationContext 会出错:

      ApplicatonContext: ApplicationContext ctx = new AnnotationConfigApplicationContext(SpringConfiguration.class); 数据源 dataSource = ctx.getBean(DataSource.class);

      完整的堆栈跟踪

      org.springframework.beans.factory.BeanCreationException:在类 de.hska.repo.configuration.SpringConfiguration 中创建名称为“transactionManager”的 bean 时出错:bean 的实例化失败;嵌套异常是 org.springframework.beans.factory.BeanDefinitionStoreException: 工厂方法 [public org.springframework.transaction.PlatformTransactionManager de.hska.repo.configuration.SpringConfiguration.transactionManager()] 抛出异常;嵌套异常是 org.springframework.beans.factory.BeanCreationException:在类 de.hska.repo.configuration.SpringConfiguration 中创建名称为“entityManagerFactory”的 bean 时出错:bean 的实例化失败;嵌套异常是 org.springframework.beans.factory.BeanDefinitionStoreException: 工厂方法 [protected javax.persistence.EntityManagerFactory de.hska.repo.configuration.SpringConfiguration.entityManagerFactory()] 抛出异常;嵌套异常是 org.springframework.beans.factory.BeanCreationException:在类 de.hska.repo.configuration.SpringConfiguration 中创建名称为“dataSource”的 bean 时出错:bean 的实例化失败;嵌套异常是 org.springframework.beans.factory.BeanDefinitionStoreException: 工厂方法 [protected javax.sql.DataSource de.hska.repo.configuration.SpringConfiguration.dataSource()] 抛出异常;嵌套异常是 java.lang.NumberFormatException: For input string: "${minIdle}" 在 org.springframework.beans.factory.support.ConstructorResolver.instantiateUsingFactoryMethod(ConstructorResolver.java:568) 在 org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.instantiateUsingFactoryMethod(AbstractAutowireCapableBeanFactory.java:973) 在 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:872) 在 org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:423) 在 org.springframework.context.annotation.AnnotationConfigApplicationContext.(AnnotationConfigApplicationContext.java:65) 在 de.hska.repo.repository.CategoryJpaDao.getNumberOfAllRepoObjectsByCategoryId(CategoryJpaDao.java:90) 在 de.hska.repo.service.CategoryServiceImpl.deleteCategory(CategoryServiceImpl.java:124) 在 sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 在 sun.reflect.NativeMethodAccessorImpl.invoke(未知来源) 在 sun.reflect.DelegatingMethodAccessorImpl.invoke(未知来源) 在 java.lang.reflect.Method.invoke(未知来源) 在 org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:309) 在 org.springframework.aop.framework.ReflectiveMethodInvocation.invokeJoinpoint(ReflectiveMethodInvocation.java:183) 在 org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:150) 在 org.springframework.aop.framework.adapter.AfterReturningAdviceInterceptor.invoke(AfterReturningAdviceInterceptor.java:50) 在 org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:172) 在 org.springframework.aop.framework.adapter.MethodBeforeAdviceInterceptor.invoke(MethodBeforeAdviceInterceptor.java:50) 在 org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:172) 在 org.springframework.aop.interceptor.ExposeInvocationInterceptor.invoke(ExposeInvocationInterceptor.java:89) 在 org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:172) 在 org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:202) 在 $Proxy56.deleteCategory(未知来源) 在 de.hska.repo.service.CategoryTest.deleteCategory(CategoryTest.java:465) 在 sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 在 sun.reflect.NativeMethodAccessorImpl.invoke(未知来源) 在 sun.reflect.DelegatingMethodAccessorImpl.invoke(未知来源) 在 java.lang.reflect.Method.invoke(未知来源) 在 org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:44) 在 org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:15) 在 org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:41) 在 org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:20) 在 org.junit.rules.ExpectedException$ExpectedExceptionStatement.evaluate(ExpectedException.java:110) 在 org.springframework.test.context.junit4.statements.RunBeforeTestMethodCallbacks.evaluate(RunBeforeTestMethodCallbacks.java:74) 在 org.springframework.test.context.junit4.statements.RunAfterTestMethodCallbacks.evaluate(RunAfterTestMethodCallbacks.java:82) 在 org.springframework.test.context.junit4.statements.SpringRepeat.evaluate(SpringRepeat.java:72) 在 org.springframework.test.context.junit4.SpringJUnit4ClassRunner.runChild(SpringJUnit4ClassRunner.java:240) 在 org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:50) 在 org.junit.runners.ParentRunner$3.run(ParentRunner.java:193) 在 org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:52) 在 org.junit.runners.ParentRunner.runChildren(ParentRunner.java:191) 在 org.junit.runners.ParentRunner.access$000(ParentRunner.java:42) 在 org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:184) 在 org.junit.internal.runners.statements.RunBefores.evaluate(RunBefores.java:28) 在 org.springframework.test.context.junit4.statements.RunBeforeTestClassCallbacks.evaluate(RunBeforeTestClassCallbacks.java:61) 在 org.springframework.test.context.junit4.statements.RunAfterTestClassCallbacks.evaluate(RunAfterTestClassCallbacks.java:70) 在 org.junit.runners.ParentRunner.run(ParentRunner.java:236) 在 org.springframework.test.context.junit4.SpringJUnit4ClassRunner.run(SpringJUnit4ClassRunner.java:180) 在 org.eclipse.jdt.internal.junit4.runner.JUnit4TestReference.run(JUnit4TestReference.java:46) 在 org.eclipse.jdt.internal.junit.runner.TestExecution.run(TestExecution.java:38) 在 org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:467) 在 org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:683) 在 org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:390) 在 org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:197) 引起:org.springframework.beans.factory.BeanDefinitionStoreException:工厂方法[public org.springframework.transaction.PlatformTransactionManager de.hska.repo.configuration.SpringConfiguration.transactionManager()]抛出异常;嵌套异常是 org.springframework.beans.factory.BeanCreationException:在类 de.hska.repo.configuration.SpringConfiguration 中创建名称为“entityManagerFactory”的 bean 时出错:bean 的实例化失败;嵌套异常是 org.springframework.beans.factory.BeanDefinitionStoreException: 工厂方法 [protected javax.persistence.EntityManagerFactory de.hska.repo.configuration.SpringConfiguration.entityManagerFactory()] 抛出异常;嵌套异常是 org.springframework.beans.factory.BeanCreationException:在类 de.hska.repo.configuration.SpringConfiguration 中创建名称为“dataSource”的 bean 时出错:bean 的实例化失败;嵌套异常是 org.springframework.beans.factory.BeanDefinitionStoreException: 工厂方法 [protected javax.sql.DataSource de.hska.repo.configuration.SpringConfiguration.dataSource()] 抛出异常;嵌套异常是 java.lang.NumberFormatException: For input string: "${minIdle}" 在 org.springframework.beans.factory.support.SimpleInstantiationStrategy.instantiate(SimpleInstantiationStrategy.java:158) 在 org.springframework.beans.factory.support.ConstructorResolver.instantiateUsingFactoryMethod(ConstructorResolver.java:557) ... 60 更多 原因:org.springframework.beans.factory.BeanCreationException:创建类de.hska.repo.configuration.SpringConfiguration中定义的名称为“entityManagerFactory”的bean时出错:bean的实例化失败;嵌套异常是 org.springframework.beans.factory.BeanDefinitionStoreException: 工厂方法 [protected javax.persistence.EntityManagerFactory de.hska.repo.configuration.SpringConfiguration.entityManagerFactory()] 抛出异常;嵌套异常是 org.springframework.beans.factory.BeanCreationException:在类 de.hska.repo.configuration.SpringConfiguration 中创建名称为“dataSource”的 bean 时出错:bean 的实例化失败;嵌套异常是 org.springframework.beans.factory.BeanDefinitionStoreException: 工厂方法 [protected javax.sql.DataSource de.hska.repo.configuration.SpringConfiguration.dataSource()] 抛出异常;嵌套异常是 java.lang.NumberFormatException: For input string: "${minIdle}" 在 org.springframework.beans.factory.support.ConstructorResolver.instantiateUsingFactoryMethod(ConstructorResolver.java:568) 在 org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.instantiateUsingFactoryMethod(AbstractAutowireCapableBeanFactory.java:973) 在 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.context.annotation.ConfigurationClassEnhancer$BeanMethodInterceptor.intercept(ConfigurationClassEnhancer.java:206) 在 de.hska.repo.configuration.SpringConfiguration$$EnhancerByCGLIB$$9f63c721.entityManagerFactory() 在 de.hska.repo.configuration.SpringConfiguration.transactionManager(SpringConfiguration.java:154) 在 de.hska.repo.configuration.SpringConfiguration$$EnhancerByCGLIB$$9f63c721.CGLIB$transactionManager$0() 在 de.hska.repo.configuration.SpringConfiguration$$EnhancerByCGLIB$$9f63c721$$FastClassByCGLIB$$6e338b8e.invoke() 在 net.sf.cglib.proxy.MethodProxy.invokeSuper(MethodProxy.java:215) 在 org.springframework.context.annotation.ConfigurationClassEnhancer$BeanMethodInterceptor.intercept(ConfigurationClassEnhancer.java:210) 在 de.hska.repo.configuration.SpringConfiguration$$EnhancerByCGLIB$$9f63c721.transactionManager() 在 sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 在 sun.reflect.NativeMethodAccessorImpl.invoke(未知来源) 在 sun.reflect.DelegatingMethodAccessorImpl.invoke(未知来源) 在 java.lang.reflect.Method.invoke(未知来源) 在 org.springframework.beans.factory.support.SimpleInstantiationStrategy.instantiate(SimpleInstantiationStrategy.java:146) ... 61 更多 引起:org.springframework.beans.factory.BeanDefinitionStoreException:工厂方法[protected javax.persistence.EntityManagerFactory de.hska.repo.configuration.SpringConfiguration.entityManagerFactory()]抛出异常;嵌套异常是 org.springframework.beans.factory.BeanCreationException:在类 de.hska.repo.configuration.SpringConfiguration 中创建名称为“dataSource”的 bean 时出错:bean 的实例化失败;嵌套异常是 org.springframework.beans.factory.BeanDefinitionStoreException: 工厂方法 [protected javax.sql.DataSource de.hska.repo.configuration.SpringConfiguration.dataSource()] 抛出异常;嵌套异常是 java.lang.NumberFormatException: For input string: "${minIdle}" 在 org.springframework.beans.factory.support.SimpleInstantiationStrategy.instantiate(SimpleInstantiationStrategy.java:158) 在 org.springframework.beans.factory.support.ConstructorResolver.instantiateUsingFactoryMethod(ConstructorResolver.java:557) ... 82 更多 原因:org.springframework.beans.factory.BeanCreationException:创建类de.hska.repo.configuration.SpringConfiguration中定义的名称为“dataSource”的bean时出错:bean的实例化失败;嵌套异常是 org.springframework.beans.factory.BeanDefinitionStoreException: 工厂方法 [protected javax.sql.DataSource de.hska.repo.configuration.SpringConfiguration.dataSource()] 抛出异常;嵌套异常是 java.lang.NumberFormatException: For input string: "${minIdle}" 在 org.springframework.beans.factory.support.ConstructorResolver.instantiateUsingFactoryMethod(ConstructorResolver.java:568) 在 org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.instantiateUsingFactoryMethod(AbstractAutowireCapableBeanFactory.java:973) 在 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.context.annotation.ConfigurationClassEnhancer$BeanMethodInterceptor.intercept(ConfigurationClassEnhancer.java:206) 在 de.hska.repo.configuration.SpringConfiguration$$EnhancerByCGLIB$$9f63c721.dataSource() 在 de.hska.repo.configuration.SpringConfiguration.entityManagerFactory(SpringConfiguration.java:127) 在 de.hska.repo.configuration.SpringConfiguration$$EnhancerByCGLIB$$9f63c721.CGLIB$entityManagerFactory$3() 在 de.hska.repo.configuration.SpringConfiguration$$EnhancerByCGLIB$$9f63c721$$FastClassByCGLIB$$6e338b8e.invoke() 在 net.sf.cglib.proxy.MethodProxy.invokeSuper(MethodProxy.java:215) 在 org.springframework.context.annotation.ConfigurationClassEnhancer$BeanMethodInterceptor.intercept(ConfigurationClassEnhancer.java:210) 在 de.hska.repo.configuration.SpringConfiguration$$EnhancerByCGLIB$$9f63c721.entityManagerFactory() 在 sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 在 sun.reflect.NativeMethodAccessorImpl.invoke(未知来源) 在 sun.reflect.DelegatingMethodAccessorImpl.invoke(未知来源) 在 java.lang.reflect.Method.invoke(未知来源) 在 org.springframework.beans.factory.support.SimpleInstantiationStrategy.instantiate(SimpleInstantiationStrategy.java:146) ... 83 更多 引起:org.springframework.beans.factory.BeanDefinitionStoreException:工厂方法[protected javax.sql.DataSource de.hska.repo.configuration.SpringConfiguration.dataSource()]抛出异常;嵌套异常是 java.lang.NumberFormatException: For input string: "${minIdle}" 在 org.springframework.beans.factory.support.SimpleInstantiationStrategy.instantiate(SimpleInstantiationStrategy.java:158) 在 org.springframework.beans.factory.support.ConstructorResolver.instantiateUsingFactoryMethod(ConstructorResolver.java:557) ... 104 更多 引起:java.lang.NumberFormatException:对于输入字符串:“${minIdle}” 在 java.lang.NumberFormatException.forInputString(未知来源) 在 java.lang.Integer.parseInt(未知来源) 在 java.lang.Integer.valueOf(未知来源) 在 de.hska.repo.configuration.SpringConfiguration.dataSource(SpringConfiguration.java:109) 在 de.hska.repo.configuration.SpringConfiguration$$EnhancerByCGLIB$$9f63c721.CGLIB$dataSource$2() 在 de.hska.repo.configuration.SpringConfiguration$$EnhancerByCGLIB$$9f63c721$$FastClassByCGLIB$$6e338b8e.invoke() 在 net.sf.cglib.proxy.MethodProxy.invokeSuper(MethodProxy.java:215) 在 org.springframework.context.annotation.ConfigurationClassEnhancer$BeanMethodInterceptor.intercept(ConfigurationClassEnhancer.java:210) 在 de.hska.repo.configuration.SpringConfiguration$$EnhancerByCGLIB$$9f63c721.dataSource() 在 sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 在 sun.reflect.NativeMethodAccessorImpl.invoke(未知来源) 在 sun.reflect.DelegatingMethodAccessorImpl.invoke(未知来源) 在 java.lang.reflect.Method.invoke(未知来源) 在 org.springframework.beans.factory.support.SimpleInstantiationStrategy.instantiate(SimpleInstantiationStrategy.java:146) ... 105 更多

      我的 xml 配置文件:

      <context:property-placeholder location="classpath:META-INF/spring.properties"/>
      <context:component-scan base-package="de.hska.repo" />
      
      <tx:annotation-driven mode="aspectj"/> 
      <context:load-time-weaver/>
      
      <aop:aspectj-autoproxy/>  
      

      【讨论】:

      • @Value 确实适用于非字符串属性,如果它在这种特定情况下不起作用,那么就会发生一些奇怪的事情。
      • 它确实适用于字符串属性(我的应用程序使用这些设置运行),但如果我尝试获取 ApplicatonContext:ApplicationContext ctx = new AnnotationConfigApplicationContext(SpringConfiguration.class);
      猜你喜欢
      • 1970-01-01
      • 2014-07-23
      • 1970-01-01
      • 2020-12-21
      • 2014-12-14
      • 2019-11-24
      • 2013-12-31
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多