- 浏览: 887542 次
- 性别:
- 来自: 北京
文章分类
- 全部博客 (687)
- java (127)
- servlet (38)
- struts (16)
- spring (22)
- hibernate (40)
- javascript (58)
- jquery (18)
- tomcat (51)
- 设计模式 (6)
- EJB (13)
- jsp (3)
- oracle (29)
- RUP (2)
- ajax (3)
- java内存管理 (4)
- java线程 (12)
- socket (13)
- path (5)
- XML (10)
- swing (2)
- UML (1)
- JBPM (2)
- 开发笔记 (45)
- Note参考 (15)
- JAXB (4)
- Quartz (2)
- 乱码 (2)
- CSS (2)
- Exception (4)
- Tools (7)
- sqlserver (3)
- DWR (7)
- Struts2 (47)
- WebService (2)
- 问题解决收藏 (7)
- JBOSS (7)
- cache (10)
- easyUI (19)
- jQuery Plugin (11)
- FreeMarker (6)
- Eclipse (2)
- Compass (2)
- JPA (1)
- WebLogic (1)
- powerdesigner (1)
- mybatis (1)
最新评论
-
bugyun:
受教了,谢谢
java 正则表达式 过滤html标签 -
xiongxingxing_123:
学习了,感谢了
java 正则表达式 过滤html标签 -
wanmeinange:
那如果无状态的。对同一个任务并发控制怎么做?比如继承Quart ...
quartz中参数misfireThreshold的详解 -
fanjieshanghai:
...
XPath 元素及属性查找 -
tianhandigeng:
还是没明白
quartz中参数misfireThreshold的详解
今天继续学习Spring,黎老师对Spring中比较重要的部分都进行了讲解,实例化Spring容器的方式,实例化bean的方式,Bean的作用域等。并进行了举例,通过对Spring和以前项目的学习,在项目中可以使用Sping,使项目功能的实现更简单,遵循MVC模式。
使用Spring需要的jar
可以到http://www.springsource.org/download下载spring,然后进行解压缩,在解压目录中找到下面jar文件,拷贝到类路径下
dist\spring.jar
lib\jakarta-commons\commons-logging.jar
如果使用了切面编程(AOP),还需要下列jar文件
lib/aspectj/aspectjweaver.jar和aspectjrt.jar
lib/cglib/cglib-nodep-2.1_3.jar
如果使用了JSR-250中的注解,如@Resource/@PostConstruct/@PreDestroy,还需要下列jar文件
lib\j2ee\common-annotations.jar
beans.xml 的配置模板
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="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容器常用的两种方式:
方法一:
在类路径下寻找配置文件来实例化容器
ApplicationContext ctx = new ClassPathXmlApplicationContext(new String[]{"beans.xml"});
方法二:
在文件系统路径下寻找配置文件来实例化容器
ApplicationContext ctx = new FileSystemXmlApplicationContext(new String[]{“d:\\beans.xml“});
一般使用第一种方式,Spring的配置文件可以指定多个,可以通过String数组传入。
当spring容器启动后,因为spring容器可以管理bean对象的创建,销毁等生命周期,所以我们只需从容器直接获取Bean对象就行,而不用编写一句代码来创建bean对象。从容器获取bean对象的代码如下:
ApplicationContext ctx = new ClassPathXmlApplicationContext(“beans.xml”);
OrderService service = (OrderService)ctx.getBean("personService");
三种实例化bean的方式:
1.使用类构造器实例化
<bean id=“orderService" class="cn.itcast.OrderServiceBean"/>
2.使用静态工厂方法实例化
<bean id="personService" class="cn.itcast.service.OrderFactory" factory-method="createOrder"/>
public class OrderFactory {
public static OrderServiceBean createOrder(){
return new OrderServiceBean();
}
}
3.使用实例工厂方法实例化:
<bean id="personServiceFactory" class="cn.itcast.service.OrderFactory"/>
<bean id="personService" factory-bean="personServiceFactory" factory-method="createOrder"/>
public class OrderFactory {
public OrderServiceBean createOrder(){
return new OrderServiceBean();
}
}
Bean的作用域
.singleton (单例)
在每个Spring IoC容器中一个bean定义只有一个对象实例。默认情况下会在容器启动时初始化bean,但我们可以指定Bean节点的lazy-init=“true”来延迟初始化bean,这时候,只有第一次获取bean会才初始化bean。如:
<bean id="xxx" class="cn.itcast.OrderServiceBean" lazy-init="true"/>
如果想对所有bean都应用延迟初始化,可以在根节点beans设置default-lazy-init=“true“,如下:
<beans default-lazy-init="true“ ...>
实际应用中不把这个属性设置为true.
.prototype (原型)
每次从容器获取bean都是新的对象。每次调用getBean方法,都获取新的实例。
调用调用getBean方法时 bean才实例化
.request
.session
.global session
在配置文件中指定Bean的初始化方法和销毁方法
<bean id="xxx" class="cn.itcast.OrderServiceBean" init-method="init" destroy-method="close"/>
Bean实例化后 ,就会执行init方法, Spring容器通过反射机制来调用。
AbstractApplicationContext ctx=new ClassPathXmlApplicationContext("beans.xml");
ctx.close();//正常关闭spring容器。
发表评论
-
spring 2.5 注释驱动的 IoC 功能
2012-06-15 23:35 931概述 注释配置相对于 XML 配置具有很多的优势: 它可 ... -
在Spring BeanFactory容器中管理两种bean
2012-06-08 22:45 3007在Spring BeanFactory容器 ... -
Spring-security 1
2011-05-15 20:20 1665有没有发现一个问题 ... -
容器背后的秘密
2011-04-28 00:26 905核心提示:4.4 容器背 ... -
spring 监听器 IntrospectorCleanupListener简介
2011-04-27 15:49 1272其中JavaBeans Introspector是一个类,位置 ... -
通过ApplicationContextAware获取bean
2011-04-25 17:30 1654通过ApplicationContextAware获取bean ... -
详解 Spring 3.0 基于 Annotation 的依赖注入实现
2011-03-14 17:18 1087简介: Spring 的依赖配置方式与 Spring 框架的内 ... -
spring+hibernate操控LOB对象
2011-03-12 00:27 970spring为hibernate提供了对LOB对像的支持, ... -
Spring AOP
2011-03-11 10:32 855AOP是Aspect Oriented Programming ... -
Spring AOP配置选项
2011-03-11 08:59 1590Spring实现动态代理配置是有两种配置文件:1、 xml ... -
spring 事务传播属性和隔离级别
2011-02-13 14:53 1066一、Propagation (事务的 ... -
Spring学习 xml配置依赖注入
2010-10-26 09:39 983最近项目中也配了几遍ssh框架了,不过老出问题,还是Sprin ... -
IOC控制反转和DI依赖注入区别
2010-10-12 15:20 1174IOC控制反转:说的是创建对象实例的控制权从代码控制剥离到IO ... -
Quartz cron表达式详解
2010-09-27 15:13 947字段 允许 ... -
Spring Bean的作用域
2010-09-27 15:12 935XML代码 <bean id="role ... -
spring配置中调用properties文件
2010-09-27 14:59 1562system.propertiesdatabase.url=j ... -
DataSourceUtils.getConnection()要与其对称方法配合使用
2010-09-15 16:56 1374DataSourceUtils.getConnection() ... -
使用BeanNameAutoProxyCreator实现spring的自动代理
2010-09-06 15:05 1015提到代理,我们可以使用ProxyBeanFactory,并配置 ... -
Spring源代码解析(一):IOC容器
2010-08-17 13:33 806在认真学习Rod.Johnson的三部曲之一:< < ... -
Spring源代码分析之(二):IOC容器在web容器中的启动[转]
2010-08-17 13:32 975以下引用自博客:http://jiwenke-spring.b ...
相关推荐
Spring中Bean的生命周期和作用域及实现方式 Spring是一个非常流行的Java应用程序框架,它提供了一个灵活的机制来管理Bean的生命周期和作用域。Bean的生命周期和作用域是Spring框架中两个非常重要的概念,它们决定了...
在Spring中,有五种主要的Bean作用域: 1. **Singleton作用域**: - Singleton是Spring默认的Bean作用域。这意味着,无论何时,只要Spring容器被初始化,它都会创建一个Bean实例,并将其缓存起来。后续对相同ID的...
Spring 中 bean 的作用域是指 Spring IoC 容器中 bean 的生命周期和实例化方式。bean 的作用域决定了 bean 的实例化和生命周期的管理方式。在 Spring 中,bean 的作用域可以分为五种:singleton、prototype、...
Spring容器提供多种实例化bean的方式: - **默认实例化**:如果bean没有指定构造函数,Spring会使用默认无参构造函数创建bean。 - **构造函数注入**:可以通过指定构造函数参数,Spring会调用匹配的构造函数创建...
综上所述,Spring Bean重复执行两次的问题通常是由于配置错误、依赖注入循环、初始化回调的不当使用、静态工厂方法的误用、AOP代理的配置问题或是Bean作用域设置不准确导致的。通过仔细检查和修正这些问题,可以避免...
本文将详细探讨Spring中bean实例化的三种主要方式:普通构造方法创建、静态工厂创建和实例工厂创建。 1. 普通构造方法创建: 这是最常见、最直观的方式,适用于大部分情况。在Spring配置文件中,我们通过`<bean>`...
在Spring框架中,Bean的生命周期管理和作用域是其核心特性之一,它们对于理解Spring如何管理对象的创建、初始化、使用以及销毁至关重要。首先,我们来深入探讨Bean的生命周期。 Spring中的Bean生命周期主要分为两个...
在Spring框架中,Bean的作用域是决定如何管理和创建Bean实例的关键概念。本篇文章将深入探讨两种主要的作用域:singleton和prototype,并通过实例分析其用法和注意事项。 首先,`singleton`是Spring默认的作用域,...
可以通过Spring的`ConfigurableApplicationContext`接口的`getBeanFactory()`方法获取`BeanFactory`,然后使用`BeanFactory`的`getBeanDefinition()`和`getBean()`方法来查找和实例化Bean。另外,还可以使用`@...
在Spring框架中,Bean的作用域(Scope)是一个关键概念,它决定了如何管理和实例化Bean。Spring提供了五种不同的Bean作用域,每种都有其特定的使用场景和行为。 1. **Singleton作用域**:这是Spring的默认作用域,...
如果Bean定义中有`factory-method`属性,那么Spring会调用指定的方法来实例化Bean,而不是使用默认的构造器。 2. **属性注入**:实例化后,Spring会根据Bean定义中的`property`或`ref`属性为Bean注入依赖。这包括了...
本篇文章将详细探讨Spring实例化bean的三种主要方式,并提供相关的代码示例。这些方式包括使用类构造器、静态工厂方法以及实例化工厂方法。 1. **使用类构造器实现实例化** 这是最基础的实例化方式,通过指定`...
BeanFactory是Spring的基础容器,它提供bean的实例化、作用域、依赖注入、生命周期管理等功能。ApplicationContext则是在BeanFactory基础上扩展,增加了更多企业级服务,如消息处理、国际化、应用事件等。 **Bean的...
- **实例化**:Spring通过`Class.forName()`或`new`关键字实例化Bean。如果在XML配置中指定了`class`属性,Spring将根据该属性创建Bean。 - **属性注入**:Spring会将依赖注入到Bean中,包括值注入(value,ref)...
对于Singleton作用域的Bean,Spring会在容器启动时一次性实例化所有Bean。实例化顺序基于Bean的依赖关系和`@DependsOn`注解。如果Bean之间没有依赖关系,Spring将按照Bean定义的顺序实例化。对于Prototype作用域,...
Spring 框架系列(8)- Spring IOC 实现原理详解之 Bean 实例化(生命周期、循环依赖等) 本文主要研究 Spring 框架中 Bean 的实例化过程,包括 Bean 的生命周期和循环依赖问题的解决方案。在 Spring 框架中,Bean ...
Bean 的实例化有三种方式,分别为构造器实例化、静态工厂方法实例化和实例工厂方法实例化(其中最常用的是构造器实例化)。 构造器实例化 构造器实例化是指 Spring 容器通过 Bean 对应的类中默认的构造函数来实例...
在Spring中,Bean的管理包含多个方面:创建Bean实例、配置Bean属性、控制Bean的生命周期以及Bean作用域的定义。接下来将详细解释这些知识点。 1. Spring的工厂类: Spring通过工厂模式设计了一系列工厂类来创建对象...
1.spring中bean实例化的俩种方式 2.spring中bean的各种元素如何使用 3.spring中的bean管理 4.spring中不同类型bean的作用域 5.spring中bean的生命周期 通过我的项目,可以跟着学习SPringIoC容器和Bean管理,帮助你...