`
1140566087
  • 浏览: 558849 次
  • 性别: Icon_minigender_1
  • 来自: 武汉
博客专栏
2c4ae07c-10c2-3bb0-a106-d91fe0a10f37
c/c++ 入门笔记
浏览量:18519
3161ba8d-c410-3ef9-871c-3e48524c5263
Android 学习笔记
浏览量:313969
Group-logo
J2ME 基础学习课程集
浏览量:18726
A98a97d4-eb03-3faf-af96-c7c28f709feb
Spring 学习过程记录...
浏览量:17573
社区版块
存档分类
最新评论

Spring Bean工厂和上下文

阅读更多
package com.svse.entity;

import java.io.Serializable;
import java.util.List;

public class AdminEntity implements Serializable {
	
	private String college;
	private String tel;
	private List ar;
	public String getCollege() {
		return college;
	}
	public void setCollege(String college) {
		this.college = college;
	}
	public String getTel() {
		return tel;
	}
	public void setTel(String tel) {
		this.tel = tel;
	}
	public List getAr() {
		return ar;
	}
	public void setAr(List ar) {
		this.ar = ar;
	}
}


package com.svse.entity;

import java.io.Serializable;

public class UserEntity implements Serializable {
	private int id;
	private String name;
	private AdminEntity admin;
	
	public UserEntity(){}
	public UserEntity(int id ,String name,AdminEntity admin){
		this.id = id;
		this.name = name;
		this.admin = admin;
	}

	public int getId() {
		return id;
	}

	public void setId(int id) {
		this.id = id;
	}

	public String getName() {
		return name;
	}

	public void setName(String name) {
		this.name = name;
	}

	public AdminEntity getAdmin() {
		return admin;
	}

	public void setAdmin(AdminEntity admin) {
		this.admin = admin;
	}

}


<?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:p="http://www.springframework.org/schema/p"
	xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd">

	<!-- 1、解释:AdminEntity adminEntity = new AdminEntity(); -->
	<bean id="adminEntity" class="com.svse.entity.AdminEntity">

		<!-- AdminEntity 类中有个属性为:college 的,赋值为:value="" -->
		<property name="college" value="湖北国土资源职业学院"></property>
		<property name="tel" value="1533*******"></property>
		<!-- 为集合赋值List -->
		<property name="ar">
			<list>
				<value>上网</value>
				<value>吃饭</value>
				<value>睡觉</value>
			</list>
		</property>
	</bean>

	<!-- 解释:==UserEntity userEntity = new UserEntity(); -->
	<bean id="userEntity" class="com.svse.entity.UserEntity">
		<property name="id" value="1"></property>
		<property name="name">
			<value>小王八蛋</value>
		</property>
		<!-- 属性名:admin,为其依赖注入 adminEntity== admin = new AdminEntity(); 并进行赋值 -->
		<property name="admin" ref="adminEntity"></property>
	</bean>

	<!--
		2、bean 中的属性介绍: abstract="true" 设置该bean对应的类为抽象类,不能直接进行使用
		parent="id标识,继承的父类"
	-->

	<!--
		===========================定义UserEntity 为抽象类==========================
	-->
	<bean id="userEntity1" class="com.svse.entity.UserEntity"
		abstract="true">
		<property name="id" value="123"></property>
		<property name="name" value="谢逊"></property>
	</bean>
	<!--
		通过parent这个属性集成:抽象类(根据ID标识找到需要继承的类),继承了对应类中的属性,也可以随时的根据自己的需要更改相关的属性
		不需要更改的可以直接的进行引用;
	-->
	<bean id="xx" parent="userEntity1">
		<property name="id" value="456"></property>
	</bean>
	<!--============================================================== -->

	<!-- 3、bean中属性:autowire的用法 ,以及null值的设置-->
	<!--
		+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
	-->
	<bean id="admin" class="com.svse.entity.AdminEntity">

		<!-- 将college属性值设为:"" -->
		<property name="college">
			<value></value>
		</property>
		<!-- 将tel的属性值设为:null -->
		<property name="tel">
			<null />
		</property>
		<property name="ar">
			<list>
				<value>八嘎</value>
				<value>九噶</value>
			</list>
		</property>
	</bean>
	<bean id="userEntity3" class="com.svse.entity.UserEntity"
		autowire="byName">
		<property name="id" value="3"></property>
		<property name="name">
			<value>小红</value>
		</property>
		<!--
			该实体下包含一个对象名称为:admin的对象,设置了autowire 然后自动的寻找到id名为admin的bean,实现自动匹配
		-->
	</bean>
	<!--
		+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
	-->

	<!-- 4、bean的name属性、depends-on="标识ID名" -->
	<!--
		+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
	-->
	<!--
		bean中的ID 是唯一标识,而name 能多名称标识,相当于给同一个bean起多个名称,可以根据任意的一个别名获取到当前
		的bean,命名方式如:name="/user,yy,xx,aa" , id="xx"
		代码中可以根据任意你喜欢的名称(user,yy,xx,aa)获取,而 id只能根据xx获取; depends-on: 通过ID
		指定依赖的对象,被依赖者执行之后才会执行本身;例如:处理数据之前必须先链接数据库;
	-->
	<!--
		+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
	-->

	<!-- 5、通过xml文件给实体中构造方法赋值 传递参数值,以及传递实体对象 -->
	<!--
		=============================================================================================
	-->
	<bean id="adminEntity1" class="com.svse.entity.AdminEntity">
		<property name="college" value="工业大学"></property>
		<property name="tel">
			<value></value>
		</property>
		<property name="ar">
			<null />
		</property>
	</bean>
	<bean id="userEntity4" class="com.svse.entity.UserEntity">
		<constructor-arg index="0" value="1"></constructor-arg>
		<constructor-arg index="1" value="大奖人"></constructor-arg>
		<constructor-arg index="2" ref="adminEntity1"></constructor-arg>
	</bean>
	<!--
		=============================================================================================
	-->

	<!-- 6、BeanFactory 的作用域 ,scope属性-->
	<!--
		scope="singleton" : 单例模式 ,查询一次后数据存入内存,然后常驻内存,再次查询的时候仍然是内存中的数据,
		数据没有和数据库同步; scope="prototype" :代理模式 , 只负责封装数据,能保证页面数据和数据库的同步
	-->
	<bean id="adminEntity6" class="com.svse.entity.AdminEntity"></bean>
	<bean id="userEntity6" class="com.svse.entity.UserEntity" scope="singleton"></bean>
	<!-- 單例模式下:
		UserEntity user1 = app.getBean("userEntity6",UserEntity.class);
		UserEntity user2= app.getBean("userEntity6",UserEntity.class);
		此時:user1==user2   : true
	 -->
	<bean id="userEntity7" class="com.svse.entity.UserEntity" scope="prototype"></bean>
	<!-- 代理模式下:
		UserEntity user1 = app.getBean("userEntity7",UserEntity.class);
		UserEntity user2= app.getBean("userEntity7",UserEntity.class);
		此時:user1!=user2   : false
	 -->
	 <!-- ==================================================================================== -->




</beans>
0
4
分享到:
评论

相关推荐

    Spring Bean创建初始化流程.docx

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

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

    6. **Bean的作用域**:默认情况下,Spring Bean的作用域是Singleton,意味着在整个应用上下文中只有一个实例。如果将Bean设置为Prototype,那么每次请求都会创建一个新的实例,可能导致重复执行。 7. **XML配置中的...

    springmvc spring 两套上下文问题

    在Spring MVC和Spring框架的整合应用中,常常会遇到两套上下文的问题。Spring MVC是Spring框架的一个模块,主要用于处理Web请求,而Spring则提供了一个更广泛的IoC(Inversion of Control,控制反转)和AOP(Aspect ...

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

    ApplicationContextInitializer 是 Spring 上下文初始化类,负责加载配置文件和注册 Bean。通过查看源码,我们可以发现 Spring 自动加载配置文件的代码。 SpringApplication 运行 SpringApplication 的 run 方法是...

    利用Spring Context上下文创建自定义对象

    在Spring框架中,Spring Context上下文是核心组件之一,它为开发者提供了强大的依赖注入(Dependency Injection,简称DI)和控制反转(Inversion of Control,简称IoC)功能。本篇文章将深入探讨如何利用Spring ...

    spring运行过程中动态注册bean

    `BeanFactoryAware`接口使得Bean可以被注入`BeanFactory`,而`ApplicationListener`接口则可以让Bean监听到应用上下文的刷新事件,从而在合适的时机执行动态注册逻辑。 ```java public class BeanFactoryAwareBean ...

    spring 5.2.9 07 源码分析-spring的bean工厂准备工作 测试用例

    在这个测试用例中,`@SpringBootTest`注解启动了一个应用上下文,`@Autowired`注解注入了`MessageService` Bean,然后在`testMessage`方法中验证了Bean的正确配置和功能。 总之,Spring的Bean工厂准备工作涉及Bean...

    Spring中关于Bean的管理的课件

    4. **Spring的应用上下文(ApplicationContext)**:ApplicationContext是Spring的主要接口之一,它提供了获取Bean、处理消息和事件等功能,是Spring应用中的主要入口点。 5. **构造注入(constructor injection)*...

    spring依赖注入bean

    在 Java 应用中使用 Spring,我们需要创建一个 Spring 上下文(ApplicationContext)来加载 Bean 的定义。这个上下文将负责创建和管理 Bean,以及执行依赖注入。通常,我们可以使用 `ClassPathXmlApplicationContext...

    第二十章 Spring 应用上下文生命周期(ApplicationContext Lifecycle)1

    在Spring框架中,ApplicationContext...了解Spring应用上下文的生命周期有助于我们更好地管理和控制Bean的行为,以及优化应用的性能和稳定性。在实际开发中,理解这些生命周期阶段可以帮助我们更有效地调试和解决问题。

    线程中获取spring 注解bean

    在提交任务时,可以将bean作为参数传递,或者在任务内部使用`ApplicationContextAware`接口获取应用上下文,从而获取bean。 4. **ApplicationContextAware**:让线程处理类实现`ApplicationContextAware`接口,...

    普通类调用Spring bean对象

    1. **ApplicationContext**:这是Spring提供的一个接口,代表了Spring的上下文,包含了bean的定义和bean的实例。我们可以使用`ApplicationContext`来获取bean。例如: ```java ApplicationContext context = new ...

    spring在@Bean注解中initMethod调用方法异步

    2. `AsyncProxyBeanPostProcessor`:此处理器可能用于创建代理对象,确保异步初始化方法在正确的上下文中执行。代理对象能够拦截调用并将其转换为异步操作。 3. `BeanDefinitionUtil`:这个工具类可能包含了对bean...

    通过Spring上下文获取bean的实例对象

    通过Spring上下文获取bean的实例对象

    模拟spring工厂模式底层实现。

    它是Spring应用中最常用的上下文接口,通常通过读取XML、Java配置或者注解来初始化ApplicationContext。 Spring的Bean创建过程大致分为以下几个步骤: 1. **配置解析**:Spring会读取配置文件(如XML、Java配置或...

    Spring 应用上下文获取 Bean 的常用姿势实例总结

    本文将总结 Spring 应用上下文获取 Bean 的常用姿势实例,并对其实现方法和操作注意事项进行详细的分析和讲解。 一、从应用程序上下文中获取 Bean 在 Spring 框架中,有多种方式可以获取 Bean 对象。下面我们将...

    springboot 使用上下文获取bean

    Spring Boot 使用上下文获取 Bean 在 Spring Boot 项目中,有时候需要在 Spring 容器加载前就注入 Bean,这时候如果直接使用 @Autowire 注解,将会出现控制针异常。为了解决这个问题,我们可以创建一个 ...

    获得spring里注册Bean的四种方法

    首先,我们需要在类中定义一个 WebApplicationContext 变量,以便获取应用程序的上下文环境变量。然后,我们可以使用 ctx.getBean() 方法来获取指定名称的 Bean 对象。 ```java public class BaseDispatchAction ...

    在非spring注解类中使用spring容器中的bean_普通类中使用yml配置文件中的配置信息

    1. 通过`ClassPathXmlApplicationContext`或`FileSystemXmlApplicationContext`加载XML配置文件创建上下文。在Spring Boot应用中,通常使用`AnnotationConfigApplicationContext`加载基于注解的配置。 2. 如果你的类...

    详解Spring中bean的作用域

    Spring2.0 以后,增加了 session、request、global session 三种专用于 Web 应用程序上下文的 Bean。因此,默认情况下 Spring2.0 现在有五种类型的 Bean。当然,Spring2.0对 Bean 的类型的设计进行了重构,并设计出...

Global site tag (gtag.js) - Google Analytics