前言:

spring容器以xml的形式注入bean,然后可以在类中获取,获取的形式主要有二种:第一种最简单--采用@Resource 或@Autowired关键字在加载spring文件时将bean注入到相应的类中;第二种方式是先用FileSystemXmlApplicationContext、ClassPathXmlApplicationContext 实例化ApplicationContext(Spring容器),然后调用其getBean方法获取。

下面直接代码说明:

注意:是在springJUnit的测试环境下。如不是测试环境,在实际中,如果用到@Resource 或@Autowired自动注入的方式,还需在spring容器添加“扫包”,这样项目发布时加载spring容器才会扫描具体的包下面的类,然后将bean注入到该类中。

一、加载文件放在类目录下

 package com.my.test;

 import javax.annotation.Resource;

 import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
import org.springframework.context.support.FileSystemXmlApplicationContext;
import org.springframework.test.context.ContextConfiguration;
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner; import com.wql.vo.User; /**
* spring test
* 加载文件放在类目录下
* @author Lenovo
*
*/
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration("classpath:applicationContext.xml")
public class MyTest {
@Resource
private User user3;//用@Resource关键字自动注入获取bean。注意:引用名是在spring容器中的注入bean的id,不可瞎写! @Test
public void test1(){//用FileSystemXmlApplicationContext获取bean
ApplicationContext ac = new FileSystemXmlApplicationContext("classpath:applicationContext.xml");
System.out.println(ac);//org.springframework.context.support.FileSystemXmlApplicationContext@52c603e7: startup date [Tue Feb 09:38 CST 2016]; root of context hierarchy
}
@Test
public void test2(){//用ClassPathXmlApplicationContext获取bean
ApplicationContext act=new ClassPathXmlApplicationContext("applicationContext.xml"); User user=(User)act.getBean("user");
System.out.println(user);
}
@Test
public void test3(){
System.out.println(user3);
} }

二、加载文件放在WEB-INF目录下

 package com.my.test;

 import javax.annotation.Resource;

 import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
import org.springframework.context.support.FileSystemXmlApplicationContext;
import org.springframework.test.context.ContextConfiguration;
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner; import com.wql.vo.User;
/**
* spring tes
* 加载文件放在WEB-INF目录下
* @author Lenovo
*
*/
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(locations={"file:WebContent/WEB-INF/applicationContext.xml"})
public class MyTes {
@Resource
private User user3; @Test
public void test1(){
//FileSystemXmlApplicationContext 加载WEB-INF目录下的文件必须是绝对路径
ApplicationContext ac = new FileSystemXmlApplicationContext("D:/STS_workspace/mynewdpiTest/WebContent/WEB-INF/applicationContext.xml");
System.out.println(ac);
System.out.println(ac.getBean("user"));
}
@Test
public void test2(){//ClassPathXmlApplicationContext 不能加载WEB-INF目录下的文件,只能加载类目录下的文件。
ApplicationContext act=new ClassPathXmlApplicationContext("D:/STS_workspace/mynewdpiTest/WebContent/WEB-INF/applicationContext.xml");
System.out.println(act);
// User user=(User)act.getBean("user");
// System.out.println(user);
}
@Test
public void test3(){
System.out.println(user3);
} }

SpringJUnit4加载类目录下(src)和WEF-INF目录下的配置文件二--获取注入的bean的二种方式的更多相关文章

  1. SpringJUnit4加载类目录下(src)和WEF-INF目录下的配置文件

    路径说明: 一.加载类目录下的配置文件 @RunWith(SpringJUnit4ClassRunner.class) @ContextConfiguration("classpath:ap ...

  2. Java 编程下使用 Class.forName() 加载类

    在一些应用中,无法事先知道使用者将加载什么类,而必须让使用者指定类名称以加载类,可以使用 Class 的静态 forName() 方法实现动态加载类.下面的范例让你可以指定类名称来获得类的相关信息. ...

  3. Java 编程下使用 Class.forName() 加载类【转】

    在一些应用中,无法事先知道使用者将加载什么类,而必须让使用者指定类名称以加载类,可以使用 Class 的静态 forName() 方法实现动态加载类.下面的范例让你可以指定类名称来获得类的相关信息. ...

  4. 10月27日PHP加载类、设计模式(单例模式和工厂模式)、面向对象的六大原则

    加载类可以使用include.require.require_once三种中的任意一种,每个关键字都有两种方法,但是这种方法的缺点是需要加载多少个php文件,就要写多少个加载类的方法.一般也就需要加载 ...

  5. 关于实现Extjs动态加载类的方式实现

    Extjs4以前的版本没有动态加载类的方式,这样开发程序的时候加载很多的js会导致加载变慢,由于本人一直使用extjs3的版本进行开发,于是简单实现了一个动态加载类的管理器,使用方式与extjs4的方 ...

  6. php面向对象加载类、常用设计模式

    加载类: include("./Ren.class.php"); include "./Ren.class.php"; 用此方法的时候include后面要加空格 ...

  7. php之类,对象(四)加载类及练习题

    一.加载类:1.命名类文件的时候每个单词首字母大写,后面缀上.class.php eg: Info.class.php 在写编码时定义类名首字母大写,定义变量名小写 eg:class Ren { pu ...

  8. PHP命名空间与自动加载类详解

    本文实例讲述了PHP命名空间与自动加载类.分享给大家供大家参考,具体如下: 今天我要给大家介绍的是PHP的命名空间 和 自动加载类 我先简单的分开演示 在放在一起 大家请看:什么是自动加载类? 想必大 ...

  9. 快速搭建react项目骨架(按需加载、redux、axios、项目级目录等等)

    一.前言 最近整理了一下项目骨架,顺便自定义了一个脚手架,方便日后使用.我会从头开始,步骤一步步写明白,如果还有不清楚的可以评论区留言.先大致介绍一下这个骨架,我们采用 create-react-ap ...

随机推荐

  1. SQL备份(全)

    ====================================================================== SQL备份 ======================= ...

  2. 怎么解决tomcat占用8080端口问题图文教程(转)

    亲测有效. 原因:可能是开了多个tomcat 原文网址:http://jingyan.baidu.com/article/1612d5006c3cdae20e1eee04.html  怎么解决tomc ...

  3. Java中List与Map初始化的一些写法

    Java的在还没有发现新写法之前时,我一直是这么初始化List跟Map: 代码如下 复制代码  //初始化List    List<string> list = new ArrayList ...

  4. 密码强度的js插件(完成)

    效果如下图: 低:

  5. python基础:三元运算

    学习条件运算时,对于简单的 if else 语句,可以使用三元运算来表示,即: 1 2 3 4 5 6 7 8 # 普通条件语句 if 1 == 1:     name = 'wupeiqi' els ...

  6. 利用二维矩阵求spanning tree

    只做了9个节点的,无权值,使用了n-1个=8个循环,非常麻烦.一级一级判断是否连接,连接及记录所在节点,以后不再使用,确保无回路. 验证后无回路,但只试过几种情况. 代码如下: #include< ...

  7. GVIM:在WINDOWS下清爽写代码

    上大学后,你是不是也开始学习C语言了?特别是计算机学院的孩子,应当有更高的追求.C语言开课一段时间了,你是不是开始嫌弃IDE恶心的界面了?是不是跟我一样,嫌弃IDE打开速度太慢?VS2010需要12秒 ...

  8. Tomcat部署web应用的方式

    对Tomcat部署web应用的方式总结,常见的有以下四种: 1.[使用控制台部署] 访问Http://localhost:8080,并通过Tomcat Manager登录,进入部署界面即可. 2.[利 ...

  9. Mac OS + Nginx + Mysql + PHP 本地环境搭建

    本文是用Mac系统下搭建的环境,使用Linux的童鞋也不要在意,因为很相似,只有下载安装的方式有一点区别.直接进入正文: 1.首先我们需要下载Homebrew,Homebrew简称brew,是Mac ...

  10. MySQL监控工具-orzdba

    源代码地址:http://code.taobao.org/p/orzdba/src/trunk/     [root@hank-yoon servers]# chmod +x orzdba 在代码的1 ...