建设工程法律网站,做网站ppt,大中型网站开发流程,经营范围 网站建设什么是bean?
Bean 就是 被 Spring 管理的对象#xff0c;就像工厂流水线上生产的“标准产品”。这些对象不是你自己 new 出来的#xff0c;而是由 Spring 容器#xff08;一个超级工厂#xff09;帮你创建、组装、管理。
由 Component、Service、Controller 等注解标记的…什么是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 的 Beanprivate 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 就能轻松使用它们