栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

Spring基于注解的DI

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Spring基于注解的DI

使用spring提供的注解完成Java对象的创建,属性赋值

@Component注解

@Component 表示创建对象,对象创建到容器中。 作用和相同

属性 value 表示对象名称,也就是bean的id属性值位置 在类的上面 表示创建此类的对象

@Component(value = “myStudent”) 等同于

下面使用@Component注解示例下如何创建对象
1-创建实体类
创建一个实体类并且在类的上面加上此注解

2-添加配置文件applicationContext.xml
配置文件添加组件扫描器

3-测试

测试结果 可以看到 spring调用的是无参构造实例化对象
其他注解的说明

除了@Component注解之外,还有其他三个和@Component功能相同的创建对象的注解

@Repository 放在dao接口的实现类上面,表示创建dao对象,持久层对象,能访问数据库@Service 放在业务层接口的实现类上面,表示创建业务层对象,业务层对象有事务的功能@Controller 放在控制器类的上面,表示创建控制器对象,属于表示层对象

虽然以上四个注解都能创建对象,但是@Repository @Service @Controller有角色说明,表示对象是分层的,对象是属于不同层的,具有额外的功能

使用注解给属性赋值

一般使用@Value注解给属性赋值
简单类型的属性赋值:@Value
@Value有个属性叫value 它的值是简单类型的属性值
这个注解可以放在2个位置
1-放在属性的上面 无需set方法即可赋值(推荐使用)
2-放在set方法的上面(将会调用set方法进行赋值)

使用@Autowired注解自动注入

在学生类中添加一个字段school 然后创建一个school实体类

在school属性上打上@Autowired注解代表此属性开启了自动注入,spring会寻找合适的实例进行注入
School类图

由于我已经在school类中添加了@component注解和@value生成对象和赋值了, 所以配置文件中仅开启扫描即可

配置文件如图

这样的话在spring容器加载对象的时候会把school的对象赋值给student对象中的school属性了,这样就完成了自动注入!
单元测试

控制台打印student

提示 :如果想使用@Autowired注解的ByName 则需要在下面多添加一个注解@Qualifier,值为bean的id

另外 JDK也提供了@Resource注解来给属性自动注入,区别请参见 https://blog.51cto.com/qiangmzsx/1359952
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/759836.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号