SpringJUnit4加载类目录下(src)和WEF-INF目录下的配置文件二--获取注入的bean的二种方式
前言:
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的二种方式的更多相关文章
- SpringJUnit4加载类目录下(src)和WEF-INF目录下的配置文件
路径说明: 一.加载类目录下的配置文件 @RunWith(SpringJUnit4ClassRunner.class) @ContextConfiguration("classpath:ap ...
- Java 编程下使用 Class.forName() 加载类
在一些应用中,无法事先知道使用者将加载什么类,而必须让使用者指定类名称以加载类,可以使用 Class 的静态 forName() 方法实现动态加载类.下面的范例让你可以指定类名称来获得类的相关信息. ...
- Java 编程下使用 Class.forName() 加载类【转】
在一些应用中,无法事先知道使用者将加载什么类,而必须让使用者指定类名称以加载类,可以使用 Class 的静态 forName() 方法实现动态加载类.下面的范例让你可以指定类名称来获得类的相关信息. ...
- 10月27日PHP加载类、设计模式(单例模式和工厂模式)、面向对象的六大原则
加载类可以使用include.require.require_once三种中的任意一种,每个关键字都有两种方法,但是这种方法的缺点是需要加载多少个php文件,就要写多少个加载类的方法.一般也就需要加载 ...
- 关于实现Extjs动态加载类的方式实现
Extjs4以前的版本没有动态加载类的方式,这样开发程序的时候加载很多的js会导致加载变慢,由于本人一直使用extjs3的版本进行开发,于是简单实现了一个动态加载类的管理器,使用方式与extjs4的方 ...
- php面向对象加载类、常用设计模式
加载类: include("./Ren.class.php"); include "./Ren.class.php"; 用此方法的时候include后面要加空格 ...
- php之类,对象(四)加载类及练习题
一.加载类:1.命名类文件的时候每个单词首字母大写,后面缀上.class.php eg: Info.class.php 在写编码时定义类名首字母大写,定义变量名小写 eg:class Ren { pu ...
- PHP命名空间与自动加载类详解
本文实例讲述了PHP命名空间与自动加载类.分享给大家供大家参考,具体如下: 今天我要给大家介绍的是PHP的命名空间 和 自动加载类 我先简单的分开演示 在放在一起 大家请看:什么是自动加载类? 想必大 ...
- 快速搭建react项目骨架(按需加载、redux、axios、项目级目录等等)
一.前言 最近整理了一下项目骨架,顺便自定义了一个脚手架,方便日后使用.我会从头开始,步骤一步步写明白,如果还有不清楚的可以评论区留言.先大致介绍一下这个骨架,我们采用 create-react-ap ...
随机推荐
- hive操作语句使用详解
#创建表人信息表 person(String name,int age) hive> create table person(name STRING,age INT)ROW FORMAT DE ...
- au3 命令
Case $Button1 _RunDOS(@SystemDir &"\sysdm.cpl");打开系统属性 ...
- webkit常见问题汇总
前段时间有人问我一个简单的问题,html如何创建解析的? 我讲了一大堆,什么通过DocumentLoader, CachedResourceLoader, CacheResource, Resourc ...
- a href 相对路径 与绝对路径
<a href="/abc/">内容</a> <a href="abc/">内容</a>的区别,相对路径绝对路径 ...
- Cocos2d-JS内置粒子系统
从类图中我们可以看到,Cocos2d-JS中有内置的11种粒子,这些粒子的属性都是预先定义好的,我们也可以在程序代码中单独修改某些属性,我们在上一节的实例中都已经实现了这些属性的设置.内置粒子系统内置 ...
- MPlayerX For Mac白屏问题
在Mac App store下载了MPlayerX后,如果系统版本是10.10的,用MPlayerX看视屏当选择全屏后会出现白屏现象只有声音退出全屏后仍旧是白屏. 这是因为MPlayerX已经在Mac ...
- BeanFactory容器的设计原理
XmlBeanFactory设计的类继承关系 1.BeanFactory接口提供了使用IoC容器的规范.在这个基础上,Spring还提供了符合这个IoC容器接口的一系列容器的实现供开发人员使用. 2. ...
- 关于document.write
document.write的用处 document.write是JavaScript中对document.open所开启的文档流(document stream操作的API方法,它能够直接在文档流中 ...
- THREE.js代码备份——canvas - lines - colors(希尔伯特曲线3D、用HSL设置线颜色)
<!DOCTYPE html> <html lang="en"> <head> <title>three.js canvas - l ...
- oc常见误区
1.同步请求可以从因特网请求数据,一旦发送同步请求,程序将停止用户交互,直至服务器返回数据完成,才可以进行下一步操作, 2.异步请求不会阻塞主线程,而会建立一个新的线程来操作,用户发出异步请求后,依然 ...