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

JAVA学习笔记038——bean的概念和常见注解标注

什么是bean?

Bean 就是 被 Spring 管理的对象,就像工厂流水线上生产的“标准产品”。这些对象不是你自己 new 出来的,而是由 Spring 容器(一个超级工厂)帮你创建、组装、管理。

由 @Component、@Service、@Controller 等注解标记的类,都会变成 Spring 管理的 Bean。这些注解就像是给类贴了一个标签,告诉 Spring:“嘿,这个类交给你了,帮我管理它!”

这些注解的作用

@Component:

最通用的注解,标记一个类为 Bean。

比如:

@Component
public class MyComponent {
    // 这是一个普通的 Bean
}

@Service:

专门用于标记业务逻辑层的类。

比如:

@Service
public class UserService {
    // 这是一个业务逻辑 Bean
}

@Controller:

专门用于标记控制器层的类(通常用于处理 HTTP 请求)。

比如:

@Controller
public class UserController {
    // 这是一个控制器 Bean
}

@Repository:

专门用于标记数据访问层的类(通常用于操作数据库)。

比如:

@Repository
public class UserRepository {
    // 这是一个数据访问 Bean
}

为什么分这么多注解?

虽然这些注解的功能本质上是一样的(都是把类变成 Bean),但它们有语义化的作用:

让代码更清晰:看到 @Service 就知道这是业务逻辑,看到 @Controller 就知道这是处理请求的。

方便扩展:未来 Spring 可能会根据注解类型提供特定的功能(比如 @Repository 会处理数据库异常)。

Bean 的创建过程

扫描:Spring 启动时,会扫描所有被 @Component、@Service、@Controller、@Repository 标记的类。

实例化:Spring 会创建这些类的对象(即 Bean)。

管理:把这些 Bean 放到 Spring 容器中,供其他地方使用。

举个完整的例子

// 1. 定义一个服务类(标记为 Bean)
@Service
public class UserService {
    public String getUserName() {
        return "张三";
    }
}

// 2. 定义一个控制器类(标记为 Bean)
@Controller
public class UserController {
    @Autowired // 自动注入 UserService 的 Bean
    private UserService userService;

    public void showUserName() {
        String name = userService.getUserName();
        System.out.println("用户名:" + name);
    }
}

运行逻辑:

Spring 扫描到 UserService 和 UserController,把它们变成 Bean。

Spring 发现 UserController 需要 UserService,于是自动把 UserService 的 Bean 注入到 UserController 中。

你可以直接使用 UserController,而不用手动创建 UserService。

总结

被 @Component、@Service、@Controller、@Repository 标记的类,都会变成 Bean。

区别:这些注解主要是为了区分 Bean 的用途,让代码更清晰。

核心:Spring 会自动管理这些 Bean 的生命周期和依赖关系,你只需要用 @Autowired 就能轻松使用它们!


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

相关文章:

  • MySQL学习笔记(1)索引
  • 玩转 Netty : 如何设计高性能RPC通信组件
  • MTK 相机多帧拍照systrace 拆解笔记
  • 组件动态注册、布局引擎、Schema驱动渲染的可视化搭建系统架构设计之参考方案
  • 2.7 大模型RAG内容安全合规检查-大模型ACP模拟题-真题
  • 山大软院ai导论实验之采用BP神经网络分类MNIST数据集
  • 指纹细节提取(Matlab实现)
  • 智能制造:汽车从订单到交付全流程
  • TCP如何保证可靠性
  • 《Effective Objective-C》阅读笔记(下)
  • seacmsv9管理员账号/密码注入
  • 【MySQL】第十一弹---复合查询全攻略:多表、自连接、子查询与合并查询
  • Idea java项目结构介绍
  • 服务器IPMI用户名、密码批量检查
  • 2-PostgreSQL docker compose 安装教程-Pgvector
  • 【软考-架构】1.1、计算机硬件-CPU校验码
  • Redis 五大核心数据结构详解
  • SSL域名证书怎么续期?
  • 最新版本SpringAI接入DeepSeek大模型,并集成Mybatis
  • 6-1 定时中断