美文网首页
Spring中基于注解的DI

Spring中基于注解的DI

作者: 叫我不矜持 | 来源:发表于2019-02-13 19:52 被阅读9次
    一.环境搭建

    1.在项目中添加Spring AOP相关的JAR文件以及xsd约束文件(导入aop包、添加context约束头信息)

    2.由于是基于注解的DI,所以无需再Spring配置文件中进行节点配置,只需配置包扫描器即可!

    <!--配置包扫描器-->
    <context:component-scan base-package="com.bjsxt.pojo"></context:component-scan>
    

    3.tips:在spring的api中查找xmlns:context查看示例

    二.常用注解

    @Component、@Value、@Scope、@Resource、@Autowired

    三.注解解析

    1.@Component
    表明当前类是Spring容器中的组件,它的生命周期和对象之间的依赖关系交给Spring容器去管理

    与@Component具有相同功能的还有其他三个注解 
    @Repository:该注解添加在DAO实现类上 
    @Service:该注解添加在Service实现类上 
    @Controller:该注解添加在Controller类上 
    

    2.@Value
    普通属性的注入(基本数据类型及其对应的包装类,String类型)

    3.@Scope
    标志一个对象的作用域(默认singleton)

    4.@Autowired
    用于域属性的注入(也叫关联属性或者对象属性),byType的自动注入方式

    5.@Resource
    用于域属性的注入,jdk提供的注入方式,首先是byName方式的注入,然后是byType方式的注入

    6.@Qualifier
    配合@Autowired共同使用,可以达到根据名称(byName)自动注入

    四.代码示例
    @Scope("singleton")
    @Component("star")
    /** 
    * 与@Component具有相同功能的还有其他三个注解 
    * @Repository:该注解添加在DAO实现类上 
    * @Service:该注解添加在Service实现类上 
    * @Controller:该注解添加在Controller类上 
    */ 
    public class Star {
        @Value("胡歌")
        private String name;
        @Value("32")
        private int age;
        @Value("99.9")
        private double score;
        //方式一
        /*@Resource() //byName自动注入,然后再根据Type进行自动注入*/    
        
        //方式二
        //@Autowired() //byType自动注入
        
        //方式三  @Autowired 和 @Qualifier 联合使用 根据名称自动注入
        @Autowired()
        @Qualifier("partner")
        private Partner partner;
        
        public Partner getPartner() {
            return partner;
        }
        public void setPartner(Partner partner) {
            this.partner = partner;
        }
        public Star(String name, int age, double score, Partner partner) {
            super();
            this.name = name;
            this.age = age;
            this.score = score;
            this.partner = partner;
        }
        public Star() {
            super();
        }
        public String getName() {
            return name;
        }
        public void setName(String name) {
            this.name = name;
        }
        public int getAge() {
            return age;
        }
        public void setAge(int age) {
            this.age = age;
        }
        public double getScore() {
            return score;
        }
        public void setScore(double score) {
            this.score = score;
        }
        @Override
        public String toString() {
            return "Star [name=" + name + ", age=" + age + ", score=" + score + ", partner=" + partner + "]";
        }
    }
    

    相关文章

      网友评论

          本文标题:Spring中基于注解的DI

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