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

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

1   <!--
component:把一个类放入到spring容器中,该类就是一个component
在base-package指定的包及子包下扫描所有的类
-->
<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();
} }

github地址:https://github.com/leechenxiang/maven-spring001-helloworld

Spring 一二事(7) - annotation的更多相关文章

  1. Spring 一二事(8) - annotation 形式的 MVC

    <!-- component:把一个类放入到spring容器中,该类就是一个component 在base-package指定的包及子包下扫描所有的类 --> <context:co ...

  2. Spring 一二事(10) - annotation AOP

    先贴出POM的内容,这个毕竟是用的maven来简单构建的 <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:x ...

  3. Spring 一二事(4) - 单例

    spring bean配置后再默认情况下是单例的,如果需要配置可以选择 prototype, request, session和global session 在配置spring mvc的action时 ...

  4. Spring 一二事(1)

    简单介绍一下spring,一方面带新手入入门,一方面自己也重温一下第一个小工厂先暂时不用maven,下一个会用maven来来配置 jar包只需要一个,spring版本为2.5(暂时为2.5,后续更新, ...

  5. Spring 一二事(9) - xml 形式的 AOP

    AOP在spring中是非常重要的一个 在切面类中,有5种通知类型: aop:before  前置通知 aop:after-returning  后置通知 aop:after  最终通知 aop:af ...

  6. Spring 一二事(5) - 依赖注入

    <!-- 依赖注入的装配过程 --> <bean id="person" class="com.lee.spring007.di.xml.setter. ...

  7. Spring 一二事(3) - 别名

    别名就是可以通过另外一个名字来访问如下,已有bean:helloWorld3,那么定义别名(alias )后,就能使用“abc”来访问 <bean id="helloWorld3&qu ...

  8. Spring 一二事(2)

    静态工厂方法及实例工厂的使用: applicationContext.xml: <!-- factory-method 是指调用静态工厂方法 --> <bean id="h ...

  9. Spring 一二事(6) - IOC MVC 简易搭建

    <bean id="personAction" class="com.lee.spring008.IOC.DI.MVC.PersonAction"> ...

随机推荐

  1. 开源 免费 java CMS - FreeCMS1.9 会员权限管理

    项目地址:http://www.freeteam.cn/ 会员权限管理 管理会员可使用的权限.会员在使用某一特定功能时,如投稿.可依据此会员所在会员组是否有投稿权限来决定会员能否够使用投稿功能. 1. ...

  2. [android错误] Installation error: INSTALL_FAILED_VERSION_DOWNGRA

    错误表现: [2014-06-27 18:19:51 - XXX] Installing XXXX.apk... [2014-06-27 18:20:00 - XXX] Installation er ...

  3. 使用第三方控件DotNetBar来美化程序

    VS的控件确实有点丑陋,需要美化一下.我最先接触的就是DotNetBar,一直用它,一般都还稳定.下面简单地讲解一下使用方法 1. 下载破解版DotNetBar 10版本:http://www.cr1 ...

  4. cmd命令怎么玩

    1.两种进入cmd窗口方式: 1)win+R,出现运行窗口,输入cmd按回车 2)点击开始旁边的搜索文件和程序框按钮(Cortana),输入cmd按回车 2.常用命令        执行运行 comp ...

  5. jdeveloper优化:

    D:\jdevstudio10133\jdev\bin\jdev.conf末尾加上下面的AddVMOption -Dsun.java2d.noddraw=true AddVMOption -Dsun. ...

  6. java手动加载jar

    @RequestMapping("/testJar") public @ResponseBody String exteriorJar(int ys, int csd,int jg ...

  7. glusterFS分布式存储部署流程

    转自:http://bangbangba.blog.51cto.com/3180873/1712061 GlusterFS是一款非常易于使用的分布式文件存储系统,实现了全部标准POSIX接口,并用fu ...

  8. scala class和object,trait的区别

    Scala类 1 2 3 4 5 6 7 8 9 10 11 12 13 class Counter {   private var value = 0 // 必须初始化字段   def increm ...

  9. getsockopt和accept需要注意的两个细节

    1,getsockopt连续调用问题 通常情况下,在一个socket fd上出现错误时,我们会通过 int status; socklen_t slen; getsockopt(fd, SOL_SOC ...

  10. Bugtags 让你的 APP 测试轻松、上线安心

    Bug 管理系统再进化 Bugtags 的创业团队,在过去几年,做了很多方向的尝试——没错,是开发了很多 APP. 每一轮迭代,都会被繁琐的 APP 测试困扰:无休止的截屏上传电脑,无数次的开发与测试 ...