Spring 各种注解(@)的含义与认识

来源:互联网 发布:许雯的淘宝店 编辑:程序博客网 时间:2024/06/05 11:51

依赖注入,从字面上理解,即是:以注入的方式实现依赖;

Spring 容器负责创建应用程序中的 bean,并通过 DI(依赖注入)来协调这些对象之间的关系。当描述 bean 如何进行装配(autowired)时,Spring 具有强大的灵活性,提供了以下三种主要的装配机制:

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

  • 组件扫描(Component scanning):Spring 会自动发现应用上下文中所创建的 bean;

    • 使用 @Component 注解(annotation)
    • 默认是不扫描的;
  • 自动装配(autowiring):Spring 自动满足 bean 之间的依赖;

1. @Bean

  • @Bean 注解将会告诉 Spring 其修饰的方法将会返回一个对象,该方法要注册为 Spring 应用上下文的 bean。

    @Beanpublic Base getDerived() {    return new Derived();}

    默认情况(default)下,bean 的 ID 与带有 @Bean 注解的方法名保持一致。上述代码中,bean 的名字将会是 getDerived,当然也可以指定其他名字:

    @Bean(name="anotherName")...

2. @Configuration

  • @Configuration, 与 XML 文件描述配置不同,Spring 还支持使用 Java 代码描述配置,这里的 java 类需要被 @Configuration 修饰。

    <?xml ...><bean id="knight" class="....BraveKnight">    <constructor-arg ref="quest" /></bean><bean id="quest" class="...SlayDragonQuest">    <constructor-arg value="#{T(System.out)}" /></bean>

    上述 xml 可简单理解为:

    knight() ⇒ new BraveKnight(quest());quest() ⇒  new SlayDragonQuest(System.out);

    使用 Java 来描述配置:

    @Configurationpublic class KnightConfig {    @Bean    public Knight knight() {        return new BraveKnight(quest());    }    @Bean     public Quest quest() {        return new SlayDragonQuest(System.out);    }}

3. @Component 与 @ComponentScan

  • @Component,由该注解修饰的类,表明该类会作为组件类,并告知 Spring 为这个类创建 bean;
原创粉丝点击