为了账号安全,请及时绑定邮箱和手机立即绑定

Spring 一二事(7) - annotation

标签:
Java

之前的文章大多都是一带而过,一方面比较简单,一方面不是用的注解形式

在企业开发中,主要还是使用的注解来进行开发的

1   <!-- 
2            component:把一个类放入到spring容器中,该类就是一个component
3            在base-package指定的包及子包下扫描所有的类
4     -->
5     <context:component-scan base-package="com.lee.spring011.scan"></context:component-scan>

主要还是用 @Resource,另外2个不常用

package com.lee.spring010.DI.annotation;

import javax.annotation.Resource;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Qualifier;

public class Person {

    @Resource
//    @Resource(name="studentA")
//    @Autowired 纯粹按照类型进行匹配
//    @Qualifier("studentA")
    private Student studentA;

//    public Student getStudentA() {
//        return studentA;
//    }

    public void tell() {
        studentA.sayHello();
    }

}
package com.lee.spring010.DI.annotation;

public class Student {

    public void sayHello() {
        System.out.println("Hello! I am a student...nathan!");
    }

}

测试:

package com.lee.spring010.DI.annotation;

import org.junit.Test;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;

public class AnnotationTest {

    /**
     * 原理
     *    1、当启动spring容器的时候,创建两个对象
     *    2、当spring容器解析到
     *             <context:annotation-config></context:annotation-config>
     *        spring容器会在spring容器管理的bean的范围内查找这些类的属性上面是否加了@Resource注解
     *    3、spring解析@Resource注解的name属性
     *            如果name属性为""
     *              说明该注解根本没有写name属性
     *              spring容器会得到该注解所在的属性的名称和spring容器中的id做匹配,如果匹配成功,则赋值
     *                                                               如果匹配不成功,则按照类型进行匹配
     *          如果name属性的值不为""
     *               则按照name属性的值和spring的id做匹配,如果匹配成功,则赋值,不成功,则报错
     *   说明:
     *       注解只能用于引用类型
     *       注解写法比较简单,但是效率比较低
     *       xml写法比较复杂,但是效率比较高
     */
    @Test
    public void testPerson() {
        ApplicationContext context = new ClassPathXmlApplicationContext("applicationContext.xml");
        Person personA = (Person)context.getBean("personA");
//        personA.getStudentA().sayHello();
        personA.tell();
    }

}
点击查看更多内容
“小礼物走一走,来慕课关注我”
赞赏支持
风间影月说 去围观
创业公司技术总监, 10年+开发和技术管理经验。SUN认证SCJP、PMP、MCP认证。主要从事后端技术和架构领域,有丰富的电商平台与物流平台核心系统的架构设计和开发经验。
评论

作者其他优质文章

正在加载中
全栈工程师
手记
粉丝
1.2万
获赞与收藏
904

关注作者,订阅最新文章

阅读免费教程

感谢您的支持,我会继续努力的~
扫码打赏,你说多少就多少
赞赏金额会直接到老师账户
支付方式
打开微信扫一扫,即可进行扫码打赏哦
今天注册有机会得

100积分直接送

付费专栏免费学

大额优惠券免费领

立即参与 放弃机会
意见反馈 帮助中心 APP下载
官方微信

举报

0/150
提交
取消