在Java里面,Java Bean实际上只是一个规范,比如一个类里面的属性最好为私有private的,最好有无参构造,有getter/setter方法,最好实现Serializable
接口(implements Serializable)......
但其实,也只是规范,并不是说必须遵守。
在 Spring 框架中,"bean" 是一个被 Spring IoC(Inversion of Control,控制反转)容器完全管理的对象。Spring 通过 IoC 容器管理应用程序的组件,这些组件在 Spring 中被称为 "beans"。以下是关于 Spring bean 的一些关键点:
-
由 Spring 容器实例化、配置和组装:Spring 容器负责创建 bean 的实例,设置必要的属性(通过依赖注入),并管理它们的完整生命周期。
-
由注解或 XML 配置定义:bean 可以通过注解(如
@Component
、@Service
、@Repository
、@Controller
)或 XML 配置文件定义。 -
单例或原型:Spring 管理的 bean 可以有不同的作用域,如单例(默认,每个 Spring 容器只有一个 bean 实例)、原型(每次请求都会创建一个新的 bean 实例)、请求、会话等。
-
依赖注入:Spring 通过依赖注入(DI)机制管理 bean 之间的依赖关系,可以是构造函数注入、setter 注入或字段注入。
-
生命周期管理:Spring 提供了丰富的生命周期回调机制,如
@PostConstruct
和@PreDestroy
注解,允许在 bean 的生命周期的特定点执行自定义逻辑。 -
可配置:bean 的行为可以通过配置进行定制,例如,通过
@Bean
注解的方法或 XML 配置文件中的<bean>
定义。 -
可替换:在测试或不同的部署环境中,可以替换 bean 的实现,而不需要修改代码。
-
支持 AOP:Spring 管理的 bean 可以方便地应用面向切面编程(AOP),例如,通过切面来添加日志记录、事务管理等横切关注点。
-
可懒加载:bean 可以配置为懒加载,这意味着只有在第一次使用时才创建 bean 实例。
-
支持自动装配:Spring 可以自动装配 bean 的依赖,减少手动配置的需要。
在 Spring 应用程序中,几乎所有的对象都是 bean,包括服务、数据访问对象(DAO)、控制器、工具类等。通过使用 Spring 框架,开发者可以专注于业务逻辑的实现,而不必关心底层的组件管理,从而提高开发效率和代码质量。
在 SSM 框架中(Spring、Spring MVC、MyBatis),"Bean" 通常指的是由 Spring IoC 容器管理的对象。在这种架构中,几乎所有的组件都可以被注册为 Spring 容器中的 bean。以下是一些常见的组件,它们在 SSM 框架中通常作为 bean 来管理:
-
服务层组件(Service):
- 这些是业务逻辑层的组件,通常通过
@Service
注解来标识。
- 这些是业务逻辑层的组件,通常通过
-
数据访问对象(DAO):
- 这些是数据访问层的组件,与数据库交互,通常通过
@Repository
注解来标识。
- 这些是数据访问层的组件,与数据库交互,通常通过
-
控制器(Controller):
- 在 Spring MVC 中,控制器负责处理用户的 HTTP 请求,通常通过
@Controller
注解来标识。
- 在 Spring MVC 中,控制器负责处理用户的 HTTP 请求,通常通过
-
配置类:
- 使用
@Configuration
注解的类,其中可以定义多个@Bean
注解的方法,每个方法都会创建一个 bean。
- 使用
-
组件(Component):
- 任何普通的组件,可以通过
@Component
注解来标识,Spring 会将其作为 bean 管理。
- 任何普通的组件,可以通过
-
数据模型(Model):
- 通常指的是 JavaBean 或 POJO(Plain Old Java Object),它们代表数据库中的表或业务逻辑中的实体。
-
工具类(Utility):
- 一些工具类也可以注册为 bean,以便在应用程序的其他部分中使用。
-
拦截器(Interceptor):
- 在 Spring MVC 中,拦截器可以注册为 bean,用于在请求处理前后执行操作。
-
监听器(Listener):
- 监听器可以注册为 bean,用于监听应用程序中的各种事件。
-
切面(Aspect):
- 在使用 AOP(面向切面编程)时,切面类可以注册为 bean,用于定义切点和增强。
-
属性编辑器(Property Editor):
- 用于自定义类型转换的组件,可以注册为 bean。
-
自定义配置属性:
- 通过
@ConfigurationProperties
注解的类,用于将配置文件中的属性绑定到 JavaBean 上。
- 通过
在 SSM 框架中,Spring 负责管理这些 bean 的生命周期,包括创建、初始化、销毁等。通过依赖注入(DI),Spring 可以将这些 bean 之间的依赖关系自动连接起来,从而实现松耦合和高内聚的设计理念。