其它自动装配


使用注解实现自动装配

属性的注入

User 类的 name 属性

// 相当于配置文件中 <bean id="user" class="当前注解的类"/>
@Component
public class User {

    @Value("allen")  //等价于 <property name="name" value="allen"/>
    public String name;

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }
}

衍生注解

@Component有几个衍生注解,可以按照web开发分为另外三层

  • dao【@Repository】
  • service【@Service】
  • controller【@Controller】
  • pojo【@Component】

以上注解,本质一样,都代表将某个类装配到Spring中,装配Bean.

自动装配配置

都是用来自动装配的,都可以放在属性字段上;

@Autowired先通过类型(byType)实现,如果有多个类型,再按照name(byName);

@Resource先通过名字(byName),再通过类型(byType)实现自动装配;

@Autowired 限定名称时需要通过@Qualifier(value=”xxx”)配合使用;

@Nullable,允许属性值为 null 而不报空指针异常。

作用域

// 相当于配置文件中 <bean id="user" class="当前注解的类"/>
@Component
//作用域——原型
@Scope("prototype")
public class User {

    @Value("allen")  //等价于 <property name="name" value="allen"/>
    public String name;

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }
}

小结

xml 与注解:

  • xml更加万能,适用于任何场合,维护简单方便;
  • 注解不是自己类使用不了,维护相对复杂;

xml 与注解最佳实践:

  • xml只用来管理bean(类);
  • 注解只负责属性的注入;

注意:如果让注解生效,必须开启注解配置

<!-- 指定注解扫描包 -->
<context:component-scan base-package="com.allen"/>
<!-- 开启注解支持-->
<context:annotation-config/>

文章作者: Hailong Gao
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 Hailong Gao !
评论
  目录