当前位置: 首页 > article >正文

【Spring】获取Bean对象需要哪些注解

8e19eee2be5648b78d93fbff2488137b.png

阿华代码,不是逆风,就是我疯

你们的点赞收藏是我前进最大的动力!!

希望本文内容能够帮助到你!!

目录

一:@Service(服务存储)

1:存储bean的代码

2:读取bean的代码

3:运行结果 

二:@Repository(仓库存储)

1:存储bean的代码

 2:读取bean的代码

3:运行结果 

三:@Component(组件存储)

1:存储bean的代码

2:读取bean的代码

3:运行结果 

​编辑

四:@Configuration(配置存储)

1:存储bean的代码

2:读取bean的代码

3:运行结果 

五:为什么需要这些不同的注解

1:注解的特点

(1)元注解@Component:

(2)源码分析

2:注解分类的优点

3:调用流程


引入:在上一篇文章中,我简单的认识了IoC容器和DI依赖注入,控制反转的基本原理,使用@Controller存储bean对象,以及三种获取bean对象的方式。本篇文章,将继续对bean对象的存储五大注解进行展开

一:@Service(服务存储)

1:存储bean的代码

@Service
public class UserService {
    public void sayHi(String name) {
        System.out.println("Hi," + name);
    }
}

2:读取bean的代码

@SpringBootApplication
public class SpringIocDemoApplication {
    public static void main(String[] args) {
//获取Spring上下⽂对象
        ApplicationContext context =
                SpringApplication.run(SpringIocDemoApplication.class, args);
//从Spring中获取UserService对象
        UserService userService = context.getBean(UserService.class);
//使⽤对象
        userService.sayHi();
    }
}

3:运行结果 

二:@Repository(仓库存储)

1:存储bean的代码

@Repository
public class UserRepository {
    public void sayHi() {
        System.out.println("Hi, UserRepository~");
    }
}

 2:读取bean的代码

@SpringBootApplication
public class SpringIocDemoApplication {
    public static void main(String[] args) {
//获取Spring上下⽂对象
        ApplicationContext context =
                SpringApplication.run(SpringIocDemoApplication.class, args);
//从Spring上下⽂中获取对象
        UserRepository userRepository = context.getBean(UserRepository.class);
//使⽤对象
        userRepository.sayHi();
    }
}

3:运行结果 

三:@Component(组件存储)

1:存储bean的代码

@Component
public class UserComponent {
    public void sayHi() {
        System.out.println("Hi, UserComponent~");
    }
}

2:读取bean的代码

@SpringBootApplication
public class SpringIocDemoApplication {
    public static void main(String[] args) {
//获取Spring上下⽂对象
        ApplicationContext context =
                SpringApplication.run(SpringIocDemoApplication.class, args);
//从Spring上下⽂中获取对象
        UserComponent userComponent = context.getBean(UserComponent.class);
//使⽤对象
        userComponent.sayHi();
    }
}

3:运行结果 

四:@Configuration(配置存储)

1:存储bean的代码

@Configuration
public class UserConfiguration {
    public void sayHi() {
        System.out.println("Hi,UserConfiguration~");
    }
}

2:读取bean的代码

@SpringBootApplicationpublic class SpringIocDemoApplication {
    public static void main(String[] args) {
//获取Spring上下⽂对象
        ApplicationContext context =
                SpringApplication.run(SpringIocDemoApplication.class, args);
//从Spring上下⽂中获取对象
        UserConfiguration userConfiguration =
                context.getBean(UserConfiguration.class);
//使⽤对象
        userConfiguration.sayHi();
    }
}

3:运行结果 

五:为什么需要这些不同的注解

从上面的代码不难看出,这些注解的本质都是一样的,把对象交给Spring来管理,只是名称不同,那么它们各自都有什么特点呢?

1:注解的特点

(1)元注解@Component:

@Component是⼀个元注解,也就是说可以注解其他类注解,以下的这几个注解都是它的衍生注解。

@Controller:控制层。接收请求,对请求进行处理,并返回响应

@Service:业务逻辑层,主要处理具体的业务逻辑

@Repository:数据访问层,也叫持久层。主要负责数据的访问操作

@Configuration:配置层。处理项目中一些配置信息

(2)源码分析

以上的衍生注解⾥⾯都有⼀个注解@Component ,说明它们本⾝就是属于@Component 的"⼦类".

2:注解分类的优点

@Controller , @Service 和@Repository ⽤于更具体的⽤例,在开发过程中,如果你要在业务逻辑层使⽤ @Component 或@Service,显然@Service是更好的选择

⽐如杯⼦有喝⽔杯,刷⽛杯等,但是我们更倾向于在⽇常喝⽔时使⽤⽔杯,洗漱时使⽤刷⽛杯.

这样分类的好处,不仅提高了代码的可读性,而且在处理复杂项目的时候,可以更好的对项目进行分层。就像你不能一口吃个胖子,得有条理有规划的吃。

3:调用流程


http://www.kler.cn/a/448185.html

相关文章:

  • 【Spring事务】深入浅出Spring事务从原理到源码
  • SAP HCM 考勤时间冲突到分 源码分析
  • 【数据安全】如何保证其安全
  • React简单了解
  • 3D视觉[一]3D计算机视觉
  • TCL发布万象分区,再造Mini LED技术天花板
  • 网络安全 | 防火墙的工作原理及配置指南
  • UE5材质系统之PBR材质
  • 天天 AI-241217:今日热点-谷歌版Sora升级4K高清!一句话控制镜头运动,跑分叫板可灵海螺
  • 【Qt笔记】QDockWidget控件详解
  • springboot446数字化农家乐管理平台的设计与实现(论文+源码)_kaic
  • 【泛微表单】流程相关信息修改
  • UVM 验证方法学之interface学习系列文章(十二)virtual interface 终结篇
  • CPU性能优化--函数分组
  • C语言入门指南:从零开始的编程之路
  • ZYNQ初识4(zynq_7010)基于vivado,利用simulator进行仿真调试和波形查看
  • 自动生成元启发式算法:大语言模型在优化领域的新应用
  • 单片机UDP数据透传
  • 【AI】✈️问答页面搭建-内网穿透公网可访问!
  • STM32二刷学习笔记--GPIO
  • HarmonyOS 实践 - 设计模式在代码中的作用
  • More Effective C++之效率Efficiency_中
  • STM32F407ZGT6-UCOSIII笔记10:消息传递--消息队列
  • MMAudio - 自动给视频配音效
  • 利用Python爬虫获取商品历史价格信息:技术与实践
  • H264编解码标准码流分析:I帧、P帧、B帧语法