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

简介: @Conntroller,@Service,@Repository,@Component,@Configuration,关于Bean对象的五个常用注解

  image.gif 编辑

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

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

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

目录

一:@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);
    }
}

image.gif

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();
    }
}

image.gif

3:运行结果

image.gif 编辑

二:@Repository(仓库存储)

1:存储bean的代码

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

image.gif

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();
    }
}

image.gif

3:运行结果

image.gif 编辑

三:@Component(组件存储)

1:存储bean的代码

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

image.gif

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();
    }
}

image.gif

3:运行结果

image.gif 编辑

四:@Configuration(配置存储)

1:存储bean的代码

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

image.gif

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();
    }
}

image.gif

3:运行结果

image.gif 编辑

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

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

1:注解的特点

(1)元注解@Component:

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

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

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

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

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

(2)源码分析

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

image.gif 编辑

2:注解分类的优点

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

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

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

3:调用流程

image.gif 编辑


相关文章
|
XML Java 数据格式
spring是如何实例化bean的?spring实例化bean有哪些方式
spring是如何实例化bean的?spring实例化bean有哪些方式
|
XML 设计模式 Java
Spring——Bean管理-注解方式进行属性注入
简化xml方式开发,只需要注解就可以完成在配置文件中的配置
|
7月前
|
XML Java 数据格式
spring之基于注解管理Bean
【1月更文挑战第14天】 从 Java 5 开始,Java 增加了对注解(Annotation)的支持,它是代码中的一种特殊标记,可以在编译、类加载和运行时被读取,执行相应的处理。开发人员可以通过注解在不改变原有代码和逻辑的情况下,在源代码中嵌入补充信息。 Spring 从 2.5 版本开始提供了对注解技术的全面支持,我们可以使用注解来实现自动装配,简化 Spring 的 XML 配置。 Spring 通过注解实现自动装配的步骤如下: 1. 引入依赖 2. 开启组件扫描 3. 使用注解定义 Bean 4. 依赖注入
114 1
|
设计模式 安全 Java
一个你可能不曾注意的小东西,Spring依赖注入Bean类型的8种情况
大家好,我是三友~~ 今天来讲的一个你可能不曾注意的小东西,那就是Spring依赖注入支持注入Bean的类型,这个小东西可能看似没有用但是实际又有点小用。
一个你可能不曾注意的小东西,Spring依赖注入Bean类型的8种情况
|
XML Java 测试技术
详细讲解Spring中的@Bean注解
详细讲解Spring中的@Bean注解
934 0
详细讲解Spring中的@Bean注解
|
存储 缓存 Java
Spring-Bean的实例化
Spring-Bean的实例化
Spring-Bean的实例化
|
Java Maven Spring
Spring系列(二):Bean注解用法介绍
今天给大家介绍一下Spring中Bean注解的用法,后续的文章给大家介绍Sping其他注解用法,希望对大家日常工作能有所帮助!
Spring系列(二):Bean注解用法介绍
|
druid Dubbo Java
Spring系列(七):@FactoryBean注解用法介绍
FactoryBean是实现了FactoryBean<T>接口的Bean,可以该Bean的ID从BeanFactory中获取的实际上是FactoryBean中getObject()方法返回的实例对象,而并不是直接FactoryBean本身,想要获取FactoryBean对象本身,可以在id前面加一个&符号来获取
Spring系列(七):@FactoryBean注解用法介绍
|
Java Spring
spring学习3-获取bean对象
spring学习3-获取bean对象
103 0
spring学习3-获取bean对象

热门文章

最新文章