美文网首页
Spring注解之@Component详细解析

Spring注解之@Component详细解析

作者: MoonRiver_a1cc | 来源:发表于2020-01-06 16:35 被阅读0次

    @Component是一个元注解,意思是可以注解其他类注解,如@Controller @Service @Repository @Aspect。官方的原话是:带此注解的类看为组件,当使用基于注解的配置和类路径扫描的时候,这些类就会被实例化。其他类级别的注解也可以被认定为是一种特殊类型的组件,比如@Repository @Aspect。所以,@Component可以注解其他类注解。

    注意:不指定bean的名称,默认为类名首字母小写,有时候忘记了报错找不到bean还想半天

    源代码:

    @Target(ElementType.TYPE)
    @Retention(RetentionPolicy.RUNTIME)
    @Documented
    @Indexed
    public @interface Component {
    
        /**
         *该值可能表明建议使用逻辑组件名称,
         *如果自动检测到组件,则将其转换为Spring bean。
         *@返回建议的组件名称(如果有的话)(否则返回空字符串)
         */
        String value() default "";
    
    }
    

    案例:
    a.不指定bean的名称,默认为类名首字母小写ocryyzd

    /**
     * @Author dx
     * @Date 2020/1/5 0:34
     **/
    @Component
    public class Ocryyzd implements OcrDotrade {
        @Override
        public void dotrade() {
    
            System.out.println("营业执照识别");
    
        }
    }
    

    获取bean方式:

    public class SpringbootstudyApplication {
    
        @Autowired
        private BeanFactory beanFactory;
    
        public static void main(String[] args) {
            SpringApplication.run(SpringbootstudyApplication.class, args);
        }
    
        @RequestMapping("/")
        @GetMapping
        String index(){
            OcrDotrade ocryyzd1 = (OcrDotrade) beanFactory.getBean("ocryyzd");
            ocryyzd1.dotrade();
        }
    }
    

    b.指定bean的名称

    /**
     * @Author dx
     * @Date 2020/1/5 0:34
     **/
    @Component("Ocryyzd")
    public class Ocryyzd implements OcrDotrade {
        @Override
        public void dotrade() {
            System.out.println("营业执照识别");
        }
    }
    
    

    获取bean方式:

    public class SpringbootstudyApplication {
    
        @Autowired
        private BeanFactory beanFactory;
    
        public static void main(String[] args) {
            SpringApplication.run(SpringbootstudyApplication.class, args);
        }
    
        @RequestMapping("/")
        @GetMapping
        String index(){
            OcrDotrade ocryyzd1 = (OcrDotrade) beanFactory.getBean("Ocryyzd");
            ocryyzd1.dotrade();
        }
    }
    

    相关文章

      网友评论

          本文标题:Spring注解之@Component详细解析

          本文链接:https://www.haomeiwen.com/subject/uaukactx.html