Java @Spring3中的值注释不';我不能在我的程序中工作

Java @Spring3中的值注释不';我不能在我的程序中工作,java,spring,annotations,Java,Spring,Annotations,我正在用Spring3编写一个java应用程序。它可以很好地处理xml,但在注释中根本不起作用 以下是我的片段: @Service("oracleDB") public class OracleDatabase implements IDatabase { @Value("oracle.jdbc.driver.OracleDriver") private String driverName; @Value("jdbc:oracle:thin:@") pr

我正在用Spring3编写一个java应用程序。它可以很好地处理xml,但在注释中根本不起作用

以下是我的片段:

@Service("oracleDB")
public class OracleDatabase implements IDatabase
{
     @Value("oracle.jdbc.driver.OracleDriver") 
     private String driverName;
     @Value("jdbc:oracle:thin:@")
     private String url;

     public String getDriverName()
     {
          return driverName;
     }
 }
我的ApplicationContext.xml如下所示:

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"    xmlns:context="http://www.springframework.org/schema/context"
 xsi:schemaLocation="
 http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
 http://www.springframework.org/schema/context   http://www.springframework.org/schema/context/spring-context-3.0.xsd">

    <context:annotation-config />

    <context:component-scan 
        base-package="com.pdiwt.database"></context:component-scan>
        </beans>

你猜怎么着?结果为空。有什么不对劲吗?

如果您已经在使用Spring,为什么要用这种方式获得连接,而不是使用Spring的数据源?充其量似乎很奇怪;最坏的情况是头脑错误


我会给这个存储库一个JdbcTemplate。

如果您已经在使用Spring,为什么要用这种方式获得连接而不是使用Spring的数据源?充其量似乎很奇怪;最坏的情况是头脑错误


我会给存储库一个JdbcTemplate。

这里的问题是使用xmlbeanfactory,这是一个常见的错误。试试这个,它会很好地工作:

ClassPathXmlApplicationContext context = new ClassPathXmlApplicationContext("classpath:applicationContext.xml");
OracleDatabase oracleDB = (OracleDatabase)context.getBean("oracleDB");
...

我认为beanfactory的功能不足以处理@Value注释。可以找到更多信息。

这里的问题是使用xmlbeanfactory,这是一个常见错误。试试这个,它会很好地工作:

ClassPathXmlApplicationContext context = new ClassPathXmlApplicationContext("classpath:applicationContext.xml");
OracleDatabase oracleDB = (OracleDatabase)context.getBean("oracleDB");
...

我认为beanfactory的功能不足以处理@Value注释。可以找到更多信息。

OracleDatabase oracelDB=beanFactory.getBean(“oraceDB”);您已经找到并更正了这个打字错误,对吗?(bean名称应该是oracleDB)是的,bean名称是oracleDB,我写错了。问题是为什么自动连接不起作用?它与beanFactory.getBean()有什么关系吗?我知道,如果我手动用new()初始化类,自动连接就不起作用。“new”和自动连接是互斥的。如果调用“new”,则bean不在Spring的控制之下;您已经找到并更正了这个打字错误,对吗?(bean名称应该是oracleDB)是的,bean名称是oracleDB,我写错了。问题是为什么自动连接不起作用?它与beanFactory.getBean()有什么关系吗?我知道,如果我手动用new()初始化类,自动连接就不起作用。“new”和自动连接是互斥的。如果你称之为“new”,bean就不在Spring的控制之下。我只是举一个简单的例子,我不打算使用jdbctemplate。问题是为什么自动连接不起作用?如果你做得对,它会工作得很好。我不明白为什么JdbcTemplate令人反感。你不会说“不起作用”是什么样子的。我认为bean工厂返回了一个对象,但我没有看到强制转换。编译器没有为此标记你吗?让我直截了当地说,我没有使用jdbc,我只是举一个例子,说明autowring在我的例子中不起作用。如果它提供了任何线索,我是在应用程序而不是web上工作。在简单的情况下,没有例外。如果说连接一个bean并试图从该bean调用一个方法,将抛出一个Nullpointer异常,因为DI不起作用我只是给出一个简单的例子,我不打算使用jdbctemplate。问题是为什么自动连线不起作用?如果你做得对,它会工作得很好。我不明白为什么JdbcTemplate令人反感。你不会说“不起作用”是什么样子的。我认为bean工厂返回了一个对象,但我没有看到强制转换。编译器没有为此标记你吗?让我直截了当地说,我没有使用jdbc,我只是举一个例子,说明autowring在我的例子中不起作用。如果它提供了任何线索,我是在应用程序而不是web上工作。在简单的情况下,没有例外。如果说连接一个bean并试图从该bean调用一个方法,将抛出Nullpointer异常,因为DI不工作