【校招VIP】Spring Bean介绍

4小时前 收藏 0 评论 0 java开发

【校招VIP】Spring Bean介绍

转载声明:文章来源https://blog.csdn.net/2302_77758423/article/details/140584646

1.什么是bean
Bean是Java世界中的一种组件,用于封装数据和逻辑,以便在应用程序中重用和维护。它不仅可以装在数据,还可以包含业务逻辑,甚至连接到数据库的操作。这样的设计让开发工作变得更加模块化,提高了代码的可重用性(由于封装的特性,Bean可以被多个程序或多个项目中复用,提高了开发效率。)和可维护性。通常情况下,Bean由私有属性和公有的访问方法(getter和setter)组成。这种结构让外部代码只能通过指定的接口与Bean交互,而不能直接访问内部状态,从而确保了数据的封装性和安全性。
在Spring框架中,Bean是由Spring IoC容器来管理的对象。IoC即控制反转,是一种设计原则,用来减少代码之间的依赖关系。通过依赖注入的方式,Spring容器负责将依赖对象提供给需要的Bean,这样就降低了组件之间的耦合度。

2.获取bean
默认情况下spring项目启动时,就会把bean都创建好放在IOC容器中,如果想要主动获取这些bean,可以通过如下方式
根据name获取bean

Object getBean(String name)

根据类型获取bean

<T> T getBean(Class<T> requiredtype)

根据name获取bean(带类型转换)

<T> T getBean(String name,Class<T> requiredType)

上述所说的(spring项目启动时,会把其中的bean都创建好)还会受到作用域延迟初始化的影响,这里主要针对于默认的单例非延迟加载的bean而言。

3.bean的作用域
Spring支持五种作用域,后面三种在web环境中才生效:


可以通过@Scope注解来进行配置作用域:

@Scope("prototype")
@RestController
@RequestMapping("/depts")
public class DeptController{
}

注意事项:
默认singleton的bean,在容器启动时被创建,可以使用@Lazy注解来延迟初始化(延迟到第一次使用时)。
prototype的bean,每一次使用bean的时候都会创建一个新的实例。
在实际开发当中,绝大部分的Bean是单例的,也就是说绝大部分bean不需要配置scope属性。


4.第三方bean
@Bean
如果要管理bean对象来自第三方(不是自定义的)、是无法用@Component及衍生注解声明bean的,就需要用到@Bean注解。
若要管理这些第三方的bean对象,建议对这些bean进行集中分类配置,可以通过@Configuration注解声明一个配置类。
不建议在启动类中添加其他代码,要保证其纯净性。

@SpringBootApplition
public class SpringBootWebConfig2Applition{
@Bean//将方法返回值交给IOC容器管理,成为IOC容器的bean对象
public SAXReader saxReader(){
return new SAXReader();
}
}

config包下创建类 

@Configuration
public class CommonConfig{
@Bean
public SAXReader saxReader(){
return new SAXReader();
}
}

注意事项:
通过@Bean注解的name注解或value可以声明bean的名称,如果不指定,默认bean的名称就是方法名
如果第三方bean需要依赖其它bean对象,直接在bean定义方法中设置形参即可,容器会根据类型自动装配。

5.Bean的生命周期
通过BeanDefinition获取bean的定义信息
通过构造函数实例化bean
bean的依赖注入
处理Aware接口(BeanNameAware,BeanFactoryAware,ApplicationContextAware)
Bean的后置处理器BeanPostProcessor——前置
初始化方法(InitializingBean,init-method)
Bean的后置处理器BeanPostProcessor——后置
销毁Bean

6.Bean的种类
在Java的世界里,有几种不同类型的Bean:
1)实体Bean(Entity Bean):通常用于表示数据库中的数据表,每个实体Bean对应表中的一行记录。
2)会话Bean(Session Bean):用户与系统交互时,会话Bean保存用户信息,充当的是用户的会话对象。
3)消息驱动Bean(Message-Driven Bean):用于处理异步消息,常与JMS(Java Message Service)一起使用。

7.为什么使用Bean?
使用Bean的好处包括但不限于:
1)解耦:Bean的使用减少了代码间的直接依赖,使得各部分更容易理解和维护。
2)提高可测试性:由于Bean是独立的组件,可以单独对Bean进行测试,提升整体代码的可测试性。
3)增强灵活性:Bean可以被任何支持Java的平台重用和扩展,这为应用程序提供了更大的灵活性。

C 0条回复 评论

帖子还没人回复快来抢沙发