⭐️前面的话⭐️
本篇文章将介绍使用Spring获取已经储存在Spring容器中的对象,注入的方式有三种,分别为属性注入,构造方法注入(目前官方推荐),Setter方法注入(老版本Spring官方推荐)。
📒博客主页:未见花闻的博客主页
🎉欢迎关注🔎点赞👍收藏⭐️留言📝
📌本文由未见花闻原创,CSDN首发!
📆首发时间:🌴2022年7月29日🌴
✉️坚持和努力一定能换来诗与远方!
💭推荐书籍:📚《Spring实战》
💬参考在线编程网站:🌐牛客网🌐力扣
博主的码云gitee,平常博主写的程序代码都在里面。
博主的github,平常博主写的程序代码都在里面。
🍭作者水平很有限,如果发现错误,一定要及时告知作者哦!感谢感谢!
1.前言
前面我们已经介绍了如何使用注解将对象储存到Spring中,你把对象储存到Spring中了,如果你想使用这些对象,还得从Spring中取出来,最开始介绍Spring的时候,已经介绍过使用上下文和Bean工厂来获取对象,本文将介绍使用注解来实现对象的读取。
使用注解可以直接将已经储存的对象取出来,直接赋值到注解所在类的一个属性中,这一个过程也叫做对象的装配或者叫对象的注入。
2.使用注解获取Bean
2.1对象注入的概念
获取 bean 对象也叫做对象装配,就是把对象取出来放到某个类中,有时候也叫对象注入。
对象装配(对象注入)的实现方法以下 3 种:
- 属性注入 ,就是将对象注入到某个类的一个属性当中。
- 构造方法注入 ,就是通过构造方法来将对象注入到类中。
- Setter方法 注入 ,通过SetXXX系列方法将对象注入到类中。
常见有关对象注入的注解有两个,一个是@Autowired,另外一个是@Resource,其中@Autowired支持属性注入,构造方法注入和Setter注入,@Resource支持属性注入和Settter注入,但是不支持构造方法注入。
说到这里,我们来说一说@Autowired与@Resource的区别吧,两者的区别有:
- 前面说的,@Autowired支持属性注入,构造方法注入和Setter注入,@Resource支持属性注入和Settter注入,但是不支持构造方法注入。
- @Autowired是Spring提供的,@Resource是JDK提供的。
- @Resource支持更多的参数设置,如
name
type
等,而@Autowired只支持设置required
参数。
2.2属性注入
属性注入很简单,我们只需要在需要注入对象的属性上加上@Autowired或者@Resource注解就可以了,我们以@Autowired为例。
第一种情况,待注入的同类对象只有一个,这时我们直接使用@Autowired注解就好,不必设置参数,例如我们在UserController
类里面注入UserService
对象。
UserService
类结构:
@Service
public class UserService {
public void sayHi() {
System.out.println("你好! Service");
}
}
属性注入:
@Controller
public class UserController1 {
//属性注入
@Autowired
private UserService service;
public void sayHi() {
service.sayHi();
}
}
然后我们就可以在启动类中,使用上下文对象来获取UserController1
对象,通过执行UserController1
对象的sayHi
方法来间接执行UserService
对象的sayHi
方法,这样我们就不用new
一个UserService
对象了。
public class Main6 {
public