博客主页:敲代码的布莱恩特
欢迎点赞 收藏 ?留言 欢迎讨论!
本文由 【敲代码的布莱恩特】 原创,首发于 CSDN
由于博主是在学小白一枚,难免会有错误,有任何问题欢迎评论区留言指出,感激不尽!?
精品专栏(不定时更新)【JavaSE】 【Java数据结构】【LeetCode】
文章图片
Spring 更简单的读取和存储对象
- 一、将对象 储存到Spring中
-
- 1. 先创建一个maven项目
- 2. 添加Spring的核心包(引入spring-context和spring-beans框架)maven--->spring
- 3. 配置Spring xml 文件 ---> 配置Spring组件扫描路径(所有需要存储在Spring中的对象都要放在此目录)
- 4. 创建一个普通类,添加main【作用:方便测试】
- 5. 使用注解实现对象储存在Spring框架
-
- 为什么要这么多类注解
- a. 类注解(5大类注解)
-
- @Controller 控制器(对象储存)
- @Service
- @Repository
- @Component
- @Configuration
- Bean对象的使用
- b. 方法注解 @Bean
-
- @Bean重命名
- @Controller/@Service/@Repository/@Component/@Configuration的关系
- 二、Bean的命名规则
-
- Spring 是如何制作出类注解beanName的
- 三、从Spring中获取对象
-
- 1. 属性注入(@Autowired)
- 2. Setter注入(@Autowired)
- 3. 构造函数注入(推荐)(@Autowired)
- 四、注入的关键字有
-
- 1. @Autowired
- 2. @Resource:另一种注入关键字
-
- a. 属性注入
- b. 使用Setter方式注入
- c. 注意:@Resource注解不能使用在构造方法注入上
- 五、@Autowired和@Resource的区别
- 六、同?类型多个 Bean 报错处理
-
- 1. 使用@Resource(name="user1") 定义。
- 2. 使用 @Qualifier 注解定义名称。
- 图解说明@Autowired和@Resource关于注入对象名称的问题
一、将对象 储存到Spring中 1. 先创建一个maven项目
2. 添加Spring的核心包(引入spring-context和spring-beans框架)maven—>spring创建maven就不再赘述了,详情见【Spring创建与使用】篇
文章图片
文章图片
3. 配置Spring xml 文件 —> 配置Spring组件扫描路径(所有需要存储在Spring中的对象都要放在此目录)
文章图片
文章图片
4. 创建一个普通类,添加main【作用:方便测试】
5. 使用注解实现对象储存在Spring框架 想要将对象存储在 Spring 中,有两种注解类型可以实现:
- 类注解:
@Controller
@Service
@Repository
@Component
@Configuration - 方法注解:@Bean
为什么要这么多类注解
【Spring|【Spring】Spring 更简单的读取和存储对象】既然功能是?样的,为什么需要这么多的类注解呢?
这和为什么每个省/市都有??的?牌号是?样的??如陕?的?牌号就是:陕X:XXXXXX,北京的? 牌号:京X:XXXXXX,?样。甚??个省不同的县区也是不同的,?如?安就是,陕A:XXXXX,咸 阳:陕B:XXXXXX,宝鸡,陕C:XXXXXX,?样。这样做的好处除了可以节约号码之外,更重要的作 ?是可以直观的标识?辆?的归属地。那么为什么需要怎么多的类注解也是相同的原因,就是让程序员看到类注解之后,就能直接了解当前类 的?途,?如:
@Controller:表示的是业务逻辑层;
@Servie:服务层;
@Repository:持久层;
@Configuration:配置层。
程序的?程分层,调?流程如下:
文章图片
a. 类注解(5大类注解)
注意事项:
- 读取存入对象的id:默认情况下就是首字母小写
文章图片
- 关于储存目录
文章图片
文章图片
@Service
文章图片
@Repository
文章图片
@Component
文章图片
@Configuration
文章图片
Bean对象的使用
用一个main方法使用
文章图片
b. 方法注解 @Bean
使用方法注解@Bean将对象储存到Spring
文章图片
@Bean重命名
文章图片
@Controller/@Service/@Repository/@Component/@Configuration的关系
其实这些注解里面都有?个注解 @Component,说明它们本身就是属于@Component 的“子类”
文章图片
二、Bean的命名规则
- 首字母和第二个字母都非大写,首字母小写来获取Bean
- 如果首字母和第二个字母都是大写,那么直接使用原Bean名来获取Bean
文章图片
三、从Spring中获取对象 1. 属性注入(@Autowired)
文章图片
2. Setter注入(@Autowired)
文章图片
文章图片
3. 构造函数注入(推荐)(@Autowired)
文章图片
注意事项1:
如果当前类里面只有一个构造方法,那么@Autowired
注解是可以被省略的(这点和Setter注入是不同的)文章图片
注意事项2:
如果当前类中存在一个以上的构造方法,那么@Autowired
注解不能被省略四、注入的关键字有 1. @Autowired
使用请看上边
2. @Resource:另一种注入关键字 使用
@Resource
注解注入它的用法和@Autowired类似
a. 属性注入
文章图片
b. 使用Setter方式注入
文章图片
c. 注意:@Resource注解不能使用在构造方法注入上
文章图片
五、@Autowired和@Resource的区别
- 1、
出身不同:
@Autowired 来自于 Spring,而 @Resource 来?于 JDK 的注解; - 2、
作用范围不同:
使用@Autowired可以进行属性注入、Setter注入、构造器注入 ;而@Resource只能进行属性注入和Setter注入。 - 3、
功能不同:
@Resource可以配合更多的属性进行使用,而@Autowired支持的属性较少,比如使用@Resource可以配合name属性进行使用,从而完成对象的别名注入。
1. 使用@Resource(name=“user1”) 定义。
@Controller
class UserController4 {
// 注?
@Resource(name = "user1")
private User user;
public User getUser() {
return user;
}
}
2. 使用 @Qualifier 注解定义名称。
@Controller
public class UserController5 {
// 注?
@Autowired
@Qualifier(value = "https://www.it610.com/article/user2")
private User user;
public User getUser() {
return user;
}
}
图解说明@Autowired和@Resource关于注入对象名称的问题
文章图片
推荐阅读
- JavaEE|Spring 创建和使用
- Spring|Spring~Spring的创建和使用(如何将对象储存到Spring、如何将对象从Spring中读取出来)
- springmvc|SpringMVC注解版 --PK-- xml版入门案例
- 大数据课设&毕设|大数据接私活200元,做个简易的HDFS浏览器(一)
- 笔记|VUE详解
- 如何向Spring IOC 容器 动态注册bean
- 安装教程|Linux-安装Redis(详细教程)
- 基于Web的酒店客房管理系统的设计与实现
- spring|Spring Cloud构建分布式微服务架构 - 企业分布式微服务云架构构建