Spring中Bean的实例化方式

导读:本篇文章讲解 Spring中Bean的实例化方式,希望对大家有帮助,欢迎收藏,转发!站点地址:www.bmabk.com

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();
    }
}

测试
在这里插入图片描述

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/95490.html

(0)
小半的头像小半

相关推荐

极客之音——专业性很强的中文编程技术网站,欢迎收藏到浏览器,订阅我们!