`
samwang
  • 浏览: 44766 次
  • 性别: Icon_minigender_1
  • 来自: 苏州
社区版块
存档分类
最新评论

Spring的bean对象创建(一)

阅读更多
Spring的中的class加载是通过classLoader.loadClass 方式来实现 
public static Class forName(String name, ClassLoader classLoader) throws ClassNotFoundException, LinkageError {
		Assert.notNull(name, "Name must not be null");

		Class clazz = resolvePrimitiveClassName(name);
		if (clazz != null) {
			return clazz;
		}

		// "java.lang.String[]" style arrays
		if (name.endsWith(ARRAY_SUFFIX)) {
			String elementClassName = name.substring(0, name.length() - ARRAY_SUFFIX.length());
			Class elementClass = forName(elementClassName, classLoader);
			return Array.newInstance(elementClass, 0).getClass();
		}

		// "[Ljava.lang.String;" style arrays
		int internalArrayMarker = name.indexOf(INTERNAL_ARRAY_PREFIX);
		if (internalArrayMarker != -1 && name.endsWith(";")) {
			String elementClassName = null;
			if (internalArrayMarker == 0) {
				elementClassName = name.substring(INTERNAL_ARRAY_PREFIX.length(), name.length() - 1);
			}
			else if (name.startsWith("[")) {
				elementClassName = name.substring(1);
			}
			Class elementClass = forName(elementClassName, classLoader);
			return Array.newInstance(elementClass, 0).getClass();
		}

		ClassLoader classLoaderToUse = classLoader;
		if (classLoaderToUse == null) {
			classLoaderToUse = getDefaultClassLoader();
		}
		return classLoaderToUse.loadClass(name);
	}




分享到:
评论

相关推荐

    Spring Bean创建初始化流程.docx

    开始时,通过`AnnotationConfigApplicationContext`类创建一个上下文实例,通常传入一个或多个配置类(`annotatedClasses`),这些类带有@Configuration注解,用于定义Bean的配置。 2. **刷新上下文**: 调用`...

    Spring Bean重复执行两次(实例被构造两次)问题分析

    如果将Bean设置为Prototype,那么每次请求都会创建一个新的实例,可能导致重复执行。 7. **XML配置中的<bean>标签误用**:在XML配置中,如果不小心在同一个配置文件中声明了同一个Bean两次,或者在多个配置文件中...

    spring bean XML配置入门

    在Spring中,一个Bean通常代表应用中的一个对象,这些对象由Spring容器创建、管理并提供给其他组件使用。Spring容器通过XML配置文件或注解来定义Bean及其相互关系。 3. **XML配置文件**: "spring-beans"是Spring...

    普通类调用Spring bean对象

    当我们需要在非Spring管理的普通类中调用Spring管理的bean对象时,需要掌握特定的方法。这篇文档将详细介绍如何实现这一操作,并探讨相关的源码和技术工具。 首先,理解Spring的核心概念——依赖注入(Dependency ...

    spring创建bean简单示例

    首先,创建一个Java类,例如`MyService`,它代表一个Bean。这个类可能包含一些业务逻辑。 ```java public class MyService { public void doSomething() { // 业务逻辑 } } ``` 2. **配置Bean**: 使用XML...

    实例化Spring bean的两种工厂方法

    实例化Spring Bean的工厂方法是实现定制化对象创建的一种方式,提供了比直接声明Bean更高的灵活性。开发者可以根据需求选择实例工厂方法或静态工厂方法,以满足特定的应用场景。在实际项目中,应根据实际情况权衡...

    Spring-Bean创建对象的步骤方式详解

    例如,我们可以使用以下配置来创建一个 User 对象: ```xml <bean id="user" class="com.c.pojo.user"></bean> ``` 在上面的配置中,我们没有指定构造函数的参数,因此 Spring 会自动使用无参构造函数来创建对象。 ...

    普元eos-springbean开发

    SpringBean是Spring框架的核心概念之一,它是Spring IoC容器管理的对象。在普元EOS平台中,SpringBean同样扮演着重要角色,用于封装业务逻辑、数据访问等功能。通过合理地设计和配置SpringBean,可以极大地提高开发...

    springBean加载过程源码解析文档,附有代码类名和行数

    这个过程中,SpringApplication 会创建一个 BootstrapRegistryInitializer,用于注册简单对象直到 ApplicationContext 准备就绪为止。 ApplicationContextInitializer ApplicationContextInitializer 是 Spring 上...

    spring bean 属性总结

    设置为`false`时,每次请求都会创建一个新的实例。 - **abstract属性**:如果设置为`true`,则该Bean仅作为其他Bean的抽象模板,不能被直接实例化。 - **parent属性**:允许继承另一个Bean的属性。这对于共享一些...

    粗略实现spring创建bean

    - 原型(Prototype):每次请求都会创建一个新的Bean实例。 - 作用域(Scope):还包括请求(Request)、会话(Session)、应用(Application)等Web容器特定的作用域。 4. Spring Bean 的依赖注入 - 构造器注入...

    Spring Bean 加载顺序 .

    对于Prototype作用域,每次请求都会创建一个新的实例。 6. **后处理器注册**: Spring允许自定义BeanPostProcessor,它们在Bean实例化后执行特定的处理,比如AOP代理。这些后处理器将在Bean实例化后,初始化前介入...

    spring bean的生命周期测试代码

    在测试代码中,通常会创建一个或多个模拟Bean,然后使用`ApplicationContext`来加载配置并启动生命周期管理。通过断言和日志记录,我们可以验证各个生命周期方法是否按预期执行,以及Bean的状态是否正确。 总的来说...

    Spring Bean简单应用实例

    在Spring框架中,Bean是核心概念,它代表了应用程序中的对象。Spring通过IoC(Inversion of Control,控制反转)和DI(Dependency Injection,依赖注入)来管理这些Bean。在这个"Spring Bean简单应用实例"中,我们将...

    Spring bean 管理

    - 使用p名称空间,可以直接在XML配置文件中通过属性名引用对应的值或者bean对象,例如使用p:属性名="值"的方式。 在实际开发过程中,开发者可以根据具体的项目需求和环境选择合适的Bean管理方式。XML方式适合于...

    Spring的Bean配置

    在Spring中,Bean是应用中的对象,它们由Spring IoC容器负责创建、管理和装配。Bean配置是定义这些对象如何被创建和如何相互关联的过程。 **IoC(Inversion of Control)和DI(Dependency Injection)**: IoC是...

    Spring实例化Bean顺序

    在Spring框架中,Bean的实例化顺序是一个关键概念,它涉及到如何管理和协调多个Bean的创建与依赖关系。这里,我们主要探讨的是Spring如何通过其IoC(Inversion of Control)容器来实例化Bean,并理解其背后的逻辑。 ...

    Spring5.0源码深度解析之SpringBean循环依赖问题解决方案.docx

    在Spring框架中,Bean的循环依赖指的是两个或多个Bean对象之间存在相互依赖关系,这种情况下,Bean的创建和依赖关系将变得复杂。 在Spring框架中,循环依赖问题可以分为两种情况:单例和多例。单例情况下,Spring...

    Spring Bean 的生命周期

    如果配置了`@Scope("prototype")`,每次请求都会创建一个新的Bean。 2. **属性注入**:Spring容器将根据Bean定义中的属性值、setter方法或构造函数参数来设置Bean的依赖。这包括了基本类型、其他Bean引用、集合类型...

    Spring_ClassPathResource获得bean对象

    这将创建一个上下文,其中包含配置文件中定义的所有bean。 5. **获取bean对象**: 一旦有了ApplicationContext,就可以通过bean的ID获取bean对象: ```java MyBean myBean = (MyBean) context.getBean(...

Global site tag (gtag.js) - Google Analytics