JavaBean是一种符合特定命名约定和设计模式的Java类,它具有以下特点:
-
公共的无参数构造函数: JavaBean类必须具有一个公共的无参数构造函数,以便JavaBean实例可以通过反射机制动态创建。
反射机制(Reflection)是一种在运行时动态地获取类的信息、调用类的方法和操作类的属性的机制。在Java中,反射机制允许程序在运行时检查、访问和修改类、方法和属性,而不需要事先知道它们的名字。Java中的反射机制主要通过
java.lang.reflect
包中的类和接口来实现。反射机制的主要功能包括:
获取类的信息: 可以使用反射机制获取类的名称、方法、属性、构造函数等信息。
创建对象实例: 可以使用反射机制动态地创建类的对象实例,而不需要使用
new
关键字。调用方法: 可以使用反射机制动态地调用类的方法,包括公共方法、私有方法和静态方法。
操作字段: 可以使用反射机制获取和修改类的字段(属性)的值,包括公共字段和私有字段。
访问构造函数: 可以使用反射机制获取类的构造函数,并动态地创建类的对象实例。
Java中的反射机制主要由以下几个类和接口组成:
Class
类:代表一个类的字节码文件,可以使用Class.forName()
方法或.class
属性获取Class
对象。Constructor
类:代表一个类的构造函数,可以使用getConstructors()
方法获取所有公共的构造函数。Method
类:代表一个方法,可以使用getMethods()
方法获取所有公共的方法。Field
类:代表一个类的字段(属性),可以使用getDeclaredFields()
方法获取所有字段。反射机制提供了很大的灵活性和动态性,但是由于反射操作需要在运行时进行类型检查和方法调用,因此会导致性能上的一些损失。因此,在性能要求较高的情况下,应尽量避免过度使用反射机制。
2. 私有的属性和公共的访问方法: JavaBean类通常包含一些私有的属性(字段),以及对这些属性进行读取(get)和写入(set)的公共方法。这些方法遵循命名约定,例如对于属性 name
,它的读取方法应该命名为 getName()
,写入方法应该命名为 setName(String name)
。
3. 可序列化: JavaBean类通常实现了java.io.Serializable
接口,以支持对象的序列化和反序列化操作。
JavaBean通常被用于在不同的Java组件之间传递数据,例如在MVC(Model-View-Controller)模式中,Model通常是由JavaBean表示的。它们也可以作为持久化对象,存储在数据库中或通过网络传输。
总的来说,JavaBean是一种轻量级、可重用的Java组件,它遵循一些简单的约定和规范,使得Java开发者可以轻松地创建、组装和使用这些组件。
Spring是一个轻量级的控制反转(IoC)和面向切面(AOP)的容器(框架)。
- 核心容器:核心容器提供 Spring 框架的基本功能。核心容器的主要组件是 BeanFactory,它是工厂模式的实现。BeanFactory 使用控制反转(IOC) 模式将应用程序的配置和依赖性规范与实际的应用程序代码分开。
控制反转IoC(Inversion of Control),是一种设计思想,DI(依赖注入)是实现IoC的一种方法,也有人认为DI只是IoC的另一种说法。没有IoC的程序中 , 我们使用面向对象编程 , 对象的创建与对象间的依赖关系完全硬编码在程序中,对象的创建由程序自己控制,控制反转后将对象的创建转移给第三方,个人认为所谓控制反转就是:获得依赖对象的方式反转了。
- 依赖注入(DI): 这是IoC的一个具体实现方式,它通过将依赖关系从被依赖对象的代码中抽离出来,并由外部容器负责提供这些依赖关系。通常有三种主要的依赖注入方式:构造函数注入、方法注入和属性注入。
- 依赖查找(DL): 这是IoC的另一种实现方式,它通过外部容器提供的接口,让对象主动去查找其所需的依赖关系。
IoC是Spring框架的核心内容,使用多种方式完美的实现了IoC,可以使用XML配置,也可以使用注解,新版本的Spring也可以零配置实现IoC。
Spring容器在初始化时先读取配置文件,根据配置文件或元数据创建与组织对象存入容器中,程序使用时再从Ioc容器中取出需要的对象。
在Spring中,那些组成应用程序的主体及由Spring IoC容器所管理的对象,被称之为bean。简单地讲,bean就是由IoC容器初始化、装配及管理的对象 .
在软件开发中,"Bean的作用域"指的是在IoC容器中管理的对象(通常是Java对象)的生命周期和可见性范围。Spring框架中,Bean的作用域是通过在Bean的声明中指定的。
Spring框架支持通过自动装配(autowiring)来简化bean之间的依赖关系管理。自动装配可以减少在Spring配置文件中显式声明bean依赖关系的工作,提高代码的可维护性和灵活性。