Springコレクションタイプ依存検索


コレクションタイプ依存検索インタフェース-LitableBeanFactory
  • Beanタイプに従って検索
  • 同じタイプのBean名のリストを取得
  • getBeanNamesForType(Class)
  • getBeanNamesForType(ResolvableType)

  • 同じタイプのBeanインスタンスのリストを取得
  • getBeansOfType(Class)およびリロード方法

  • 注釈タイプで検索
  • 寸法タイプBean名リストの取得
  • getBeanNamesForAnnotation

  • 寸法タイプBeanインスタンスリストの取得
  • getBeansWithAnnotation

  • 指定名+寸法タイプBeanインスタンスの取得
  • findAnnotationOnBean



  • SuperRumenz.java/Rumenz.java
    //SuperRumenz.java
    package com.rumenz;
    public class SuperRumenz {
    
        private String key;
        public String getKey() {
            return key;
        }
        public void setKey(String key) {
            this.key = key;
        }
        @Override
        public String toString() {
            return "SuperRumenz{" +
                    "key='" + key + '\'' +
                    '}';
        }
    }
    
    //Rumenz.java
    package com.rumenz;
    public class Rumenz extends SuperRumenz{
        private Integer id;
        private String name;
    
        @Override
        public String toString() {
            return "Rumenz{" +
                    "id=" + id +
                    ", name='" + name + '\'' +
                    "} " + super.toString();
        }
    
        public Integer getId() {
            return id;
        }
        public void setId(Integer id) {
            this.id = id;
        }
        public String getName() {
            return name;
        }
        public void setName(String name) {
            this.name = name;
        }
    }
    

    ケース
    package com.rumenz;
    public class DemoApplication {
    
        public static void main(String[] args) {
             AnnotationConfigApplicationContext ac=new AnnotationConfigApplicationContext();
             ac.register(DemoApplication.class);
             ac.refresh();
             //     (SuperRumenz.class)    Beand   
            Map map = ac.getBeansOfType(SuperRumenz.class);
            map.forEach((k,v)->{
                System.out.println(String.format("k %s v %s",k,v));
            });
            //     (SuperRumenz.class)    Bean   
            String[] beanNames = ac.getBeanNamesForType(SuperRumenz.class);
            Arrays.asList(beanNames).stream().forEach(System.out::println);
    
            //       Bean   
            String[] annotationBeanNames = ac.getBeanNamesForAnnotation(Bean.class);
            Arrays.asList(annotationBeanNames).stream().forEach(System.out::println);
    
    
            //       Bean     
            Map map1 = ac.getBeansWithAnnotation(Bean.class);
    
            map1.forEach((k1,v1)->{
                System.out.println(String.format("k1 %s v1 %s",k1,v1));
            });
            //          Bean   ,    
    
            Bean bean = ac.findAnnotationOnBean("superRumenz", Bean.class);
            if(bean!=null){
                System.out.println(ac.getType("superRumenz"));
            }
            ac.close();
        }
    
        @Bean
        public Rumenz rumenz(){
            Rumenz rumenz = new Rumenz();
            rumenz.setId(123);
            rumenz.setName("    ");
            return rumenz;
        }
        @Bean
        public SuperRumenz superRumenz(){
            SuperRumenz sr = new SuperRumenz();
            sr.setKey("     ");
            return sr;
        }
    }
    

    しゅつりょく
    k rumenz v Rumenz{id=123, name='    '} SuperRumenz{key='null'}
    k superRumenz v SuperRumenz{key='     '}
    rumenz
    superRumenz
    rumenz
    superRumenz
    k1 rumenz v1 Rumenz{id=123, name='    '} SuperRumenz{key='null'}
    k1 superRumenz v1 SuperRumenz{key='     '}
    class com.rumenz.SuperRumenz

    ソース:https://github.com/mifunc/Spr...
    原文:https://rumenz.com/rumenbiji/Spring-Collection-Dependent-Lookup.html