`
mywebcode
  • 浏览: 988261 次
文章分类
社区版块
存档分类
最新评论

11级_Java_曹建波 04.24 Spring的配置、生命周期、依赖注入bean的操作

 
阅读更多

使用Spring需要的jar

http://www.springsource.org/download下载spring,然后进行解压缩,在解压目录中找到下面jar文件,拷贝到类路径下

dist\spring.jar

lib\jakarta-commons\commons-logging.jar

如果使用了切面编程(AOP),还需要下列jar文件

lib/aspectj/aspectjweaver.jaraspectjrt.jar

lib/cglib/cglib-nodep-2.1_3.jar

如果使用了JSR-250中的注解,@Resource/@PostConstruct/@PreDestroy,还需要下列jar文件

lib\j2ee\common-annotations.jar

spring的配置文件模版

<?xml version="1.0"encoding="UTF-8"?>

<beansxmlns="http://www.springframework.org/schema/beans"

xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

xsi:schemaLocation="http://www.springframework.org/schema/beans

http://www.springframework.org/schema/beans/spring-beans-2.5.xsd">

.....

</beans>

该配置模版可以从spring的参考手册或spring的例子中得到。配置文件的取名可以任意,文件可以存放在任何目录下,但考虑到通用性,一般放在类路径下。

编写spring配置文件时,不能出现帮助信息

由于springschema文件位于网络上,如果机器不能连接到网络,那么在编写配置信息时候就无法出现提示信息,解决方法有两种:

1。让机器上网,eclipse会自动从网络上下载schema文件并缓存在硬盘上。

2。手动添加schema文件,方法如下:

windwos->preferences->myeclipse->filesand editors->xml->xmlcatalog

"add",在出现的窗口中的Key Type中选择URI,location中选"File system",然后在spring解压目录的dist/resources目录中选择spring-beans-2.5.xsd,回到设置窗口的时候不要急着关闭窗口,应把窗口中的Key Type改为Schema location,Key改为http://www.springframework.org/schema/beans/spring-beans-2.5.xsd

二、装配Bean

l 2.1 容纳你的bean

2.1.2 使用应用上下文()

ApplicationContext context =

newFileSystemXmlApplicationContext("

c:\foo.xml");

ApplicationContext context =

newClassPathXmlApplicationContext("

foo.xml");

l 2.1 容纳你的bean

2.1.1 bean工厂介绍

工厂设计模式,创建分发各种bean。配置好它们之

间的写作关系,参与bean的生命周期。

BeanFactory factory = new XmlBeanFactory(

newFileInputStream("beans.xml"));

bean工厂只把bean的定义信息载进来,用到的时候

才实例化。

factory.getBean("mybean");就可得到一个

bean

l 2.1 容纳你的bean

2.1.2 使用应用上下文

ApplicationCotext,spring更加高级的容器。功能

强大:

1.提供文本信息解析工具,包括对国际化支持。

2.提供载入文件资源的通用方法,如图片。

3.可以向注册为监听器的bean发送事件。

在很少的情况下,使用BeanFactory,如在移动设

备。

l 2.1 容纳你的bean

2.1.2 使用应用上下文()

三种经常用到的实现:

1.ClassPathXmlApplicationContext:从类路径中加载。

2.FileSystemXmlApplicationContext:从文件系统加载。

3.XmlWebApplicationContext:web系统中加载。

l 2.1 容纳你的bean

2.1.2 使用应用上下文()

ApplicationContext context =

newFileSystemXmlApplicationContext("

c:\foo.xml");

ApplicationContext context =

newClassPathXmlApplicationContext("

foo.xml");

l 2.1 容纳你的bean

2.1.2 使用应用上下文()

除了应用上下文提供的附加功能外,应用上下文

bean工厂的另一个重要区别是关于单例bean

如何被加载。

bean工厂延迟加载所有bean,直到getBean()

方法被调用。

应用上下文会在启动后预载入所有单例bean.这样可确

保应用不需要等待他们被创建。

l 2.1 容纳你的bean

2.1.3 bean的生命周期

bean被载入到容器中时,他的生命周期就开始

了。bean工厂在一个bean可以使用前完成很多

工作:

1.容器寻找bean的定义信息并实例化。

2.使用依赖注入,springbean定义信息配置bean的所有属性。

3.bean实现了BeanNameAware接口,工厂调用BeansetBeanName

()方法传递beanID

4.bean实现了BeanFactoryAware接口,工厂调用setBeanFactory()

方法传入工厂自身。

5.BeanPostProcessorbean关联,则它们的

postProcessBeforeInitialization()方法被调用。

6.bean指定了ini-method方法、,它将被调用。

7.最后,若有BeanPostProcessorbean关联,则它们的

postProcessAfterInitialization()方法被调用、。

l 2.1 容纳你的bean

2.1.3 bean的生命周期()

bean从工厂中删掉有两种方法:

1.bean实现了DisposableBean接口,

distroy()方法被调用。

2.如果指定了定制的销毁方法,就调用这个方法。

bean在应用上下文中的生命周期和在bean工厂

的生命周期唯一不同的是:若bean实现了

ApplicationContextAware()接口,

setApplicationContext()方法会被调用。

BeanSpring工厂中的生命周期

BeanSpring Bean应用上下文中的生命周期

l 2.2 基本装配

spring容器内拼凑bean叫做装配。装

bean的时候,需要告诉容器哪些bean

以及容器如何使用依赖注入将它们配合在

一起。

l 2.2 基本装配

2.2.1 使用XML装配

xml是最常见的spring应用系统配置源。

几种spring容器都支持使用xml装配bean,包括:

1.XmlBeanFactory:调用InputStream载入上下文

定义文件。

2.ClassPathXmlApplicationContext:从类路径载

入上下文定义文件。

3.XmlWenApplicationContext:web应用上下文

中载入定义文件。

l 2.2 基本装配

2.2.1 使用XML装配()

上下文定义文件的根元素是<beans>.<beans>有多

<bean>子元素。每个<bean>元素定义了一个

bean如何被装配到spring容器中。

<beans>

<bean id="foo" class="...Foo"/>

<bean id="bar" class="...Bar"/>

</beans>

l 2.2 基本装配

2.2.2 添加一个bean

bean的最基本的配置包括beanID和他的

全称类名。

<bean id="foo"class="...Foo"/>

beanidfoo

l 2.2 基本装配-scope

prototypesingletonrequestsessionglobal-session

spring中的bean缺省情况下是单例模式。始终返回一个实

例。若想返回不同的实例的话需要定义成原型模式。

beansingleton属性告诉上下文该bean是否为单例的。缺

省为true。若为false的话,为原型bean

<bean id="foo"class="...Foo" singleton="false"/>

<!– spring2.5 -->

<beanscope="prototype|single|..">

l 2.2 基本装配

2.2.2 添加一个bean()

使用原型bean会对性能产生影响,尽量不要把singleton设置为false,除非有必要。

l 2.2 基本装配

2.2.2 添加一个bean()

实例化与销毁

spring实例化bean或销毁bean时,有时需要作一些处理工作,因此spring可以在创建和拆卸bean的时候调用bean的两个生命周期方法。

<bean class="Foo" init-method destory-method>

<!-- spring2.5-->

@PostConstruct public void ini(){…}

@PreDestroy public void destroy(){…}

<bean

class="...CommonAnnotationBeanPostProcessor">

l 2.2 基本装配

2.2.2 添加一个bean()

spring也提供了两个接口来实现相同的功能:

InitializingBeanDisposableBean.

InitializingBean接口提供了一个afterPropertiesSet()方法。

DisposableBean接口提供了destroy().

不推荐使用该接口,它将你的beanspringAPI邦定在一起。

l 2.2 基本装配

2.2.3 通过set方法注入依赖

<bean>元素的< property >子元素指明了使用它们的set方法来注入。可以注入任何东西,从基本类型到集合类,甚至是应用系统的bean

l 2.2 基本装配

2.2.3 通过set方法注入依赖()

简单bean配置

配置bean的简单属性,基本数据类型和string

<bean id="foo" class="...Foo">

<property name="name">

<value>tom</value>

</property>

</bean>

l 2.2 基本装配

2.2.3 通过set方法注入依赖()

引用其它bean

<bean id="foo"class="...Foo">

<property name="name">

<ref bean="bar">

</property>

</bean>

<bean id="bar"class="...Bar">

</bean>

l 2.2 基本装配

2.2.3 通过set方法注入依赖()

内部bean

<bean id="foo" class="...Foo">

<property name="bar">

<beanclass="...Bar">

</property>

</bean>

这种方式的缺点是你无法在其它地方重用这个bar

例,原因是它是专门为foo而用。

分享到:
评论

相关推荐

    asp代码ASP家教信息管理系统(源代码+论文)

    asp代码ASP家教信息管理系统(源代码+论文)本资源系百度网盘分享地址

    基于ssm高校毕业选题管理系统.zip

    基于ssm高校毕业选题管理系统.zip

    基于旷视研究院领先的深度学习算法,提供满足多业务场景的预训练模型.zip

    人工智能毕业设计&课程设计

    tensorflow_model_optimization-0.1.3.dev0-py2.py3-none-any.whl

    Python库是一组预先编写的代码模块,旨在帮助开发者实现特定的编程任务,无需从零开始编写代码。这些库可以包括各种功能,如数学运算、文件操作、数据分析和网络编程等。Python社区提供了大量的第三方库,如NumPy、Pandas和Requests,极大地丰富了Python的应用领域,从数据科学到Web开发。Python库的丰富性是Python成为最受欢迎的编程语言之一的关键原因之一。这些库不仅为初学者提供了快速入门的途径,而且为经验丰富的开发者提供了强大的工具,以高效率、高质量地完成复杂任务。例如,Matplotlib和Seaborn库在数据可视化领域内非常受欢迎,它们提供了广泛的工具和技术,可以创建高度定制化的图表和图形,帮助数据科学家和分析师在数据探索和结果展示中更有效地传达信息。

    tensorflow_model_analysis-0.15.0-py3-none-any.whl

    Python库是一组预先编写的代码模块,旨在帮助开发者实现特定的编程任务,无需从零开始编写代码。这些库可以包括各种功能,如数学运算、文件操作、数据分析和网络编程等。Python社区提供了大量的第三方库,如NumPy、Pandas和Requests,极大地丰富了Python的应用领域,从数据科学到Web开发。Python库的丰富性是Python成为最受欢迎的编程语言之一的关键原因之一。这些库不仅为初学者提供了快速入门的途径,而且为经验丰富的开发者提供了强大的工具,以高效率、高质量地完成复杂任务。例如,Matplotlib和Seaborn库在数据可视化领域内非常受欢迎,它们提供了广泛的工具和技术,可以创建高度定制化的图表和图形,帮助数据科学家和分析师在数据探索和结果展示中更有效地传达信息。

    粒子群算法.docx 粒子群算法(Particle Swarm Optimization,PSO)是一种优化算法,受到鸟群或鱼

    粒子群算法 粒子群算法(Particle Swarm Optimization,PSO)是一种优化算法,受到鸟群或鱼群等群体行为的启发。该算法通过模拟群体中个体之间的合作和竞争来搜索最优解。粒子群算法通常用于解决连续优化问题。 ### 工作原理: 1. **初始化**:随机生成一群粒子(也称为个体),每个粒子代表搜索空间中的一个解,并随机初始化其位置和速度。 2. **评估**:根据每个粒子的位置,计算其对应的适应度值(目标函数值)。 3. **更新**:根据个体最优和全局最优的情况,更新每个粒子的速度和位置。粒子会根据自己历史最好的位置以及整个群体历史最好的位置进行调整,以期望更好的搜索方向。 4. **迭代**:重复评估和更新步骤,直到满足停止条件(如达到最大迭代次数、目标函数值足够接近最优解等)。 ### 主要参数: - 粒子数量(Population Size):群体中粒子的数量,通常越大越容易找到全局最优解,但计算成本也会增加。 - 惯性权重(Inertia Weight):控制粒子运动的惯性,平衡局部搜索和全局搜索能力。通常随着迭代次数增加而逐渐减小。

    20210327 AI-for-Drug-Discovery-2020.pdf

    20210327 AI-for-Drug-Discovery-2020

    tensorflow_model_optimization-0.1.2-py2.py3-none-any.whl

    Python库是一组预先编写的代码模块,旨在帮助开发者实现特定的编程任务,无需从零开始编写代码。这些库可以包括各种功能,如数学运算、文件操作、数据分析和网络编程等。Python社区提供了大量的第三方库,如NumPy、Pandas和Requests,极大地丰富了Python的应用领域,从数据科学到Web开发。Python库的丰富性是Python成为最受欢迎的编程语言之一的关键原因之一。这些库不仅为初学者提供了快速入门的途径,而且为经验丰富的开发者提供了强大的工具,以高效率、高质量地完成复杂任务。例如,Matplotlib和Seaborn库在数据可视化领域内非常受欢迎,它们提供了广泛的工具和技术,可以创建高度定制化的图表和图形,帮助数据科学家和分析师在数据探索和结果展示中更有效地传达信息。

    Linux创建虚拟机的步骤

    Linux创建虚拟机的步骤

    基于SpringBoot的校园二手书交易管理系统设计源码

    这是一个基于SpringBoot开发的校园二手书交易管理系统,使用Java语言,包含102个文件。主要文件类型包括39个Java源文件、23个HTML文件、10个PNG图片文件、9个XML文件、9个JavaScript文件、4个CSS文件、2个Markdown文档、2个JPG图片文件、1个gitignore文件和1个SVG文件。该项目简洁易用,采用的技术经典,非常适合Java项目入门学习和企业级Java开发熟悉,提供了二手书交易管理、用户认证、数据统计等功能,旨在为校园内的二手书交易提供一个便捷、安全的平台。

    基于SSM的旅游管理系统.zip

    基于SSM的旅游管理系统.zip

    基于ssm框架网络财务设计与实现.zip

    基于ssm框架网络财务设计与实现.zip

    三菱PLC例程源码PLC同变频器通讯程序3

    三菱PLC例程源码PLC同变频器通讯程序3本资源系百度网盘分享地址

    基于ssm+jsp网上茶叶销售平台.zip

    基于ssm+jsp网上茶叶销售平台.zip

    通信专业毕业设计(论文)-企业网通信方案设计

    随着网络和科学技术的飞速发展,网络建设作为信息化建设的基础,也越来越受到企业的重视,网络结构和网络信息安全都是企业信息化建设中需要解决的重要问题。 本设计出于对众宇通讯公司长期稳定发展的考虑,针对公司的现状和发展需求,为公司设计了一个稳定的、相对安全的、可扩展并且可以支撑必要的网络应用的网络结构。在此次设计中,主要的运用到的技术与实现功能有:(1)汇聚交换机上使用DHCP技术,使各个接入层设备可自动获取相应的IP地址,也避免了IP地址的冲突;(2)运用VRRP技术,增强网络的连续性和稳定性,实现多链路备份冗余和网关备份冗余;(3)运用MSTP技术,将不同的VLAN与相应实例捆绑,避免了网络环路和广播风暴的产生;(4)通过防火墙技术,实现了企业内部与外部网络之间的信息交互安全。除此之外,还进行了VLAN的划分,端口安全设置,ACL访问限制,NAT地址转换,使用OSPF协议、静态路由等网络配置。 本论文基于华为ENSP仿真模拟软件,充分考虑到了整个公司网络今后的实用性、安全性以及可扩展性。利用所学的相关知识和网络技术,对众宇通讯公司的网络进行模拟设计。此设计根据三层网络结构来搭建网络拓扑,

    Gromacs中文手册5.0.2.pdf

    Gromacs中文手册5.0.2

    三菱PLC例程源码八层以下货梯通用程序(奥菱达)

    三菱PLC例程源码八层以下货梯通用程序(奥菱达)本资源系百度网盘分享地址

    seg.v

    seg.v

    ftqqzx.zip

    ftqqzx.zip

    基于tensorflow深度学习的中文机器阅读理解-完形填空.zip

    人工智能毕业设计&课程设计

Global site tag (gtag.js) - Google Analytics