applicationcontext理解使用

Spring ApplicationContext 容器

Application Context 是 spring 中较高级的容器。和 BeanFactory 类似,它可以加载配置文件中定义的 bean,将所有的 bean 集中在一起,当有请求的时候分配 bean。 另外,它增加了企业所需要的功能,比如,从属性文件从解析文本信息和将事件传递给所指定的监听器。这个容器在 org.springframework.context.ApplicationContext interface 接口中定义。

ApplicationContext 包含 BeanFactory 所有的功能,一般情况下,相对于 BeanFactoryApplicationContext 会被推荐使用。BeanFactory 仍然可以在轻量级应用中使用,比如移动设备或者基于 applet 的应用程序。

最常被使用的 ApplicationContext 接口实现:

  • FileSystemXmlApplicationContext:该容器从 XML 文件中加载已被定义的 bean。在这里,你需要提供给构造器 XML 文件的完整路径

  • ClassPathXmlApplicationContext:该容器从 XML 文件中加载已被定义的 bean。在这里,你不需要提供 XML 文件的完整路径,只需正确配置 CLASSPATH 环境变量即可,因为,容器会从 CLASSPATH 中搜索 bean 配置文件。

  • WebXmlApplicationContext:该容器会在一个 web 应用程序的范围内加载在 XML 文件中已被定义的 bean。

 

下面是文件 HelloWorld.java 的内容:

package com.tutorialspoint;
public class HelloWorld {private String message;public void setMessage(String message){this.message  = message;}public void getMessage(){System.out.println("Your Message : " + message);}
}

下面是文件 MainApp.java 的内容:

package com.tutorialspoint;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.FileSystemXmlApplicationContext;
public class MainApp {public static void main(String[] args) {ApplicationContext context = new FileSystemXmlApplicationContext("C:/Users/ZARA/workspace/HelloSpring/src/Beans.xml");HelloWorld obj = (HelloWorld) context.getBean("helloWorld");obj.getMessage();}
}

在主程序当中,我们需要注意以下两点:

  • 第一步生成工厂对象。加载完指定路径下 bean 配置文件后,利用框架提供的FileSystemXmlApplicationContext API 去生成工厂 bean。FileSystemXmlApplicationContext 负责生成和初始化所有的对象,比如,所有在 XML bean 配置文件中的 bean。

  • 第二步利用第一步生成的上下文中的 getBean() 方法得到所需要的 bean。 这个方法通过配置文件中的 bean ID 来返回一个真正的对象。一旦得到这个对象,就可以利用这个对象来调用任何方法。

下面是配置文件 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/beanshttp://www.springframework.org/schema/beans/spring-beans-3.0.xsd"><bean id="helloWorld" class="com.tutorialspoint.HelloWorld"><property name="message" value="Hello World!"/></bean></beans>

如果你已经完成上面的内容,接下来,让我们运行这个应用程序。如果程序没有错误,你将从控制台看到以下信息:

Your Message : Hello World!

转载于:https://www.cnblogs.com/panxuejun/p/7212540.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/268858.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【品名】妻子

【品名】妻子 【通用名】老婆 【化学名称】已婚女性 【成分】水、蛋白质、脂肪、核糖核酸、碳水化合物及少量矿物质&#xff0c;气味幽香。 【理化性质】酸性&#xff1b;可分为一价&#xff08;嫁&#xff09;、二价&#xff08;嫁&#xff09;、三价&#xff08;嫁&#xff0…

python函数应用实例_【Python 第22课】 函数应用示例

前两课稍稍介绍了一下函数&#xff0c;但光说概念还是有些抽象了&#xff0c;今天就来把之前那个小游戏用函数改写一下。我希望有这样一个函数&#xff0c;它比较两个数的大小。如果第一个数小了&#xff0c;就输出“too small”如果第一个数小了&#xff0c;就输出“too big”…

发给

分享转载于:https://www.cnblogs.com/chun6/p/7214279.html

临时表使用方法

在SQL SERVER2000中&#xff0c;建立临时表方式有3种&#xff1a; 1&#xff09;create table #table_name(field1 type,field2 type,..........) insert into #table_name values(..............) select * from #table_name 2&#xff09;create table tempdb.table_name(fie…

已安装nginx动态添加模块

说明&#xff1a;已经安装好的nginx&#xff0c;需要添加一个未被编译安装的模块&#xff0c;需要怎么弄呢&#xff1f; 具体&#xff1a;这里以安装第三方ngx_http_google_filter_module模块为例nginx的模块是需要重新编译nginx&#xff0c;而不是像apache一样配置文件引用.so…

linux内核开发_Linux 内核的代码仓库管理与开发流程简介

作者简介&#xff1a;老 U&#xff0c;致力于开源自由软件推广。原创雄文&#xff1a;由泰晓读者投递的各类社区原创好文。版权声明&#xff1a;本文最先发表于 “泰晓科技” 微信公众号&#xff0c;欢迎转载&#xff0c;转载时请在文章的开头保留本声明。入门 Linux 内核学习时…

Repeater,DataList,DataGrid 【转】

输出表&#xff1a; string a"ProviderMicrosoft.Jet.OLEDB.4.0;Data Sourcec:\\data.mdb;Persist Security InfoFalse;"; OleDbConnection cnnew OleDbConnection(a); OleDbCommand cmnew OleDbCommand("select * from test2",cn); cn.Open(); OleDbDataR…

Java中八种基本数据类型占用字节空间总结

一、Java四大数据类型分类 1、整型 byte 、short 、int 、long 2、浮点型 float 、 double 3、字符型 char 4、布尔型 boolean 二、八种基本数据类型 三、数据类型详细介绍 整型&#xff08;byte、short、int、long&#xff09; 虽然byte、short、int、long 数据类型…

Google编程题:最小操作数

给定一个原串和目标串&#xff0c;能对源串进行如下操作&#xff1a; 1.在给定位置插入一个字符 2.替换任意字符 3.删除任意字符 要求完成一下函数&#xff0c;返回最少的操作数&#xff0c;使得源串进行这些操作后等于目标串。源串和目标串长度都小于2000。动态创建的了二维…

jdbc连接mysql传参_将参数传递给JDBC PreparedStatement

我正在尝试为我的程序制作验证类。我已经建立了与MySQL数据库的连接&#xff0c;并且已经在表中插入了行。该表由firstName&#xff0c;lastName和userID领域。现在&#xff0c;我想通过构造函数的参数在数据库中选择特定的行。import java.sql.*;import java.sql.PreparedStat…

String类能被继承吗,为什么?

不能被继承&#xff0c;因为String类有final修饰符&#xff0c;而final修饰的类是不能被继承的。 Java对String类的定义&#xff1a; final修饰符的用法&#xff1a; 1.修饰类 当用final修饰一个类时&#xff0c;表明这个类不能被继承。final类中的成员变量可以根据需要设为…

Java实现折半查找(二分查找)的递归和非递归算法

Java二分查找实现,欢迎大家提出交流意见./***名称:BinarySearch*功能:实现了折半查找(二分查找)的递归和非递归算法.*说明:* 1、要求所查找的数组已有序,并且其中元素已实现Comparable<T>接口,如Integer、String等.* 2、非递归查找使用search();,递归查找使用sear…

webstorm 不知道手贱点了什么,有时候会自动删除分号

https://segmentfault.com/q/1010000009184137?_ea1845711 webstorm 不知道手贱点了什么&#xff0c;有时候会自动删除分号 webstorm javascript 繁忙的耗子 4月25日提问关注 4 关注收藏 0 收藏&#xff0c;470 浏览问题对人有帮助&#xff0c;内容完整&#xff0c;我也想…

mysql中的所有类型_mysql中常用的数据类型

MySQL是一种关系数据库管理系统&#xff0c;关系数据库将数据保存在不同的表中&#xff0c;而不是将所有数据放在一个大仓库内&#xff0c;这样就增加了速度并提高了灵活性。MySQL所使用的 SQL 语言是用于访问数据库的最常用标准化语言。MySQL 软件采用了双授权政策&#xff0c…

final和static的区别

很多时候会容易把static和final关键字混淆&#xff0c;static作用于成员变量用来表示只保存一份副本&#xff0c;而final的作用是用来保证变量不可变。看下面这个例子 每次打印的两个j值都是一样的&#xff0c;而i的值却是不同的。从这里就可以知道final和static变量的区别了。…

用Visual C#创建Windows服务程序

用Visual C#创建Windows服务程序一&#xff0e;Windows服务介绍&#xff1a;Windows服务以前被称作NT服务&#xff0c;是一些运行在Windows NT、Windows 2000和Windows XP等操作系统下用户环境以外的程序。在以前&#xff0c;编写Windows服务程序需要程序员很强的C或C功底。然而…

实现MySQL高可用群集配置_配置高可用性的MySQL服务器负载均衡群集

mysql -u root -pUSE mysqlclustertest;SELECT * FROM testtable;quit;SELECT查询出的结果应该依然是:mysql> SELECT * FROM testtable;——| i |——| 1 || 2 |——2 rows in set (0.17 sec)Ok,所有的测试都正常,现在让我们再次启动sql1.test.com节点&#xff1a;sql1.exam…

清除掉AD的相关属性!

今天有朋友问我怎么清除掉AD 的相关属性&#xff0c;由于他们的用户都设置了登录到属性&#xff0c;这样我们的用户就仅仅能登陆他须要设置的计算机。对于兴许规则的变更的时候&#xff0c;我们的管理员配置起来就比較复杂。他须要非常长的时间去一个一个清除掉相关的属性。这对…

java中String、StringBuffer、StringBuilder的区别

java中String、StringBuffer、StringBuilder是编程中经常使用的字符串类&#xff0c;他们之间的区别也是经常在面试中会问到的问题。现在总结一下&#xff0c;看看他们的不同与相同。 三者共同之处: 都是final类,不允许被继承&#xff0c;主要是从性能和安全性上考虑的&#…