Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/363.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
SpringJavaConfig-NoSuchBeanDefinitionException:没有类型为的唯一bean_Java_Spring - Fatal编程技术网

SpringJavaConfig-NoSuchBeanDefinitionException:没有类型为的唯一bean

SpringJavaConfig-NoSuchBeanDefinitionException:没有类型为的唯一bean,java,spring,Java,Spring,我想用一个小测试用例测试Spring@Configuration,但它会抛出错误 org.springframework.beans.factory.NoSuchBeanDefinitionException:未定义类型为[com.mycompany.MavenVaadinSpring.service.UserManager]的唯一bean: 我做错了什么?我的代码如下: AppConfigTest.java: public class AppConfigTest { public s

我想用一个小测试用例测试Spring
@Configuration
,但它会抛出错误

org.springframework.beans.factory.NoSuchBeanDefinitionException:未定义类型为[com.mycompany.MavenVaadinSpring.service.UserManager]的唯一bean:

我做错了什么?我的代码如下:

AppConfigTest.java

public class AppConfigTest {

    public static void main(String[] args) {
        JavaConfigApplicationContext context = new JavaConfigApplicationContext(AppConfig.class);
        UserManager userManager = context.getBean(UserManager.class);
    }
}
AppConfig.java

@Configuration
@ResourceBundles("classpath:jdbc-mysql")
public abstract class AppConfig {

    @Bean
    public BasicDataSource dataSource() {
        BasicDataSource basicDataSource = new BasicDataSource();        
        return basicDataSource;
    }

    @Bean
    public UserDao userDao() {
        UserDao UDI = new UserDaoImpl();
        UDI.setDataSource(dataSource());

        return UDI;
    }

    @Bean
    public UserManager userManager() {
        UserManager UM = new UserManagerImpl();
        UM.setUserDao(userDao());

        return UM;
    }

    abstract @ExternalValue("jdbc.url") String url();
    abstract @ExternalValue("jdbc.username") String username();
    abstract @ExternalValue("jdbc.password") String password();
    abstract @ExternalValue("jdbc.jdbc.driverClassName") String classname();    
}
堆栈跟踪:

Exception in thread "main"   org.springframework.beans.factory.NoSuchBeanDefinitionException: No unique bean of type   [com.mycompany.MavenVaadinSpring.service.UserManager] is defined: 
at org.springframework.config.java.context.TypeSafeBeanFactoryUtils.getBean(TypeSafeBeanFactoryUtils.java:46)
at org.springframework.config.java.context.JavaConfigApplicationContext.getBean(JavaConfigApplicationContext.java:378)
at com.mycompany.MavenVaadinSpring.AppConfigTest.main(AppConfigTest.java:11)

看起来您在这里使用的是独立的SpringJavaConfig项目(正如.config.java打包和JavaConfigApplicationContext类的使用所证明的)。自Spring3.0中包含该项目以来,该项目不再受支持。包装已更改,JavaConfigApplicationContext现在称为AnnotationConfigApplicationContext。然而,总体编程模型是相同的


针对Spring3的一个版本,给同样的场景一个镜头,看看是否得到同样的结果。如果您需要GA版本,Spring 3.0.6现在可用;如果您可以处理里程碑,请尝试Spring3.1m2,甚至是Spring3.1的夜间快照。您会发现Java配置支持在这些更高版本中得到了显著增强。

你好,Chris,我在您的帖子中遗漏了什么?有一行“AnnotationApplicationContext已弃用”,还有一些关于“Spring2.5的注释驱动注入”的讨论,您在示例中使用了“JavaConfigApplicationContext”。但是我会听你的话,谢谢你的快速回复。我提到的帖子日期是2008年。我在哪里可以找到关于如何操作的最新解释?好的,我知道AppConfig是抽象的。有具体的版本吗?谢谢你改善了我问题的前景