簡體   English   中英

Spring JavaConfig-NoSuchBeanDefinitionException:沒有類型的唯一bean

[英]Spring JavaConfig - NoSuchBeanDefinitionException: No unique bean of type

我想用一個小的測試用例來測試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)

看來您在這里使用的是獨立的spring-javaconfig項目(.config.java包裝和JavaConfigApplicationContext類的使用證明了這一點)。 由於該項目已包含在Spring 3.0中,因此不再受支持。 包裝已更改,並且JavaConfigApplicationContext現在稱為AnnotationConfigApplicationContext。 但是,總體編程模型是相同的。

讓這個場景與Spring 3的發布相吻合,看看是否得到相同的結果。 如果需要GA版本,則可以使用Spring 3.0.6。 如果您可以處理里程碑,請嘗試使用Spring 3.1 M2,甚至是Spring 3.1的夜間快照。 您會發現Java配置支持在這些更高版本中得到了顯着增強。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM