Spring之注解方式实例化Java类
我们知道一个<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类相关推荐
- (转)使用Spring的注解方式实现AOP入门
http://blog.csdn.net/yerenyuan_pku/article/details/52865330 首先在Eclipse中新建一个普通的Java Project,名称为spring ...
- 第五章 Spring进阶-注解方式实现AOP(1)
<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" /> 徒弟:师傅,我 ...
- Spring 使用注解方式进行事物管理
Spring 使用注解方式进行事物管理 大家在使用spring的注解式事务管理时,对事务的传播行为和隔离级别可能有点不知所措,下边就详细的介绍下以备方便查阅. 事物注解方式: @Transaction ...
- (转)使用Spring的注解方式实现AOP的细节
http://blog.csdn.net/yerenyuan_pku/article/details/52879669 前面我们已经入门使用Spring的注解方式实现AOP了,现在我们再来学习使用Sp ...
- Spring 使用注解方式进行事务管理
2019独角兽企业重金招聘Python工程师标准>>> 大家在使用spring的注解式事务管理时,对事务的传播行为和隔离级别可能有点不知所措,下边就详细的介绍下以备方便查阅. 事物注 ...
- Spring AOP注解方式实现日志管理
文章目录 自定义注解 BussLog BussLogAspect 前言:使用注解方式实现日志管理,可以使我们的程序变的清晰.简单,不和很多业务代码混在一起. 实现思路大致分为四点 设计日志表和日志类, ...
- Spring AOP注解方式实现
简介 上文已经提到了Spring AOP的概念以及简单的静态代理.动态代理简单示例,链接地址:https://www.cnblogs.com/chenzhaoren/p/9959596.html 本文 ...
- java编译器jdk版本_以编程方式确定Java类的JDK编译版本
java编译器jdk版本 当需要确定使用哪个JDK版本来编译特定的Java .class文件时, 通常使用的方法是使用javap并在javap输出中查找列出的"主要版本". 我在我 ...
- 以编程方式确定Java类的JDK编译版本
当需要确定使用哪个JDK版本来编译特定的Java .class文件时, 通常使用的方法是使用javap并在javap输出中查找列出的"主要版本". 我在博客文章Autoboxing ...
最新文章
- hdl四位二进制计数器_四位二进制计数器这样接成十进制计数器
- 全球自动驾驶汽车发展指数哪家强?美德领衔,中国第七
- duilib进阶教程 -- 实现List排序
- SpringCloud Eureka初体验
- sequence mysql jpa_Java-JPA-生成器-@SequenceGen
- 题目:社区人员登记管理系统(有源码链接免费下载)
- 在C语言中如何高效地复制和连接字符串?
- 爬虫之煎蛋网妹子图 大爬哦
- Gambit 4.运行时选项
- PostgreSQL与中文社区
- 互联通对接阿里云专线开通手册
- 2D美术3——PS笔刷延迟、图层卡顿等解决办法(百试百灵)
- iMazing2.14.6Mac最新版iOS苹果设备管理器
- 适合所有手环的app_Redmi Watch体验:手环终结者?
- Linux 根目录结构,英文全称、文件夹作用
- 九九乘法表(99)详解
- 银行家算法—简单易懂解题思路
- 深入理解美团 Leaf 发号器开源方案
- Cefsharp抓取拼多多每日关键词
- three.js之高级几何体-使用二元操作组合网格(vue中使用three.js38)
热门文章
- [转]ASP.NET1.0升级ASP.NET2.0问题总结
- pip install lxml失败原因
- vue 项目配置sass
- ipython --pandas
- vijos 1006 晴天小猪历险记之Hill——数字三角形的终极变化
- ThinkPHP5.0中Redis的使用和封装(原创)
- 开源图形库 FreeImage
- C# 写Windows服务
- redis源码分析--zslRandomLevel位运算解析
- 一种不会导致资源泄露的“终止”线程的方法