Spring更简单的注册和注入对象

前言:经过前面的学习我们已经可以实现基本的Spring读取和存储对象的操作,但是操作过于复杂,所以接下来我们更进一步,学习更加简单的操作Bean对象的方法

在Spring中想要更加简单的存储和读取对象的核心是使用注解

目录

1、存储Bean对象

1.1 前置工作:配置扫描路径(重要)

1.2 添加注解存储Bean对象

1.2.1 类注解

1.2.2 方法注解

1.3  为什么要这么多类注解

1.4 类注解之间的关系

2、注入Bean对象(获取对象)

2.1 属性注入

2.2 Setter 注入

2.3 构造方法注入

2.4 @Resource 注入


1、存储Bean对象

1.1 前置工作:配置扫描路径(重要)

想要将Bean添加到Spring中,我们需要配置一下存储对象的扫描路径,只有在被配置的包下的所有的类,添加了注解才能正确地存储到Spring中

1.2 添加注解存储Bean对象

想要将Bean对象存储到Spring中,有两种注解类型可以实现:

① 类注解:@Controller(控制器)、@Service(服务)、@Repository(仓库)、@Component(组件)、@Configuration(配置)

② 方法注解:@Bean 

1.2.1 类注解

 注意事项:

①:即使在spring中配置文件中配置了bean的扫描路径,但是 五大 类注解是不能省略的。

②:即使加了 五大 类注解,但类没有放到spring配置的bean路径下,那么也是不能将对象存储到spring容器中的。

1.2.2 方法注解

 方法注解,顾名思义将方法的返回的对象存储到spring中,在Spring框架设计中,方法注解@Bean要配合类注解才能将对象正常的存储到Spring容器中。

关于类注解的bean 的名称规则:通常情况下是小驼峰(将类名首字母小写)就可以获得bean对象

另外也可以用Bean注解的一个name属性对Bean进行命名,直接通过name获取。

1.3  为什么要这么多类注解

虽然五大类注解的功能是一样的,但是还是有必要搞这么多类注解的,因为这涉及到软件设计分层,让程序猿看到类注解之后,就直接了解了当前类的用途:

 配置层:存放所有配置信息

控制器层:和前端打交道,验证前端的有效性

服务层:验证完前端后,调用相应的功能接口

数据持久层:和数据打交道,执行具体的CRUD操作。

1.4 类注解之间的关系

@Controller、@Service、@Repository、@Configuration 它们都是依靠@Component实现的,因此可以说@Component是其他4个类注解的父类。

2、注入Bean对象(获取对象)

2.1 属性注入

2.2 Setter 注入

2.3 构造方法注入

 注意事项:

如果当前类只有一个构造方法,那么@Autowired 可以缺省,但是如果当前方法中存在多个构造方法,注解是不能省略的。

属性注入、构造方法注入、Setter注入的区别是什么?

- 属性注入:的写法最简单,也最简洁。缺点是不通用,它只适合于IoC框架,非IoC框架会提示空指针异常。

-Setter 注入:Spring 早期版本推荐的注入方式,它的通用性不如构造方法注入。

-构造方法注入:缺点是可能存在传递多个参数来实现构造方法的初始化,会导致代码臃肿;优点是通用性更好,并且它能保证在用注入对象之前,此对象一定是存在的。Spring后期版本官方推荐的注入方式。

2.4 @Resource 注入

是JDK提供的实现,支持属性注入和Setter注入

@Autowired 和 @Resource 的区别是什么?

        ①出身不同:@Autowired 来自于Spring的实现,而@Resource 来自于JDK

        ②支持的参数设置不同:@Autowired 只支持required 设置,而@Resource 支持很多参数设置

        ③支持的注入类型不同:@Autowired 支持属性、构造方法、Setter注入,而@Resource只支持属性和Setter注入

 一个类型被注册到Spring多次,在另一个类中进行注入时,会报错,此时解决办法:

①使用正确的 bean name 来获取

②使用@Resource 设置 name属性 @Resource(name="user2")

③使用@Autowired + @Qualifier

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值