📄 xmlbeanfactorytestsuite.java
字号:
ConstructorDependenciesBean rod = (ConstructorDependenciesBean) xbf.getBean("rod7");
fail("Should have thrown BeanDefinitionStoreException");
}
catch (BeanCreationException ex) {
// expected
}
}
public void testThrowsExceptionOnAmbiguousResolution() throws Exception {
XmlBeanFactory xbf = new XmlBeanFactory(new ClassPathResource("constructor-arg.xml", getClass()));
try {
ConstructorDependenciesBean rod = (ConstructorDependenciesBean) xbf.getBean("rod8");
fail("Should have thrown UnsatisfiedDependencyException");
}
catch (UnsatisfiedDependencyException ex) {
// expected
}
}
public void testFactoryBeanDefinedAsPrototype() {
try {
XmlBeanFactory xbf = new XmlBeanFactory(new ClassPathResource("invalid-factory.xml", getClass()));
fail("Should have thrown BeanDefinitionStoreException");
}
catch (BeanDefinitionStoreException ex) {
// expected
}
}
public void testDependsOn() {
PreparingBean1.prepared = false;
PreparingBean1.destroyed = false;
PreparingBean2.prepared = false;
PreparingBean2.destroyed = false;
DependingBean.destroyed = false;
InputStream is = getClass().getResourceAsStream("initializers.xml");
XmlBeanFactory xbf = new XmlBeanFactory(is);
xbf.preInstantiateSingletons();
xbf.destroySingletons();
assertTrue(PreparingBean1.prepared);
assertTrue(PreparingBean1.destroyed);
assertTrue(PreparingBean2.prepared);
assertTrue(PreparingBean2.destroyed);
assertTrue(DependingBean.destroyed);
}
public void testClassNotFoundWithDefault() {
try {
XmlBeanFactory xbf = new XmlBeanFactory(new ClassPathResource("classNotFound.xml", getClass()));
// should have thrown BeanDefinitionStoreException
}
catch (BeanDefinitionStoreException ex) {
assertTrue(ex.getCause() instanceof ClassNotFoundException);
// expected
}
}
public void testClassNotFoundWithNoBeanClassLoader() {
try {
DefaultListableBeanFactory bf = new DefaultListableBeanFactory();
XmlBeanDefinitionReader reader = new XmlBeanDefinitionReader(bf);
reader.setBeanClassLoader(null);
reader.loadBeanDefinitions(new ClassPathResource("classNotFound.xml", getClass()));
assertTrue(bf.getBeanDefinition("classNotFound") instanceof RootBeanDefinition);
assertEquals(((RootBeanDefinition) bf.getBeanDefinition("classNotFound")).getBeanClassName(),
"org.springframework.beans.TestBeana");
}
catch (BeanDefinitionStoreException ex) {
fail("Should not have thrown BeanDefinitionStoreException");
}
}
public void testListFactory() throws Exception {
InputStream is = getClass().getResourceAsStream("collections.xml");
XmlBeanFactory xbf = new XmlBeanFactory(is);
List list = (List) xbf.getBean("listFactory");
assertTrue(list instanceof LinkedList);
assertTrue(list.size() == 2);
assertEquals("bar", list.get(0));
assertEquals("jenny", list.get(1));
}
public void testPrototypeListFactory() throws Exception {
InputStream is = getClass().getResourceAsStream("collections.xml");
XmlBeanFactory xbf = new XmlBeanFactory(is);
List list = (List) xbf.getBean("pListFactory");
assertTrue(list instanceof LinkedList);
assertTrue(list.size() == 2);
assertEquals("bar", list.get(0));
assertEquals("jenny", list.get(1));
}
public void testSetFactory() throws Exception {
InputStream is = getClass().getResourceAsStream("collections.xml");
XmlBeanFactory xbf = new XmlBeanFactory(is);
Set set = (Set) xbf.getBean("setFactory");
assertTrue(set instanceof TreeSet);
assertTrue(set.size() == 2);
assertTrue(set.contains("bar"));
assertTrue(set.contains("jenny"));
}
public void testPrototypeSetFactory() throws Exception {
InputStream is = getClass().getResourceAsStream("collections.xml");
XmlBeanFactory xbf = new XmlBeanFactory(is);
Set set = (Set) xbf.getBean("pSetFactory");
assertTrue(set instanceof TreeSet);
assertTrue(set.size() == 2);
assertTrue(set.contains("bar"));
assertTrue(set.contains("jenny"));
}
public void testMapFactory() throws Exception {
InputStream is = getClass().getResourceAsStream("collections.xml");
XmlBeanFactory xbf = new XmlBeanFactory(is);
Map map = (Map) xbf.getBean("mapFactory");
assertTrue(map instanceof TreeMap);
assertTrue(map.size() == 2);
assertEquals("bar", map.get("foo"));
assertEquals("jenny", map.get("jen"));
}
public void testPrototypeMapFactory() throws Exception {
InputStream is = getClass().getResourceAsStream("collections.xml");
XmlBeanFactory xbf = new XmlBeanFactory(is);
Map map = (Map) xbf.getBean("pMapFactory");
assertTrue(map instanceof TreeMap);
assertTrue(map.size() == 2);
assertEquals("bar", map.get("foo"));
assertEquals("jenny", map.get("jen"));
}
public void testCollectionFactoryDefaults() {
ListFactoryBean listFactory = new ListFactoryBean();
listFactory.setSourceList(new LinkedList());
listFactory.afterPropertiesSet();
assertTrue(listFactory.getObject() instanceof ArrayList);
SetFactoryBean setFactory = new SetFactoryBean();
setFactory.setSourceSet(new TreeSet());
setFactory.afterPropertiesSet();
assertTrue(setFactory.getObject() instanceof HashSet);
MapFactoryBean mapFactory = new MapFactoryBean();
mapFactory.setSourceMap(new TreeMap());
mapFactory.afterPropertiesSet();
assertTrue(mapFactory.getObject() instanceof HashMap);
}
public void testResourceAndInputStream() throws IOException {
InputStream is = getClass().getResourceAsStream("resource.xml");
XmlBeanFactory xbf = new XmlBeanFactory(is);
ResourceTestBean resource1 = (ResourceTestBean) xbf.getBean("resource1");
ResourceTestBean resource2 = (ResourceTestBean) xbf.getBean("resource2");
assertTrue(resource1.getResource() instanceof ClassPathResource);
StringWriter writer = new StringWriter();
FileCopyUtils.copy(new InputStreamReader(resource1.getResource().getInputStream()), writer);
assertEquals("test", writer.toString());
writer = new StringWriter();
FileCopyUtils.copy(new InputStreamReader(resource1.getInputStream()), writer);
assertEquals("test", writer.toString());
writer = new StringWriter();
FileCopyUtils.copy(new InputStreamReader(resource2.getResource().getInputStream()), writer);
assertEquals("test", writer.toString());
writer = new StringWriter();
FileCopyUtils.copy(new InputStreamReader(resource2.getInputStream()), writer);
assertEquals("test", writer.toString());
}
public static class BadInitializer {
/** Init method */
public void init2() throws ServletException {
throw new ServletException();
}
}
public static class DoubleInitializer {
private int num;
public int getNum() {
return num;
}
public void setNum(int i) {
num = i;
}
/** Init method */
public void init() {
this.num *= 2;
}
}
public static class InitAndIB implements InitializingBean, DisposableBean {
public static boolean constructed;
public boolean afterPropertiesSetInvoked, initMethodInvoked, destroyed, customDestroyed;
public InitAndIB() {
constructed = true;
}
public void afterPropertiesSet() {
if (this.initMethodInvoked)
fail();
this.afterPropertiesSetInvoked = true;
}
/** Init method */
public void customInit() throws ServletException {
if (!this.afterPropertiesSetInvoked)
fail();
this.initMethodInvoked = true;
}
public void destroy() {
if (this.customDestroyed)
fail();
if (this.destroyed) {
throw new IllegalStateException("Already destroyed");
}
this.destroyed = true;
}
public void customDestroy() {
if (!this.destroyed)
fail();
if (this.customDestroyed) {
throw new IllegalStateException("Already customDestroyed");
}
this.customDestroyed = true;
}
}
public static class PreparingBean1 implements DisposableBean {
public static boolean prepared = false;
public static boolean destroyed = false;
public PreparingBean1() {
prepared = true;
}
public void destroy() {
destroyed = true;
}
}
public static class PreparingBean2 implements DisposableBean {
public static boolean prepared = false;
public static boolean destroyed = false;
public PreparingBean2() {
prepared = true;
}
public void destroy() {
destroyed = true;
}
}
public static class DependingBean implements DisposableBean {
public static boolean destroyed = false;
public DependingBean() {
if (!(PreparingBean1.prepared && PreparingBean2.prepared)) {
throw new IllegalStateException("Need prepared PreparedBeans!");
}
}
public void destroy() {
if (PreparingBean1.destroyed || PreparingBean2.destroyed) {
throw new Error("Should not be destroyed before PreparedBeans");
}
destroyed = true;
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -