Primavera - la creación de frijol de la colección o mapa

Centos :

Hace algún tiempo leí sobre la creación de los granos en la primavera y no es una excepción en la creación de frijol para las colecciones y mapas. Me refiero a crear un frijol para la colección o mapa, que se necesita para crear una clase contenedora con, por ejemplo, una lista como un campo de esta clase

public class CollectionBean {

  private List<String> someList;

}

y luego se puede utilizar en la inyección de dependencia. Me pregunto por qué no puede ser inyecte sin clase de contenedor?

Delgado :

Puede crear absolutamente granos que son colecciones:

public class CollectionsBean {

    @Autowired
    private List<String> nameList;

    public void printNameList() {
        System.out.println(nameList);
    }
}

@Configuration
public class CollectionConfig {

    @Bean
    public CollectionsBean getCollectionsBean() {
        return new CollectionsBean();
    }

    @Bean
    public List<String> nameList() {
        return Arrays.asList("John", "Adam", "Harry");
    }
}

¿Cuál podría ser la causa de confusión es que Java cae por la parte genérica de un tipo en la compilación. Así que la primavera no puede mirar un objeto en tiempo de ejecución y saber si se trata de un List<String>o una List<Integer>- a Java y primavera, en tiempo de ejecución, que es sólo una List.

Esto significa que autowiring basado en el tipo no va a funcionar, cuando hay más de un tipo de frijol List.

Una forma de evitar esto es crear una clase contenedora, como lo han hecho. Otra forma es utilizar una de las muchas otras maneras de eliminar la ambigüedad autowiring - por ejemplo, por su nombre.

Supongo que te gusta

Origin http://43.154.161.224:23101/article/api/json?id=232359&siteId=1
Recomendado
Clasificación