Spring容器和被管理的Bean

Unity适配Nintendo Switch平台开发 查看文档、下载SDK,都需要账号登录。 阅读详情

本文摘自:李刚 著 《轻量级 Java EE企业应用实战 Struts2+Spring+hibernate整合开发》

 

 

        bean 是Spring 管理的基本单位,在Spring 的J2EE应用中,所有的组件都是bean,bean 包括数据源、Hibernate 的SessionFactory 及事务管理器等。Spring 里的bean 是非常广义的概念,任何的Java 对象,Java 组件都可被当成bean 处理。甚至这些组件并不是标准的JavaBean。

        整个应用中各层的对象都处于Spring 的管理下,这些对象以bean 的方式存在。Spring负责创建bean 实例,并管理其生命周期。bean 在Spring 容器中运行时,无须感受Spring容器的存在,一样可以接受Spring 的依赖注入,包括bean 属性的注入,合作者的注入及依赖关系的注入等。

        Spring 的容器有两个接口:BeanFactory和ApplicationContext ,这两个接口的实例也被称为Spring 上下文,它们都是产生bean 的工厂, bean 是Spring 工厂产生的实例。在Spring 产生bean 实例时,需要知道每个bean 的实现类,而bean 实例的使用者面向接口,无须关心bean 实例的实现类。因为Spring 工厂负责维护bean 实例的实例化,所以使用者无须关心实例化。

        bean 定义通常使用XML 配置文件。正确定义的bean由Spring 提供实例化,以及依赖关系的注入。bean实例通过BeanFactory 访问。对于大部分J2EE应用,bean 通过AppliactionContext 提供访问,因为AppliactionContext 是BeanFactory 的子接口,提供比BeanFactory 更多的功能。

 

 

一. Spring容器

 

        Spring 的容器最基本的接口就是:BeanFactory。BeanFactory 负责配置、创建及管理bean,它有个子接口: ApplictionContext ,因此也被称为Spring 上下文。另外,Spring容器还负责管理bean与bean之间的依赖关系。

        BeanFactory 接口包含如下的基本方法。

       (1)public boolean containsBean(String name):判断Spring 容器是否包含id 为name 的bean 定义。

       (2)public Object getBean(String name):返回容器id 为name 的bean 。

       (3)public Object getBean(String name, Class requiredType):返回容器中id 为name ,并且类型为required可pe 的bean 。

       (4)public Class getType(String name) :返回容器中id 为name的bean的类型。

       调用者只需使用getBean 方法即可获得指定bean的引用,无须关心bean 的实例化过程。即bean 实例的创建过程完全透明。

        BeanFactory有很多实现类,通常使用org.springframework.beans.factory.xml.XmlBeanFactory 类。但对大部分J2EE 应用而言,推荐使用ApplicationContext,因为其是BeanFactory 的子接口,其常用的实现类是org.springframework.context.support.FileSystemXmlApplicationContext。

        创建BeanFactory的实例时,必须提供Spring 容器管理bean的详细配置信息。Spring的配置信息通常采用XML 配置文件来设置。因此,在创建BeanFactory 实例时,应该提供XML 配置文件作为参数,XML 配置文件通常使用Resource 对象传入。

        Resource 接口:用于访问配置文件资源。

        对于大部分J2EE 应用而言,可在启动Web 应用时自动加载ApplicationContext实例,接受Spring管理的bean 无须知道ApplicationContext的存在,也一样可以利用ApplicationContext的管理。对于独立的应用程序,也可通过如下方法来实例化BeanFactory:

//以指定路径下bean.xml配置文件为参数,创建文件输入流
		InputStream is = new FileInputStream("beans.xml");
        //以指定的文件输入流is ,创建Resource 对象
		InputStreamResource isr = new InputStreamResource(is);
        //以Resource 对象作为参数,创建BeanFactory 的实例
		XmlBeanFactory factory = new XmlBeanFactory(isr);

          或者采用如下方法:

//搜索CLASSPATH路径,以CLASSPATH路径下的beans.xml 文件创建Resource对象
		ClassPathResource res = new ClassPathResource("beans.xml");
		// 以Resource对象为参数,创建BeanFactory实例
		XmlBeanFactory factory = new XmlBeanFactory(res);

         如果应用里有多个属性配置文件,则应该采用Beanfactory的子接口ApplicationContext来创建BeanFactory的实例, ApplicationContext通常使用如下两个实现类。

        (1)FileSystemXmlApplicationContext:以指定路径的XML 配置文件创建ApplicationContext 。

        (2)ClassPathXmlApplicationContext:以CLASSPATH 路径下的XML 配置文件创建ApplicationContext 。

        如果需要同时加载多个XML 配置文件,可以采用如下方式:

//搜索CLASSPATH 路径,以CLASSPATH 路径下的applicationContext.xml
		//service.xml 文件创建ApplicationContext
		ClassPathXmlApplicationContext appContext =
			new ClassPathXmlApplicationContext(
			new String [] {" applicationContext. xml" , "service.xml"});
		//事实上, ApplicationContext 是BeanFactory 的子接口,支持强制类型转换
		BeanFactory factory = (BeanFactory)appContext;

        当然也可支持从指定路径来搜索特定文件加载:

//指定路径下的applicationContext.xml, service.xml文件创建ApplicationContext
		FileSystemXmlApplicationContext appContext =
		new FileSystemXmlApplicationContext(
		new String[] {"applicationContext.xml" , "service.xml"});
		//事实上, ApplicationContext是BeanFactory的子接口,支持强制类型转换
		BeanFactory factory = (BeanFactory)appContext;

        下面是Spring 最简单的配置文件:

<!--XML文件的文件头部分,指定了Xml文件的编码值-->
<?xml version = "1.0" encoding = "gb2312"?>
<!--指定Spring的xml配置文件的dtd-->
<!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN"
    "http://www.springframework.org/dtd/spring-beans.dtd">
	<!--beans元素是Spring配置文件的根元素,
	所有的Spring的配置文件都应该按以下结构书写-->
<beans>
</beans>


 

 

二. bean的基本定义

 

        <beans/> 元素是Spring 配置文件的根元素, <bean> 元素是<beans/> 元素的子元素,<beans/> 元素可以包含多个<bean/>元素, <bean/>子元素定义一个bean ,每个bean 是接受Spring容器里的Java 实例。

        在定义bean时,通常必须指定以下两个属性:

        (1)id: id 属性是确定该bean 的唯一标识符,容器对bean 管理、访问及该bean 的依赖关系,都通过该属性完成。bean 的id 属性在Spring 容器中是唯一的。

        (2)class:class 属性指定该bean 的具体实现类,这里不能是接口。通常情况下,Spring会直接使用new 关键字创建该bean 的实例,因此,这里必须提供bean 实现类的类名。

        下面给出了包含两个bean 定义的简单配置文件:

<!--XML文件的文件头部分,指定了Xml文件的编码值-->
<?xml version = "1.0" encoding = "gb2312"?>
<!--指定Spring的xml配置文件的dtd-->
<!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN"
    "http://www.springframework.org/dtd/spring-beans.dtd">
	<!--beans元素是Spring配置文件的根元素,
	所有的Spring的配置文件都应该按以下结构书写-->
<beans>
<!--定义第一个java实例bean1,该java实例对应的实现类是ppp.Test1-->
<bean id="bean1" class = "ppp.Test1"/>
<!--定义第二个java实例bean2,该java实例对应的实现类是ppp.Test2-->
<bean id="bean2" class = "ppp.Test2"/>
</beans>

        在Spring 容器集中管理bean的实例化时, bean实例可以通过BeanFactory 的getBean(String beanid)方法得到。此时,BeanFactory 将变成简单工厂模式里的工厂,程序只需要获取BeanFactory引用,即可获得Spring 容器管理全部实例的引用,从而使程序不需要与具体实例的实现过程藕合。在大部分J2EE 应用中,当应用启动时,会自动创建Spring 容器实例,组件之间直接以依赖注入的方式藕合,甚至无须访问Spring 容器。

 

 

三. 定义Spring中的Bean 的行为方式

 

        在Spring 1. 2 版本中, bean在Spring 的容器中有两种基本行为。singleton:单态和non-singleton 或prototype:原型。

        (1)如果一个bean 被设置成non-singleton 行为,当程序每次请求该id的bean 时,Spring都会新建一个bean 实例,然后返回给程序。在这种情况下,Spring 容器仅仅使用new 关键字创建bean 实例,一旦创建成功,容器不再跟踪实例,也不会维护bean 实例的状态。

        通常要求将Web 应用的控制器bean 配置成non-singleton 行为。因为,每次HttpServletRequest 都需要系统启动一个新Action 来处理用户请求。

        (2)如果一个bean 被设置成singleton时,整个Spring 容器里只有一个共享实例存在,程序每次请求该id 的bean时, Spring都会返回该bean 的共享实例。该容器负责跟踪单态bean 实例的状态,维护bean 实例的生命周期。

         如果不指定bean 的基本行为,Spring 默认使用singleton行为。在创建Java实例时,需要进行内存申请:销毁实例时,需要完成垃圾回收,这些工作都会导致系统开销的增加。因此,non-singleton 行为的bean创建、销毁时代价比较大。而singleton行为的bean实例成功后,可以重复使用。

         关于自定义bean 的生命周期行为,请参看本人的相关博客。设置bean 的基本行为,是通过singleton 属性来指定, singleton 属性只接受true 或false 值。例如在下面配置文件中配置singleton 和non-singleton:

<!--XML文件的文件头部分,指定了Xml文件的编码值-->
<?xml version = "1.0" encoding = "gb2312"?>
<!--指定Spring的xml配置文件的dtd-->
<!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN"
    "http://www.springframework.org/dtd/spring-beans.dtd">
	<!--beans元素是Spring配置文件的根元素,
	所有的Spring的配置文件都应该按以下结构书写-->
<beans>
<!--定义第一个java实例p1,该java实例对应的实现类是ppp.Person-->
<bean id="p1" class = "ppp.Person"/>
<!--定义第二个java实例p2,该java实例对应的实现类是ppp.Person
                    该类为non-singleton-->
<bean id="p1" class = "ppp.Person" singleton = "false"/>

        主程序通过如下代码来测试两个bean 的区别:

//搜索ClASSPATH路径,以ClASSPATH路径下的beans.xml文件创建Resource对象
		ClassPathResource res = new ClassPathResource("beans.xml");
		//以Resource对象为参数,创建Beanfactory实例
		XmlBeanFactory beanFactory = new XmlBeanFactory(res);
		//判断两次请求Singleton的行为的bean实例是否相等
		System.out.println(beanFactory.getBean("p1")==beanFactory.getBean("p1"));
		//判断两次请求non-singleton行为的bean实例是否相等
		System.out.println(beanFactory.getBean("p2")== beanFactory.getBean("p2"));

        程序执行结果为:true 和 false。

        对于singleton行为的bean,每次请求该id 的bean时,都将返回同一个共事实例,因而两次获取的bean 实例完全相同:但对non-singleton 行为的bean,每次请求该id 的bean时都将产生新的实例,因此两次请求获得bean实例不相同。

 

四. 深入理解bean

   

       Spring 容器对bean没有特殊要求,甚至不要求该bean 像标准的JavaBean一一必须为每个属性提供对应的getter和setter 方法。

        Spring中的bean 比JavaBean 的功能要强大,用法也更复杂。当然,传统JavaBean也可作为普通的Spring bean ,可接受Spring管理。下面的代码演示了Spring的bean实例,该bean实例是数据源,提供数据库连接:

<!--下面是标准xml文件头-->
<?xml version = "1.0" encoding = "gb2312"?>
<!--下面是一行定义Spring的xml配置文件的dtd-->
<!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN"
    "http://www.springframework.org/dtd/spring-beans.dtd">
<!--以上三行对于所有的spring配置文件都是相同的-->
<!--spring配置文件的根元素-->
<!--beans元素是Spring配置文件的根元素,所有的Spring配置文件都应该以如下的结构书写-->
<beans>
<!--配置id为datasource的bean,该bean是一个数据源实例-->
   <bean id = "datasource" class = "org.commons.dbcp.BasicDataSource"
         destroy-method = "close">
                 <!--确定数据源驱动-->
		 <property name = "driverClassName">
		      <value>com.mysql.jdbc.Driver</value>
         </property>
                 <!--确定连接数据源的URL-->
		 <property name = "url">
                          <!--j2ee是需要连接的数据库名-->
			  <value>jdbc:mysql://localhost:3306/j2ee</value>
	     </property>

                 <!--确定连接数据库的用户名-->
		 <property name = "username">
                          <!--root是连接数据库的用户名-->
			  <value>root</value>
	     </property>
                 <!--确定连接数据库的密码-->
		 <property name = "password">
                          <!--pass是连接数据库的密码-->
			  <value>pass</value>
	     </property>
	</bean>
</beans>

        主程序部分由BeanFactory来获取该bean 的实例,获取实例时使用bean的唯一标识符: id 属性。该属性是bean 实例在容器中的访问点。下面是主程序部分:

//实例化Spring容器。Spring容器负责实例化bean
		ApplicationContext ctx = new FileSystemXmlApplicationContext("bean.xml");
		//通过bean id获取bean实例,并强制类型转化为DataSource
		DataSource ds = (DataSource)ctx.getBean("datasource");
		//通过datasource来获取数据库连接
		Connection conn = ds.getConnection();
		//通过数据库连接获取statement
		java.sql.Statement stmt  = conn.createStatement();
		//使用statement执行sql语句
		stmt.execute("insert into mytable values('wdda2')");
		//清理资源,回收数据库连接资源
		if(stmt != null) stmt.close();
		if(conn != null) conn.close();

        从该实例可以看出, Spring 的bean 远远超出值对象的JavaBean范畴,此时bean可以代表应用中的任何组件及任何资源实例。

        虽然Spring 对bean没有特殊要求,但笔者还是建议在Spring 中的bean应满足如下几个原则:

        (1)每个bean实现类都应提供无参数的构造器。

        (2)接受构造注入的bean,则应提供对应的构造函数。

        (3)接受设值注入的bean,则应提供对应的setter方法,并不强制要求提供对应的getter方法。

        传统的JavaBean和SpringBean存在如下的区别。

        (1)用处不同:传统JavaBean 更多地作为值对象传递参数,而Spring 中的bean用处几乎无所不在,任何应用组件都可被称为bean。

        (2)写法不同:传统JavaBean 作为值对象,要求每个属性都提供getter 和setter 方法;但Spring 中的bean 只需为接受设值注入的属性提供setter 方法。

       (3)生命周期不同:传统lavaBean作为值对象传递,不接收任何容器管理其生命周期;Spring 中的bean由Spring 管理其生命周期行为。

 

PS:限于篇幅,关于spring创建实例将单独作为一篇文章发布。

 

 

MATLAB双目相机标定:从工具箱实战到参数精解 本文详细讲解了使用MATLAB进行双目相机标定的完整实战流程与参数精解。从拍摄合格的棋盘格图像、设置关键参数(如径向畸变系数),到分析重投影误差、优化结果并正确导出和使用内外参,提供了从操作到原理的全面指导,帮助读者为立体视觉应用奠定精准基础。 阅读详情

相关推荐

脑机接口(BCI)从原理到开发实战 09|SSVEP应用:通过视觉刺激控制设备

本文介绍了稳态视觉诱发电位(SSVEP)脑机接口技术。SSVEP是一种高效的非侵入式BCI范式,当用户注视特定频率闪烁的视觉刺激时,大脑枕叶会产生对应的节律性响应。文章详细阐述了SSVEP的神经机制、刺激范式设计、数据预处理方法,重点讲解了典型相关分析(CCA)这一核心识别算法。相比运动想象和P300范式,SSVEP具有信息传输率高(60-100 bits/min)、信号稳定、无需训练等优势,在高速拼写、设备控制等领域应用广泛。文章还提供了完整的电极选择、滤波、分段等预处理流程,以及CCA和滤波器组CCA的

小明的博客 1356

Spring管理bean

场景一 : 一个接口的多实例Bean的选择 首先定义一个接口和两个简单的实现类,并演示一下我们通常的用法 一个输出的接口定义如下 public interface IPrint { void print(String msg); } 对应给以下两个实现 @Service public class ConsolePrint implements IPrint { @Override public void print(String msg) { System.out.println("console prin

u014365523的博客 1337

AU混响终极指南:从‘干声’到‘空间感’,用总音轨和发送技巧打造专业人声

本文详细介绍了如何在Adobe Audition(AU)中使用混响效果器,通过总音轨和发送技巧将‘干声’转化为具有专业‘空间感’的人声。从混响基础原理到总线架构设置,再到精细控制和自动化调整,全面解析了提升音频质量的实用技巧,适用于音乐制作、播客和内容创作。

weixin_30512089的博客 333

spring Bean 管理

1.Bean 管理指的是两个操作 (1)Spring 创建对象 (2)Spirng 注入属性 2、Bean的实例化 1.构造器实例化 构造器实例化是指Spring容器通过Bean对应类中默认的无参构造方法来实例化Bean。下面通过一个案例来演示Spring容器是如何通过构造器来实例化Bean的。 (1)在Eclipse中,创建一个名为chapter02的Web项目,在该项目的lib目录中加入Spring支持和依赖的JAR包。 (2)在chapter02项目的src目录下,创建一个com.it..

m0_62520968的博客 3663

国土变更调查中六类拓扑错误的成因分析与高效修复实践

本文深入分析了国土变更调查中六类拓扑错误的成因,包括边界不一致和不规则图形等常见问题,并提出了高效的自动化修复实践。通过智能咬合算法、引力-斥力平衡模型等核心技术,显著提升了修复效率,节省人工质检时间70%。文章还分享了实战中的避坑指南和黄金法则,为相关从业人员提供了宝贵经验。

weixin_29202213的博客 359

【电机学复习笔记】同步电机的特性及参数的求取

同步电机的主要特性包括:空载特性、短路特性、零功率因数负载特性、外特性和调整特性。 基于以上特性我们可以实现: 从空载特性和短路特性求同步电抗的不饱和值和短路比; 从零功率因数负载特性和空载特性确定保梯电抗(定子漏抗)和电枢反应电动势

Pantrick_的博客 2万+

Spring中的Bean的管理(史上最全)

1.BeanFactory接口本文介绍Spring里的BeanFactory。包括:BeanFactory 和 FactoryBean的ApplicationContext的委托。Spring的本质是一个bean工厂(beanFactory)或者说bean容器,它按照我们的要求,生产我们需要的各种各样的bean,提供给我们使用。只是在生产bean的过程中,需要解决bean之间的依赖问题,才引入了依赖注入(DI)这种技术。

mr_xioabai的博客 3077

用示波器抓取同步Buck自举电容波形:从充电回路到SW节点振铃的完整分析

本文通过实测TI TPS54561和MPS MPQ4572同步Buck芯片,详细解析了自举电容在充电、维持和放电三个工作阶段的波形特征。重点揭示了电感泄放回路与充电回路重叠时,在SW节点引发的振铃现象及其产生机理,并提供了串联阻尼电阻等有效的工程抑制方法。文章结合示波器实测,为硬件工程师提供了从波形观测到问题调试的完整实践指南。

weixin_29276847的博客 374

Spring 中的 Bean

我们回顾下,什么是 Bean?被 Spring IoC 管理的对象,就是 Bean。一个 Spring IoC 容器中管理着一个或多个 Bean,这些 Bean 是由我们提供给容器的配置元数据创建的(比如以 XML <bean /> 形式定义的 Bean)。以上,就是本文的所有内容,主要介绍了 Spring 中 Bean 的概念和 Bean 的定义属性。Bean 由配置元数据创建,比如以XML形式定义的 Bean。

bjmsb79的博客 1708

在 SAP S/4HANA Private Cloud 中把标准 CDS View 发布为 OData:可操作的四条路径与完整示例

在 ADT 中创建。

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 726

游戏引擎揭秘:大厂为何死磕自研?

游戏引擎本质与商业价值解析 游戏引擎是集成了渲染、物理、动画等核心功能的开发工具包,其价值在于让开发者免于重复编写底层代码,专注于游戏内容创作。商业引擎(如Unity/Unreal)虽降低了开发门槛,但头部厂商仍坚持自研引擎,主要基于以下考量: 经济性:长期项目分摊自研成本后,比商业引擎分成更划算; 可控性:完全掌握底层代码,能针对性优化核心玩法需求; 技术壁垒:专属引擎成为厂商的竞争优势,如米哈游的跨平台渲染技术; 项目适配:超大型游戏(开放世界/MMO)需要深度定制解决方案。 这种"短期高投入

本博客聚焦游戏开发技巧、创业实战心得及大学热门课程干货。这里既有技术深度,也有思维广度,无论你是开发者、创业者还是高校学子,都能在这里找到适合自己的成长之路! 263

将Bean交给Spring容器管理有几种方式?

前两种方式,大家用的可能比较多,也是平时开发中必须要知道的,@Import注解用的可能不是特别多了,但是也是非常重要的,在进行Spring扩展时经常会用到,它经常搭配自定义注解进行使用,然后往容器中导入一个配置文件。他是所有Spring Bean的容器根接口,给Spring 的容器定义一套规范,给IOC容器提供了一套完整的规范,比如我们常用到的getBean方法等。方法,然后将我们要导入的类的全限定名写在里面即可,实现起来也是非常简单。注解的源码中,说的已经很清楚了,感兴趣的可以看下,我们实现一个。

Jan's的博客 1312

【推荐100个unity插件】Unity URP(通用渲染管线)的基于物理的天地和预计算大气散射——UnityPhysicallyBasedSkyURP

本文介绍了Unity URP(通用渲染管线)中基于物理的天地和预计算大气散射的实现方法。该插件提供物理天空、大气散射、高度雾效、动态天空反射和环境光等功能,要求Unity 2022.3及以上版本,支持着色器模型3.5+。使用步骤包括:添加渲染器功能、配置Volume组件(天空、雾效等),并建议太阳强度设为3、曝光为0作为初始设置。插件已在GitHub和Gitee开源,附带详细配置截图和效果展示。文末推荐了多个Unity开发相关专栏,涵盖游戏开发全领域知识。作者向宇提供了博客链接,欢迎交流学习问题。

向宇的博客,专注php/web全栈 unity游戏开发,欢迎大家评论纠错 1229

什么是Spring Bean

特点说明是什么被 Spring 容器管理的对象本质一个普通的 Java 对象如何创建@Component@Bean、XML管理方式生命周期、作用域、依赖注入应用场景MVC 控制器、Service 层、DAO 层、配置类、工具类等都可以是 Bean想更深入了解 Spring Bean 的生命周期、作用域(如singletonvsprototype)、或者 Bean 的懒加载、自动装配原理等?我可以继续讲~

m0_69529796的博客 778

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

Probability and Statistics - 4th edition

Probability and Statistics - 4th edition

【Spring】普通bean、FactoryBean、BeanFactory的区别与联系

在Spring中这三点比较容易混淆:一. FactoryBean、BeanFactory的区别其实这两点没有什么联系,只是命名上比较相似,所以常常被拿出来比较。BeanFactoryBeanFactory是IOC最基本的容器,负责生产和管理bean,它为其他具体的IOC容器实现提供了最基本的规范,例如DefaultListableBeanFactory, XmlBeanFactory, Applic

惜暮 5003

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

Spring及Spring boot Bean概念

bean 是一个被实例化,组装,并通过 Spring IoC 容器所管理的对象。这些 bean 是由用容器提供的配置元数据创建的

qq_44587855的博客 534

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

spring原理机制

原文转自:http://blog.youkuaiyun.com/y13530828499/article/details/6648155 1,关于spring容器: spring容器是Spring的核心,该 容器负责管理spring中的java组件, ApplicationContext ctx  = new ClassPathXmlApplicationContext("bean.xml");//

nrain2的博客 2万+

Spring中的Bean的生命周期

Spring中的Bean的生命周期 Bean 容器找到配置文件中的 Spring Bean 的定义 Bean 容器利用 Java Reflection API 创建 Bean的实例 如果涉及到一些属性值, 利用 set() 方法设置属性值 如果 Bean 实现了 BeanNameAware 接口, 调用 SetBeanName() 方法传入 Bean 的名字 如果实现了其他的 *Aware 接口, 就调用相应的方法 如果有和加载这个 Bean 的 Spring 容器相关的 BeanPostProces

始末丶Yzx的博客 167

Spring注解2---@Configuration&@Bean

Spring的@Bean注解用于告诉方法,产生一个Bean对象,然后这个Bean对象交给Spring管理。产生这个Bean对象的方法Spring只会调用一次,随后这个Spring将会将这个Bean对象放在自己的IOC容器中。 SpringIOC 容器管理一个或者多个bean,这些bean都需要在@Configuration注解下进行创建,在一个方法上使用@Bean注解就表明这个方法需要交给Spr...

MarkZP 307

如何将我们自己生成的对象交给spring管理,或者是说加入到spring ioc容器中[spring总结]

spring ioc容器中的bean对象和我们普通创建的对象是不一样的,有时候我们需要把自己创建的对象转换成bean对象,或者加入到ioc容器中,让spring帮我们管理,怎么办 一、 通过 @Bean注解,示例: @Configuration public class RedisConfig { @SuppressWarnings({ "rawtypes", "unchecked" }) @Bean public RedisTemplate redisTemplate..

xzb5566的专栏 1193

spring 随笔(一) bean & Dependency Injection

1,一切都是Bean Bean是Spring应用程序中(其实是Spring容器中)的基本元素,在Spring框架上运行的应用程序,就是由一个又一个的Bean组合在一起、像搭积木一样堆出来的。所有的Bean都由Spring的核心容器负责管理、创建、销毁,同时Bean之间的相互依赖也由Spring容器中的依赖注入功能自动管理。 1.1bean的作用域 lsingleton:定义b

liuhenghui5201的专栏 4720

Spring核心容器之IOC详解

Spring核心容器之IOC详解

小钟不想敲代码 728

二、IOC、IOC容器、Bean、DI

容器负责对象的创建、初始化等一系列工作,其中包含了数据层和业务层的类对象。提供对象,此过程中对象创建控制权由程序转移到外部,此思想称为控制反转。就反转控制了数据层对象的创建权这种思想就是控制反转。像这种在容器中建立对象与对象之间的绑定关系就要用到。创建了一个容器用来存放所创建的对象,这个容器就叫。之间的依赖关系的整个过程,称为依赖注入。依赖注入,绑定对象与对象之间的依赖关系。业务层要用数据层的类对象,以前是自己。业务层要用数据层的类对象,以前是自己。控制反转,控制反转的是对象的创建权。

qq_59533901的博客 246

Spring实战——byType规则

一配置 <?xml version="1.0" encoding="GBK"?> <beans xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://www.springframework.org/schema/beans" xsi:schemaLocation="http...

实践求真知 835

Spring注解@RequestMapping

可以把类注册为bean的注解 @component 把普通pojo实例化到spring容器中 @controller 控制器(注入服务) @service 服务(注入dao) @repository dao(实现dao访问) 增强bean的注解 @RequestMapping指定访问路径 需要搭配@controller使用 如果只有@controller就没有请求路径 如果只有@RequestMapping注解在找调用链的时候会找不着 可以成为bean的只能是component类型 在这写死的只能识别c

计算机王的博客 1037

spring-study-01 第一个示例

1 安装JDK,并完成配置 2 安装STS,并完成相应的配置STS 3 启动,创建java project 4 创建包com.zfh.spring.chapter01 5 创建文件夹lib,复制所有spring4.2.0的jar包到lib目录下,然后添加到build path中 6创建接口和类,以及驱动类,创建配置文件,完成IOC配置,然后就可以测试了 IHelloMessage.java pa...

fhzheng for c java javascript sql html css 464
上一篇: Spring的核心机制:依赖注入(Dependency Injection)
下一篇: Servlet介绍
IMFuckingHigh
博客等级 码龄18年 85粉丝 21原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值