基于注解的DI依赖注入

基于注解的DI注入是目前项目中最常使用到的,使用起来也是最方便的 ,大大降低了我们开发人员对象的管理难度, 对于做javaEE开发的web项目而言,效果非常的明显
在这里插入图片描述
context:component-scan 标签是扫描包结构的,容器启动会扫描指定包和其子包下的的注解,这个包的可以具体指定,也可以指定一个范围比较大的顶级包,但是不建议指定范围太大的包,这样大大降低spring管理对象的性能,在这里插入图片描述
需要在类上添加Component 注解, 该注解的作用可以简单理解为将该Bean交由Spring容器来管理
【Component】不指定value属性,Bean的id 是类名首字母小写
此外: Spring还提供了另外三个注解,都是Component的细化 ,@Controller ,@service , @repository
分别对应于项目的控制层,业务层和框架持久层,

那么这是基于DI注解注入的方式来属性对象的创建,如何使用DI注解实现给对象的属性赋值呢?
在属性上添加@value(“xxx”)
ByType方式的自动注入
在这里插入图片描述
在这里插入图片描述
ByName方式的自动注入

@Component("myStudent")
public class Student{
	@value
	private string name;
	@value
	private int age;
	@autowired
	@Qualifier("mySchool")
	private School school;
}
@Componet("mySchool")
public class School{
	@value()
	private ... ;
	@value()
	private ...  ;
}
//很明显通过ByName的方式导入比ByType看起来复杂一点,
//实际项目中也大多使用ByType来实现DI注入完成属性的赋值,
//而且在实际项目开发中禁止使用ByName和ByType同时使用的情况

此外JDK也提供了一个注解来完成属性的赋值,@Resource,要求JDK必须是1.6以上的版本

@Component("myStudent")
public class Student {
	...
    @Resource(name="mySchool")//默认使用byName
    private School school;
    ...
    }
 @Component("mySchool")
 public class School{
 	@value("清华大学")
	private  String Name;
	...
}

这种方式也是很常用的

那么注解的方式和XML文件这两种常见对象完成属性的赋值有没有什么缺点呢?
注解优点是:
⚫ 方便
⚫ 直观
⚫ 高效(代码少,没有配置文件的书写那么复杂)。
其弊端也显而易见:以硬编码的方式写入到 Java 代码中,修改是需要重新编译代码的。

XML 方式优点是:
⚫ 配置和代码是分离的
⚫ 在 xml 中做修改,无需编译代码,只需重启服务器即可将新的配置加载。
xml 的缺点是:编写麻烦,效率低,大型项目过于复杂。

我们项目中使用Spring的出发点还是解耦合,如果今天有个人问你你不用框架能不能做项目 你应该说能,但是用框架做我要3万,不用框架我要5万,不用项目开发起来太累的,光JDBC数据连接池就要写吐了,你说为了差一个数据库中表的字段你写一大堆。。。。,

以上就是Spring-IOC 控制反转的一些基本知识点,关于IOC的作用,控制反转 :顾名思义就是将对象的控制权由类文件JAVA代码交给我们的Spring容器来进行统一的管理,统一完成对象的创建,属性的赋值、

后面谈谈AOP面向切面编程

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值