博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
SpringBoot Bean
阅读量:4289 次
发布时间:2019-05-27

本文共 1504 字,大约阅读时间需要 5 分钟。

目录


1 什么是Bean

Spring Bean 是被实例化的、组装的及被Spring 容器管理的Java 对象。

Spring 容器会自动完成@bean对象的实例化。

建应用对象之间的协作关系的行为称为:装配(wiring),这就是依赖注入的本质。

2 Bean的创建方式

2.1 注解方式

这种也是我们最常见的使用姿势,一般就是在类上添加@Component@Service等注解(@Controller表示提供http接口的bean, @Configuration表示配置类Bean),添加这些注解的类,会被Spring 容器扫描加载到,自动生成单例的Bean。

2.2 @Bean定义

这种方式,主要是结合Configuration来定义bean,首先是声明一个配置类,然后再配置类中,通过返回bean对象的方法形式来声明bean。

@Datapublic class ConfigDemoBean {    private String type = "ConfigDemoBean";    public String getName(String name) {        return name + " _" + type;    }}@Configurationpublic class BeanLoadConfig {    @Bean    public ConfigDemoBean configDemoBean() {        return new ConfigDemoBean();    }}

除了以上2中常见的方式之外,在抽象框架层面,还有工厂类方式:FactoryBean

 

3 Bean的使用

以上是如果创建一个Bean,创建完之后如何使用呢? 

3.1 @Autowired 和@Resource

将注解@Autowired或者@Resource添加到成员变量上,即表示这个成员变量会由Spring容器注入对应的Bean对象。

@Resource的作用相当于@Autowired,只不过@Autowired按byType自动注入,而@Resource默认按 byName自动注入罢了。

3.2 Setter方法

除了成员变量之外,@Autowired 和@Resource 这两个注解还可以放在 Setter 方法上。

private FacDemoBean facDemoBean;@Autowiredprivate void setFacDemoBean(FacDemoBean facDemoBean) {    this.facDemoBean = facDemoBean;}

3.3 构造方法

在构造方法中,传入Bean对象来初始化。

public class DemoController {    private AnoDemoBean anoDemoBean;    public DemoController(AnoDemoBean anoDemoBean) {        this.anoDemoBean = anoDemoBean;    }}

4 Bean的生命周期

什么是Bean的生命周期呢?就是Bean从创建到销毁的过程。Bean 的生命周期,统一是由 Spring IoC 容器来进行管理的。

Spring 在实例化 Bean 的时候,会先调用它的构造函数,进行 Bean的实例化,然后进行 Bean的初始化。这个时候,

然后就开始利用 Bean进行业务逻辑处理,最后容器正常关闭,Spring 开始销毁 Bean。

 

参考: 

            

 

 

 

 

 

 

 

 

 

转载地址:http://ynlgi.baihongyu.com/

你可能感兴趣的文章
基于OpenRestry部署nginx+lua实现流量定向分发
查看>>
netty源码分析之-服务端启动核心源码分析(5)
查看>>
Storm并行度和流分组详解
查看>>
缓存数据预热详解
查看>>
热点数据降级详解(storm+nginx+lua)
查看>>
加载更多功能实现
查看>>
React相关Dom约束性和非约束性操作
查看>>
Hystrix高可用架构介绍
查看>>
netty源码分析之-SimpleChannelInboundHandler与ChannelInboundHandlerAdapter详解(6)
查看>>
netty源码分析之-开发过程中重要事项分析(7)
查看>>
Sublime Text3插件详解
查看>>
netty源码分析之-ByteBuf详解(8)
查看>>
javascript函数定义三种方式详解
查看>>
javascript中this关键字详解
查看>>
javascript关于call与apply方法详解
查看>>
netty源码分析之-ReferenceCounted详解(9)
查看>>
javascript闭包详解
查看>>
javascript类的创建与实例对象
查看>>
javascript原型详解(1)
查看>>
netty源码分析之-处理器详解(9)
查看>>