- 浏览: 659186 次
- 性别:
- 来自: 杭州
文章分类
最新评论
-
HkEndless:
不好意思,请问这确定是回调机制吗。你的例子中只是将接口的实现类 ...
Spring CallBack回调机制介绍 -
hanmiao:
写的真乱啊,完全不知所云...
Java如何调用可执行文件和批处理命令 -
junia_1:
junia_1 写道 shock: ...
为什么要使用EJB -
junia_1:
shock:
为什么要使用EJB -
coollifer:
不错
SQL Server数据导入到Oracle中的方法
读取xml文件
/**
* 利用XmlBeanFactory(Resource resource)
* 这里Resource必须是xml格式
* Resource包括:AbstractResource, ClassPathResource, FileSystemResource,
* InputStreamResource, ServletContextResource, UrlResource
*/
/*
* 利用 InputStreamResource(InputStream inputStream)
* 要将applicationContext.xml放在项目根目录下
*/
InputStream is = null;
try {
is = new FileInputStream("applicationContext.xml");
} catch (FileNotFoundException e) {
e.printStackTrace();
}
Resource resource = new InputStreamResource(is);
BeanFactory factory = new XmlBeanFactory(resource);
UserDao userDao = (UserDao)factory.getBean("userDao");
/*
* 利用 Properties
* 要将bean.properties放在类路径--源文件夹(src)目录下
*/
1.利用ClassPathXmlApplicationContext
可以从classpath中读取XML文件
(1) ApplicationContext context = new ClassPathXmlApplicationContext("applicationContext.xml");
UserDao userDao = (UserDao)context.getBean("userDao");
(2) ClassPathXmlApplicationContext resource = new ClassPathXmlApplicationContext(new String[]{"applicationContext-ibatis-oracle.xml","applicationContext.xml","applicationContext-data-oracle.xml"});
BeanFactory factory = resource;
UserDao userDao = (UserDao) factory.getBean("userDao");
2. 利用ClassPathResource
可以从classpath中读取XML文件
Resource cr = new ClassPathResource("applicationContext.xml");
BeanFactory bf=new XmlBeanFactory(cr);
UserDao userDao = (UserDao)bf.getBean("userDao");
加载一个xml文件 org.springframework.beans.factory.config.PropertyPlaceholderConfigurer不起作用
3.利用XmlWebApplicationContext读取
从Web应用程序的文件架构中,指定相对位置来读取定义文件。
XmlWebApplicationContext 的建构子无法带参数,参考API文件会发现,预设的location会指向/WEB-INF/applicationContext.xml档案。使用其 public static属性DEFAULT_CONFIG_LOCATION可取得此预设档名。由於我使用MyEclipse,预设会多一个"/WebRoot"的 目录在WEB-INF之前,因此若在web project里有一些与web无关的程式要使用context时(例如处理一些MVC架构中的"M"的部份),就无法使用 XmlWebApplicationContext来读取bean定义档,因为default location会差一个"WebRoot"的目录。
即 使在web.xml里面,在DispatcherServlet定义中重新定义contextConfigLocation也一样(此定义可以 override掉XmlWebApplicationContext中的DEFAULT_CONFIG_LOCATION值),因为与web无关的程式 并不会经过web.xml的定义档设定。目前我还没试成功过XmlWebApplicationContext取得bean定义档,使用 ClassPathXmlApplicationContext反而会快一些。
XmlWebApplicationContext ctx = new XmlWebApplicationContext();
ctx.setConfigLocations(new String[] {"/WEB-INF/ applicationContext.xml");
ctx.setServletContext(pageContext.getServletContext());
ctx.refresh();
UserDao userDao = (UserDao ) ctx.getBean("userDao ");
4.利用FileSystemResource读取
Resource rs = new FileSystemResource("D:/tomcat/webapps/test/WEB-INF/classes/ applicationContext.xml");
BeanFactory factory = new XmlBeanFactory(rs);
UserDao userDao = (UserDao )factory.getBean("userDao");
值得注意的是:利用FileSystemResource,则配置文件必须放在project直接目录下,或者写明绝对路径,否则就会抛出找不到文件的异常
5.利用FileSystemXmlApplicationContext读取
可以指定XML定义文件的相对路径或者绝对路径来读取定义文件。
方法一:
String[] path={"WebRoot/WEB-INF/applicationContext.xml","WebRoot/WEB-INF/applicationContext_task.xml"};
ApplicationContext context = new FileSystemXmlApplicationContext(path);
方法二:
String path="WebRoot/WEB-INF/applicationContext*.xml";
ApplicationContext context = new FileSystemXmlApplicationContext(path);
方法三:
ApplicationContext ctx =
new FileSystemXmlApplicationContext("classpath:地址");
没有classpath的话就是从当前的工作目录
*******************************************************************************
** 分割一 下 **
*******************************************************************************
获取Spring框架管理的类实例的方法有多种,如下:
方法一:在初始化时保存ApplicationContext对象
代码:
ApplicationContext ac = new FileSystemXmlApplicationContext("applicationContext.xml");
ac.getBean("beanId");
说明:
这种方式适用于采用Spring框架的独立应用程序,需要程序通过配置文件手工初始化Spring的情况。
方法二:通过Spring提供的工具类获取ApplicationContext对象
代码:
import org.springframework.web.context.support.WebApplicationContextUtils;
ApplicationContext ac1 =
WebApplicationContextUtils.getRequiredWebApplicationContext(ServletContext sc)
ApplicationContext ac2 = WebApplicationContextUtils.getWebApplicationContext(ServletContext
sc)
ac1.getBean("beanId");
ac2.getBean("beanId");
说明:
这种方式适合于采用Spring框架的B/S系统,通过ServletContext对象获取ApplicationContext对象,然后
在通过它获取需要的类实例。
上面两个工具方式的区别是,前者在获取失败时抛出异常,后者返回null。
方法三:继承自抽象类ApplicationObjectSupport
说明:
抽象类ApplicationObjectSupport提供getApplicationContext()方法,可以方便的获取到 ApplicationCont
ext。Spring初始化时,会通过该抽象类的setApplicationContext(ApplicationContext
context)方法将ApplicationContext 对象注入。
方法四:继承自抽象类WebApplicationObjectSupport
说明:
类似上面方法,调用getWebApplicationContext()获取WebApplicationContext
方法五:实现接口ApplicationContextAware
说明:
实现该接口的setApplicationContext(ApplicationContext context)方法,并保存ApplicationContext 对
象。Spring初始化时,会通过该方法将ApplicationContext 对象注入。
以上方法适合不同的情况,请根据具体情况选用相应的方法。
这里值得提一点的是,系统中用到上述方法的类实际上就于Spring框架紧密耦合在一起了,因为这些类是知
道它们是运行在Spring框架上的,因此,系统中,应该尽量的减少这类应用,使系统尽可能的独立于当前运
行环境,尽量通过DI的方式获取需要的服务提供者。
本人认为,方法五比较可行,可以设计一个工具类,专门来获取Spring中的类。减少对业务代码的侵入性。
发表评论
-
Spring 多重继承 Dao注入方式
2011-11-15 06:19 1737在用spring开发时,service层配置文件中在每个ser ... -
Transaction marked as rollback only异常
2011-08-15 15:53 10468今天在进行数据库操作时出现:Transaction rolle ... -
Spring Aop的一点理解
2011-06-18 10:47 989Cross Cutting Concern 是一种独立服务, ... -
Spring Bean 各种集合类型注入介绍
2011-06-17 18:59 1607类结构如下之代码 package com.japie ... -
spring bean 日期格式注入的几种模式
2011-06-17 18:44 62591 当我们进行bean注入到spring当中的时候,这个bea ... -
Spring CallBack回调机制介绍
2011-06-16 19:48 8022所谓回 调,就是客户程序C调用服务程序S中的某个函数A,然后 ... -
在spring中使用Quartz配置job的方式
2011-06-07 00:46 2886定时批处理作业是J2EE企业应用里很重要的一环,用来在晚间 ... -
spring与struts2整合实现
2011-06-07 00:39 1016在Struts2中整合Spring的IoC支持是一件十分简 ... -
Spring学习笔记
2011-06-07 00:32 1108Proxy (代理) 静态代理 静态代理只需写一 ... -
Spring 注解@Component,@Service,@Controller,@Repository
2011-06-05 05:33 1354pring 2.5 中除了提供 @Component ... -
Spring 让 LOB 数据操作变得简单易行
2011-04-04 22:10 882概述 LOB 代表大对象 ... -
Creating DAOs with Hibernate 3.5 & JPA 2.0 Annotations
2011-04-04 01:23 1045Creating Good DAOs with Hiberna ... -
怪异的 No Hibernate Session bound to Thread !异常
2011-04-03 21:01 2330java .lang .IllegalStateE ... -
Spring与Hibernate集成中的session问题讨论
2011-04-03 20:48 14791.通过getSession()方法获得session进行操 ... -
Spring与Hibernate集成中的session问题
2011-04-03 02:50 10301.通过getSession()方法获得session进行操作 ... -
Spring整合Hibernate
2011-04-03 02:09 1364采用声明式事务 1 、声明式事务配置 ... -
SSH整合中could not initialize proxy - no Session问题的OpenSessionInView解决办法
2011-04-03 02:05 2054问题的解决方法主要有两种: 1、将<many-to ... -
在Spring中使用JTA事务管理
2011-04-03 00:35 1482Spring 通过AOP技术可以让我们在脱离EJB的情况下享受 ... -
Spring事务传播机制
2011-04-02 02:08 1051Spring事务传播机制 概述 ... -
Spring常用标记记录
2010-09-04 12:21 1238当开发者未指定id或name属性时,Spring会为这类受管B ...
相关推荐
通过上述介绍可以看出,在Java中获取Spring中的Bean有多种方式,可以根据项目的实际情况选择最合适的方法。无论是使用XML配置还是基于注解的方式,或者是自定义工具类,Spring框架都提供了非常灵活的机制来支持各种...
在本文中,我们将深入探讨Spring框架中的Bean XML配置,这是Spring的核心特性之一,它允许我们定义、管理和装配应用中的对象。我们将围绕以下知识点展开: 1. **Spring框架基础**: Spring是一个开源的Java平台,...
在Spring框架中,bean的实例化是其核心功能之一,它允许我们管理应用程序中的对象生命周期。本篇将详细探讨两种工厂方法——实例工厂方法和静态工厂方法,用于创建Spring Bean。 首先,我们要理解Spring Bean的概念...
Spring的核心之一是Spring容器,它负责管理应用程序中所有组件的生命周期和依赖关系。Spring容器中最为常见的组件是Bean,它是Spring容器管理的对象实例。 在Spring中,Bean的管理包含多个方面:创建Bean实例、配置...
Spring bean 一般通过配置文件和注解进行加载,如果要实现jar或class...测试示例中是spring boot 的部分代码,动态加载的内容为接口实现类,且初始化时加载本地的实现类,动态加载后改为非程序加载目录中的jar实现类。
Bean是由Spring容器创建、初始化、装配以及管理的对象,它们在应用程序中扮演着重要的角色。本篇文章将深入探讨如何在Spring应用中获取Bean,以及相关的源码分析和实用工具。 首先,Spring容器(ApplicationContext...
以上就是Spring管理Bean的一些主要知识点,实际应用中,开发者可以根据需求选择合适的配置方式,利用Spring的强大功能构建松耦合、易于测试的应用程序。这个压缩包中的实例代码应该涵盖了这些概念的实际运用,通过...
在Spring中,Bean通常代表应用程序中的一个对象,这些对象由Spring容器(ApplicationContext)管理,包括创建、初始化、装配和销毁。Bean可以通过XML配置文件、注解或者Java配置类进行定义。 1. **Bean的定义**:在...
- **XML配置**:在传统的Spring应用中,Bean的定义通常写在XML配置文件中,如`springbean-xml`中的配置。 - **注解配置**:使用`@Component`,`@Service`,`@Repository`和`@Controller`注解标记类,配合`@...
Spring框架是Java开发中不可或缺的一部分,它以其控制反转(IoC)和依赖注入(DI)的核心特性,极大地简化了应用程序的构建与管理。在本文中,我们将深入探讨Spring中的Bean配置,包括IoC和DI的概念,Bean的配置方式...
在Spring中,Bean是一个由Spring IoC容器管理的对象,它代表应用程序中的一个组件或服务。Bean可以通过XML配置文件、注解或Java配置类来定义。而自动扫描和管理Bean则是通过注解或配置文件中的包扫描设置实现的。 #...
在Java的Spring框架中,事务管理和Bean管理是两个核心概念,它们在Web应用程序开发中扮演着至关重要的角色。本文将深入解析Spring框架中的混合事务(也称为编程式事务管理)与Bean的区别,以及如何在实际应用中有效...
本教程通过实际编码演示,帮助学习者理解Spring如何在应用程序中管理Bean的生命周期和依赖关系。 在Spring框架中,Bean是核心组件,它们代表了应用程序中的业务对象。Spring通过IoC(Inversion of Control,控制...
在传统的 Java 应用程序中,类往往直接创建它所需的服务实例,而在 Spring 中,这些依赖关系可以通过 Spring 容器来管理。 在 Web 应用中,Spring 通常作为 Servlet 容器的一部分工作,例如 Tomcat 或 Jetty,通过 ...
Spring是一个非常流行的Java应用程序框架,它提供了一个灵活的机制来管理Bean的生命周期和作用域。Bean的生命周期和作用域是Spring框架中两个非常重要的概念,它们决定了Bean的生命周期和作用域的管理方式。 一、...
在Spring框架中,Bean是核心概念,它是Spring管理的对象,通常代表了应用程序中的业务对象或服务。本示例将深入探讨如何在Spring中创建和管理Bean。首先,我们需要理解Spring的IoC(Inversion of Control,控制反转...
在Spring框架中,Bean的实例化是核心概念之一,它涉及到如何管理和控制应用程序中的对象生命周期。本篇文章将深入探讨Spring项目中Bean的实例化过程,包括三种主要的bean实例化方式:构造方法、静态工厂和实例工厂。...
虽然通常这个注解用于Spring管理的Bean,但也可以在非Spring管理的类中使用,只要确保配置的加载和绑定过程正确执行。 为了读取YAML配置,你需要在Spring Boot应用的启动类或者其他适当的初始化点,注册`@...
在`@Bean`方法中,Spring会调用这个方法来创建Bean实例,并自动处理依赖注入。如果你的类有依赖,可以在`@Bean`方法内部创建并注入。 在`spring-boot-hello3`这个项目中,很可能是演示了如何通过Java配置创建和注册...
在Spring中,核心概念之一就是Bean,它是一个简单的Java对象,由Spring IoC容器管理。Spring通过XML配置文件或注解来定义、配置和管理Beans。下面将深入探讨`<beans>`、`<bean>`及其属性,以及其他相关的配置元素。 ...