Spring can't resolve @Bean dependency for List bean?

A simple testing class showing my problem:

import java.util.ArrayList;
import java.util.List;

import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.test.context.ContextConfiguration;
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;

@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(classes = SpringTest.OptionalConfiguration.class)
public class SpringTest {
    static class Item extends Object {}

    @Configuration
    static class OptionalConfiguration {
        @Bean
        List<Item> someString() {
            return new ArrayList<>();
        }
        @Bean
        Object foo(List<Item> obj) {
            return new Object();
        }
    }

    @Test
    public void testThis() {

    }
}

Result:

org.springframework.beans.factory.NoSuchBeanDefinitionException: No qualification bean of type [SpringTest $ Item] found for dependency [SpringTest $ Item collection]: at least 1 bean is expected to qualify as an autwire candidate for this dependency. annotation dependency: {}

If I change from List<Item>to Item, everything works.

Is it for design? Any workarounds? I need to provide Listelements - sometimes empty, sometimes with elements, depending on the configuration of the runtime.

, bean (s) Item, autowiring List<Item>. , bean List<Item> ( , List).

Spring 4.2.4.

+4
1

Spring 4.3+.

, 4.3, / Spring s @Autowired [ @Bean], @Bean . , .

4.3, Spring

@Bean
Object foo(List<Item> obj) {

List , Item beans, ApplicationContext. ApplicationContext , Spring .

.

@Bean
Object foo() {
    List<Item> someString = someString();
    return new Object();
}

bean factory someString.

@Resource(name = "someString")
private List<Item> items;
// and access 'items' wherever you need it in the configuration 

,

, , , @Autowired, bean @Qualifier. JSR-250 @Resource-, , . @Autowired : beans String . " " beans, .

+8

Source: https://habr.com/ru/post/1665904/


All Articles