Spring中Bean的实例化方式

5 篇文章 0 订阅

Spring中的bean的实例化方式

一、基于XML配置

bean基于配置实例化的方式有三种实现

  • 通过无参构造实例化
  • 通过静态工厂方法实例化
  • 通过普通工厂实例化

1. 无参构造方法实例化对象

<!--无参构造实例化bean-->
<bean id="student" class="com.wyscoder.spring.IOC.pojo.Student"/>

注:如果不指定构造函数,会生成一个默认的无参构造函数

如果显性的指定有参构造函数,不会生成默认的构造函数,必须在显性指定一个无参构造函数,否则实例化对象会抛出异常

2. 静态工厂类实例化对象

首先,使用一个工厂的静态方法返回对象

public class StaticBeanFactory {
    public static Student getBean() {
        return new Student();
}

在配置文件中使用工厂的静态方法返回对象

通过静态工厂实例化bean
class:指定工厂类的路径
factory-method:在工厂类中获取对象的方法

<bean id="student2" class="com.wyscoder.spring.IOC.StaticBeanFactory" factory-method="getBean"/>

测试
在这里插入图片描述

3. 普通工厂实例化对象

通过工厂创建一个非静态方法得到对象

public class CommonBeanFactory {
    public Student getBean() {
        return new Student();
    }
}

配置文件中是同工厂的非静态方法返回对象

第一步: 创建工厂实例
第二步: 指定工厂和工厂方法

	<!--首先创建工厂实例-->
    <bean id="beanFactory" class="com.wyscoder.spring.IOC.CommonBeanFactory"/>
    <!--指定工厂和工厂方法-->
    <bean id="student3" class="com.wyscoder.spring.IOC.pojo.Student" factory-bean="beanFactory" factory-method="getBean"/>

测试
在这里插入图片描述

二、基于注解方式装配Bean(自动装配)

通过component注解标记类

类似于xml配置文件 @Component类似于xml中的bean标签 value值类似于id属性。
在这里插入图片描述

配置启动组件扫描

<?xml version="1.0" encoding="UTF-8"?>

<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xmlns:context="http://www.springframework.org/schema/context"
       xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
       http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd">

    <!--开启扫描:指定到包路径或者类名;会扫描类、方法、属性上是否有注解-->
    <context:component-scan base-package="com.wyscoder.spring.IOC"/>
</beans>

使用component-scan标签方式来扫描包路径及子类路径
第一步必须引入context约束,否则无法出现context标签

在Spring中主要提供了四个注解来标注bean

  • @Component 通用的标注形式
  • @Repository 对Dao实例类进行标注
  • @Service 对Service层类进行标注
  • @Controller 对Controller层类进行标注

测试
在这里插入图片描述

三、通过Java代码装配Bean(组件扫描)

给定一个配置类,在配置类上添加@Configuration注解,@Configuration注解表明当前类是一个配置类,告诉Spring应用上下文如何创建bean细节。

@Configuration
public class TestConfig {
    
}

将交给spring管理的类声明为bean,编写一个方法,方法会创建所需要的bean的实例,给方法添加上@Bean注解。@Bean注解会告诉Spring这个方法会返回一个对象,这个对象会被注册到spring中。

@Configuration
public class TestConfig {
    @Bean(name = "student2")
    public Student student() {
        return new Student();
    }
}

测试
在这里插入图片描述

  • 3
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

WYSCODER

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值