Spring 扫盲系列(一) Java Bean 与 Spring Bean 的区别

2023年 8月 16日 74.5k 0

一、什么是 Java Bean?

Java Bean 就是一个普通的 Java 对象(Plain Old Java Object,POJO),它是指那些纯粹的 Java 类,它们没有依赖于任何特定的框架或库。这些类通常只包含数据字段(属性)和简单的访问方法,用于封装数据和实现业务逻辑。

普通的 Java 对象(POJO)示例:

public class Student {
    private String name;
    private int age;
​
    public Student(String name, int age) {
        this.name = name;
        this.age = age;
    }
​
    public String getName() {
        return name;
    }
​
    public int getAge() {
        return age;
    }
}
​

在这个示例中,我们创建了一个普通的 Java 类 Student,它只有两个私有字段(name 和 age),以及用于获取这些字段的访问方法。这是一个很简单的 POJO,没有任何框架或库的依赖。

二、什么是 Spring Bean?

首先,Spring 是一个强大的开源框架,用于构建 Java 应用程序。在 Spring 中,Bean 是一种由 Spring 容器管理的对象。这些对象可以是普通的 Java 对象,但它们由 Spring 负责创建、配置和管理。Spring 的 IoC(控制反转)机制使得 Bean 的创建和管理变得更加灵活和集中化。现在,让我们看看如何在 Spring 中定义和使用 Bean 对象。

Spring 的 Bean 对象示例:

首先,我们需要在 Spring 的配置文件中定义 Bean。



​
    
    
        
        
    
​

​

在上面的示例中,我们使用 Spring 配置文件定义了一个名为 "studentBean" 的 Bean,它的类是 com.example.Student,并通过构造函数注入了学生的名字和年龄。

现在,让我们在 Java 代码中使用这个 Bean。

import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
​
public class MainApp {
    public static void main(String[] args) {
        // 初始化 Spring 容器
        ApplicationContext context = new ClassPathXmlApplicationContext("applicationContext.xml");
​
        // 获取名为 "studentBean" 的 Bean
        Student student = (Student) context.getBean("studentBean");
​
        // 使用 Bean
        System.out.println("Student Name: " + student.getName());
        System.out.println("Student Age: " + student.getAge());
    }
}

在这个示例中,我们使用 Spring 的 ApplicationContext 来获取名为 "studentBean" 的 Bean,并使用它来创建一个学生对象。通过这个示例就可以看到 Spring 是如何管理 Bean 的创建和配置的。

三、两者区别

Spring 的 Bean 对象在一定程度上扩展了普通的 Java 对象的概念,以提供更多的功能和便利性。在学习和实践中,了解这些区别将有助于您更好地利用 Spring 框架来构建强大的 Java 应用程序。

装配和管理: 普通的 Java 对象需要自行创建和管理,而 Spring 的 Bean 则由 Spring 容器负责创建、配置和管理。这为我们的程序提供了更大的灵活性和可维护性,无须再像以前一样经常需要new 对象来使用,现在我们将创建对象的任务交给 Spring 来做,我们只需要在需要用的地方注入对象就可以。

依赖注入: Spring 的 Bean 可以通过依赖注入(DI)来自动解决它们之间的依赖关系。这意味着我们可以将一个 Bean 注入到另一个 Bean 中,而无需手动实例化(new)它们或处理依赖关系。

切面和增强: Spring 的 Bean 支持面向切面编程(AOP),这使我们可以将横切关注点(如日志记录、事务管理等)从业务逻辑中分离出来,使代码更加干净和模块化。说白了就是我们可以封装日志记录、事务管理的代码,等程序运行到我们想要切入的地方(即类中的方法)时,Spring AOP 会将我们封装的日志记录、事务管理等代码追加到切入点的前后啥的。

生命周期管理: Spring 的 Bean 可以通过初始化和销毁回调方法来管理其生命周期。我们可以在 Bean 初始化之前或销毁之后执行特定的操作,如通过 @PostConstruct 来初始化前对属性进行赋值或者通过实现 InitializingBean 接口进行初始化

配置: 普通的 Java 对象通常在代码中硬编码配置,而 Spring 的 Bean 可以通过 XML 配置、Java 注解或 Java 配置类进行配置,使得配置更加灵活和可管理。

相关文章

JavaScript2024新功能:Object.groupBy、正则表达式v标志
PHP trim 函数对多字节字符的使用和限制
新函数 json_validate() 、randomizer 类扩展…20 个PHP 8.3 新特性全面解析
使用HTMX为WordPress增效:如何在不使用复杂框架的情况下增强平台功能
为React 19做准备:WordPress 6.6用户指南
如何删除WordPress中的所有评论

发布评论