我们知道一个<bean></bean>就代表一个对象,如果想创建多个对象,就要使用多个<bean></bean>,所以这里有个简便的方法:

<context:component-scan base-package="com.jd"></context:component-scan>

意思是Spring IOC容器扫描com.jd下所有子包内的Java类,如果该类被@Controller(用于控制层,例如servlet)、@Service(用于service层)、@Repository(用于DAO层)、@Component(基本注解)修饰,则使用无参构造方法创建对象!


当启动Tomcat时,先执行静态代码块,再执行非静态代码块,然后执行构造方法,最后才创建对象以及执行其他代码。所以:

当执行完上述代码后的结果是:

注意:使用context:component-scan标签需要添加spring-aop-4.3.10.RELEASE.jar包


还有另一个注解是@Autowired:

当Spring创建Student对象时,成员变量有@Autowired修饰的,则Spring自动从IoC容器中获取一个该类型的对象并进行赋值

例子:


其中的<bean name="date" class="java.util.Date"></bean>执行后会创建Date对象,但当<context:component-scan base-package="com.jd"></context:component-scan>执行后也会创建对象,但又不能创建两个Date对象,所以使用@Autowired后,Spring就会自动从IoC容器中获取一个Date类型的对象并进行赋值。
      检验一下:

结果就是:

但是当xml文件里没有<bean name="date" class="java.util.Date"></bean>,只有<context:component-scan base-package="com.jd"></context:component-scan>时,成员变量private Date date;依旧有@Autowired修饰,则就会报错,因为IoC容器里没有Date类型的对象。所以需要在@Autowired后面再加上(required = false),即@Autowired(required = false),此时就不会报错了,即IoC容器里有时就直接拿过来进行赋值,没有时就自动创建对象

Spring之注解方式实例化Java类相关推荐

  1. (转)使用Spring的注解方式实现AOP入门

    http://blog.csdn.net/yerenyuan_pku/article/details/52865330 首先在Eclipse中新建一个普通的Java Project,名称为spring ...

  2. 第五章 Spring进阶-注解方式实现AOP(1)

    <?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" /> 徒弟:师傅,我 ...

  3. Spring 使用注解方式进行事物管理

    Spring 使用注解方式进行事物管理 大家在使用spring的注解式事务管理时,对事务的传播行为和隔离级别可能有点不知所措,下边就详细的介绍下以备方便查阅. 事物注解方式: @Transaction ...

  4. (转)使用Spring的注解方式实现AOP的细节

    http://blog.csdn.net/yerenyuan_pku/article/details/52879669 前面我们已经入门使用Spring的注解方式实现AOP了,现在我们再来学习使用Sp ...

  5. Spring 使用注解方式进行事务管理

    2019独角兽企业重金招聘Python工程师标准>>> 大家在使用spring的注解式事务管理时,对事务的传播行为和隔离级别可能有点不知所措,下边就详细的介绍下以备方便查阅. 事物注 ...

  6. Spring AOP注解方式实现日志管理

    文章目录 自定义注解 BussLog BussLogAspect 前言:使用注解方式实现日志管理,可以使我们的程序变的清晰.简单,不和很多业务代码混在一起. 实现思路大致分为四点 设计日志表和日志类, ...

  7. Spring AOP注解方式实现

    简介 上文已经提到了Spring AOP的概念以及简单的静态代理.动态代理简单示例,链接地址:https://www.cnblogs.com/chenzhaoren/p/9959596.html 本文 ...

  8. java编译器jdk版本_以编程方式确定Java类的JDK编译版本

    java编译器jdk版本 当需要确定使用哪个JDK版本来编译特定的Java .class文件时, 通常使用的方法是使用javap并在javap输出中查找列出的"主要版本". 我在我 ...

  9. 以编程方式确定Java类的JDK编译版本

    当需要确定使用哪个JDK版本来编译特定的Java .class文件时, 通常使用的方法是使用javap并在javap输出中查找列出的"主要版本". 我在博客文章Autoboxing ...

最新文章

  1. hdl四位二进制计数器_四位二进制计数器这样接成十进制计数器
  2. 全球自动驾驶汽车发展指数哪家强?美德领衔,中国第七
  3. duilib进阶教程 -- 实现List排序
  4. SpringCloud Eureka初体验
  5. sequence mysql jpa_Java-JPA-生成器-@SequenceGen
  6. 题目:社区人员登记管理系统(有源码链接免费下载)
  7. 在C语言中如何高效地复制和连接字符串?
  8. 爬虫之煎蛋网妹子图 大爬哦
  9. Gambit 4.运行时选项
  10. PostgreSQL与中文社区
  11. 互联通对接阿里云专线开通手册
  12. 2D美术3——PS笔刷延迟、图层卡顿等解决办法(百试百灵)
  13. iMazing2.14.6Mac最新版iOS苹果设备管理器
  14. 适合所有手环的app_Redmi Watch体验:手环终结者?
  15. Linux 根目录结构,英文全称、文件夹作用
  16. 九九乘法表(99)详解
  17. 银行家算法—简单易懂解题思路
  18. 深入理解美团 Leaf 发号器开源方案
  19. Cefsharp抓取拼多多每日关键词
  20. three.js之高级几何体-使用二元操作组合网格(vue中使用three.js38)

热门文章

  1. [转]ASP.NET1.0升级ASP.NET2.0问题总结
  2. pip install lxml失败原因
  3. vue 项目配置sass
  4. ipython --pandas
  5. vijos 1006 晴天小猪历险记之Hill——数字三角形的终极变化
  6. ThinkPHP5.0中Redis的使用和封装(原创)
  7. 开源图形库 FreeImage
  8. C# 写Windows服务
  9. redis源码分析--zslRandomLevel位运算解析
  10. 一种不会导致资源泄露的“终止”线程的方法