• Spring--Spring 注入


    Spring 提供了三种主要的装配机制:

    • 在 XML 中进行显式配置
    • 在 Java 中进行显式配置
    • 隐式的 bean 发现机制和自动装配

    Spring 从两个角度来实现自动化装配:

    • 组件扫描:Spring 会自动发现应用上下文中所创建的 bean
    • 自动装配:Spring 自动满足 bean 之间的依赖

    @Component & @Named

    @Component:表明该类会作为组组件类,并告知 Spring 要为这个类创建 bean。

    @Named:作为 @Component 注解的替代方案,两者之间有一些细微的差异,但是在大多数场景中,他们     可以相互替换的。

    两者可以自行对 bean进行命名。@Component("name"), @Named("name")

    @ComponentScan

    组件扫描默认是不启用的。

    @ComponentScan:如果没有其他配置的话,默认扫描与配置类相同的包。  

    可以设置多个基础包。

      @ComponentScan(basePackages={"package1", "package2", ...})  //类型不安全

      @ComponentScan(basePackageClasses={A.class, B.class, ...})  //这些类所在的包将会作为组件扫描的基础包

    可以在包中创建一个用来进行扫描的空标记接口。通过标记接口的方式,依然能够保持对重构友好的接口引用。

    等价于 xml 中配置:

    1 <context:component-scan base-package="..." />

    @Autowired & @Inject

     @Autowired:自动装配。不仅可以用在构造器上,还能用在属性的 Setter 方法上。

    @Autowired 是 Spring 的特定注解,可以将其替换为 @Inject。

    @Configuration:表明这个类是一个配置类,该类应该包含在 Spring 应用上下文中如何创建 bean 的细节。

    @Bean:告诉 Spring 这个方法将会返回一个对象,该对象要注册为 Spring 应用上下文中的 bean。方法体中包含了最终产生 bean 实例的逻辑。

    默认情况下,bean 的 ID 与带有 @Bean  注解的方法名是一样的。也可以通过 name 属性指定名字。

  • 相关阅读:
    【mysql】添加对emoji的支持
    【mysql】关于innodb中MVCC的一些理解
    【mysql】关于硬件方面的一些优化
    关于php中的spl_autoload_register
    【mysql】高可用集群之MMM
    【mysql】数据库使用的一些规范
    使用sysbench进行压力测试
    【mysql】关于乐观锁
    【linux】spinlock 的实现
    【mysql】关于悲观锁
  • 原文地址:https://www.cnblogs.com/microcat/p/7074751.html
Copyright © 2020-2023  润新知