`

如何配置一个带泛型的Bean

阅读更多
希望在Spring容器中配置一个带泛型的Bean,直接配置如下:
<bean id="list" class="java.util.ArrayList<java.lang.String>"/>


启动容器时,将报如下所示:
Caused by: org.xml.sax.SAXParseException: The value of attribute "class" associated with an element type "null" must not contain the '<' character.
	at com.sun.org.apache.xerces.internal.util.ErrorHandlerWrapper.createSAXParseException(ErrorHandlerWrapper.java:195)
	at com.sun.org.apache.xerces.internal.util.ErrorHandlerWrapper.fatalError(ErrorHandlerWrapper.java:174)
	at com.sun.org.apache.xerces.internal.impl.XMLErrorReporter.reportError(XMLErrorReporter.java:388)
	at com.sun.org.apache.xerces.internal.impl.XMLScanner.reportFatalError(XMLScanner.java:1427)
	at com.sun.org.apache.xerces.internal.impl.XMLScanner.scanAttributeValue(XMLScanner.java:945)


这是因为“<”或“>”的字符是XML的特殊字符,它会破坏Spring XML配置文件的格式,因此产生了错误


由于Spring 3.0引入了JavaConfig,以代码的方式定义Bean,因此我们可以使用如下方式配置之:
package com.ioctest; /**
 * Copyright:中软海晟信息科技有限公司 版权所有 违者必究 2013 
 */

import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

import java.util.ArrayList;
import java.util.List;

@Configuration
public class AppConfig {

    @Bean(name = "listStr")
    public List<String> listStrBean(){
        return new ArrayList<String>();
    }
}


在XML配置文件中引用这个JavaConfig:
<?xml version="1.0" encoding="UTF-8" ?>
<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xmlns:p="http://www.springframework.org/schema/p"
       xmlns:context="http://www.springframework.org/schema/context"
       xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.2.xsd
       http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.2.xsd">
<!--     <bean id="list" class="java.util.ArrayList<java.lang.String>"/>-->

    <context:component-scan base-package="com.ioctest"/>
    <context:annotation-config/>

</beans>


这个就可以正确启动了:
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;

import java.util.List;

public class Tester {

    public static void main(String[] args) {
        ApplicationContext applicationContext = new ClassPathXmlApplicationContext("test.xml");
        List<String> listStr = (List<String>) applicationContext.getBean("listStr");
        listStr.add("ddd");
    }
}
分享到:
评论

相关推荐

    泛型dao 泛型dao 泛型dao

    泛型dao,顾名思义就是一个dao可以对多个实体对象进行持久化。当应用中需要使用到上十张表时,DAO的维护变得日益困难,主要表现在这几个方面: 1)dao类的繁多,很多设计都是一个entity对应一个dao (不同的只有类名...

    json字符串实体bean或者List互转(gson和jackson,支持泛型)

    json字符串实体bean或者List&lt;bean&gt;互转(gson和jackson,支持泛型),支持json的格式化,所需要的包在代码也有说明。还有少的可以告知我,谢谢

    java反射以及复制一个bean的值到另一个bean中。

    java反射以及复制一个bean的值到另一个bean中。

    jsp编程中,servlet向jsp中传递带有泛型的数组

    servlet类向jsp传递带泛型数组。泛型为自定义的bean

    java泛型反射注解

    先说一下遇到的问题:通过使用GSON泛型进行报文转换的时候想要对部分关键字段加密,发现在封装好的方法中,对个别字段的加密满足不了。 解决过程:首先通过反射获取到bean下的对象名称。 对象名称获取到了之后需要...

    尚硅谷佟刚Spring4代码及PPT.rar

    Bean、通过 FactoryBean 配置 Bean、通过注解配置 Bean、泛型依赖注入、AOP 基础、前置通知、后置通知、返回通知、异常通知、环绕通知、切面的优先级、切点表达式、使用 XML 文件的方式配置 AOP、使用 JdbcTemplate ...

    虚拟数据层 Struts2、Hibernate、Spring整合的泛型DAO Version 2010.9.27

    泛型dao,顾名思义就是一个dao可以对多个实体对象进行持久化。当应用中需要使用到上十张表时,DAO的维护变得日益困难,主要表现在这几个方面: 1)dao类的繁多,很多设计都是一个entity对应一个dao (不同的只有类名...

    flance#spring-framework-reference-5.1.3#1.9.5.使用泛型作为自动注入的约束1

    例如,假设您有以下配置:假设前面的bean实现了一个泛型接口(即存储和存储),您可以@Autowire存储接口并将泛型用作限定符,如下面的示例所示:// &lt;St

    基于鸿洋okhttputils 封装数据 bean和callback 回调

    对okhttputils回调封装

    autowiring-bug-boot:带有有限泛型的服务的Spring Boot自动装配问题

    自动接线错误引导 带有有限泛型的服务的Spring Boot自动装配问题

    对象转换json,json转换成对象

    json转换成bean类对象(util中使用到了泛型) ObjectMapper mapper = new ObjectMapper(); return (T) mapper.readValue(str,cla); 2. 类对象转换成json字符串 ObjectMapper mapper = new ObjectMapper(); String ...

    Java泛型映射不同的值类型详解及实例代码

    主要介绍了Java泛型映射不同的值类型详解及实例代码的相关资料,需要的朋友可以参考下

    spring4.0 Generic Qualifier(泛型限定).docx

    Spring 4.0已经发布RELEASE版本,不仅支持Java8,而且向下兼容到JavaSE6/JavaEE6,并移出了相关废弃类,新添加如Java8的...其中两个我一直想要的增强就是:支持泛型依赖注入、对cglib类代理不再要求必须有空参构造器了

    spring4示例代码

    spring的生命周期及BeanPostProcessor的使用,注解方式创建bean 及使用Autowried标签关联类的属性 ,泛型依赖注入的使用 spring-3 演示使用动态代理模式实现面向切面编程 使用注解方式进行AOP编程及使用配置xml方式...

    bingo-bean:对象拷贝,目标是比dozer更快,功能更强大,更完整的支持泛型

    更完整的支持泛型1、该项目是复制对象的工具,创建目的是:a)、比Dozer、FastJson更快,占用内存更小b)、不同类型间的复制,包括对自定义泛型的深层识别,参见com.bingo.bean.domain.ParameterizedFromBean2...

    DWR.xml配置文件说明书(含源码)

    假设有个bean并且通过语句设置成远程可用,有种类型的参数他本身是一个带有setter的java bean,但setter会产生严重的隐患.攻击者可能促使这隐患的发生.通过下面的语句就可以设置但个类的bean converter ...

    BeanMapper-开源

    Java的简单/高效的递归属性映射器。 从外部Bean复制/转换/合并属性到目标Bean,反之亦然。 泛型/类型感知。 隐式在数组和集合之间以及已配置的类之间进行转换。

    Bean2Bean-开源

    简洁,快速的Java库,用于对象转换:*类之间的对象映射器,使用批注*任何类(或Type,甚至泛型)的类型转换器支持OGNL或Groovy等动态语言以用于自定义表达式Maven依赖项: net.sf.kfgodel bean2豆1.1.2 不要忘记添加...

    fastjson-1.2.83.jar下载

    fastjson-1.2.83.jar下载,...4. 支持泛型:fastjson支持泛型类型的解析和序列化。 5. 支持JSONPath:fastjson支持JSONPath表达式查询。 6. 支持注解:fastjson支持多种注解配置JSON序列化和反序列化。 7. 支持携带格式:f

    java进阶技术:泛型、反射、注解

    泛型是Java SE 1.5的新特性,好处是在...注解(Annotation)是JDK1.5及以后引入的新特性,与类、接口、枚举是在同一个层次。可声明在包、类、字段、方法、局部变量、方法参数等前面,用来对这些元素进行说明,注释。

Global site tag (gtag.js) - Google Analytics