希望在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");
}
}
分享到:
相关推荐
json字符串实体bean或者List<bean>互转(gson和jackson,支持泛型),支持json的格式化,所需要的包在代码也有说明。还有少的可以告知我,谢谢
泛型dao,顾名思义就是一个dao可以对多个实体对象进行持久化。当应用中需要使用到上十张表时,DAO的维护变得日益困难,主要表现在这几个方面: 1)dao类的繁多,很多设计都是一个entity对应一个dao (不同的只有类名...
复制一个bean的值到另一个bean中,通常是为了实现对象之间的深度克隆。Java没有内置的深拷贝机制,但可以通过反射实现。假设我们有两个 `Person` 类的实例 `person1` 和 `person2`,我们想要将 `person1` 的属性值...
这些方法接收一个URL字符串和一个`OkCallback`对象作为参数,`OkCallback`用于处理请求的响应结果。 1. **OkHttpUtils的Bean封装**: 在实际开发中,我们通常会根据API返回的数据结构定义对应的Java Bean类。例如...
泛型是Java SE 5.0引入的一个重要特性,它允许在编译时检查类型安全,并且所有的强制转换都是自动和隐式的,提高了代码的重用率。下面我们将深入探讨SSH框架中泛型的应用及其重要性。 1. **Spring框架中的泛型** -...
这是一个常见的Java Web开发技术栈,用于构建高效、灵活的企业级应用程序。Struts2提供了MVC架构,Spring提供了依赖注入和事务管理,Hibernate则作为ORM工具处理数据库操作。 1. **Struts2**:Struts2是一个基于MVC...
总的来说,Spring的泛型依赖注入是其IOC功能的一个强大扩展,它增强了代码的灵活性,提供了类型安全的依赖注入,简化了多态服务的配置,使得大型项目中的依赖管理变得更加优雅和高效。通过深入理解和实践这一特性,...
Spring的泛型依赖注入允许我们声明一个具有类型参数的bean,并在配置文件中指定实际的实现类。例如,我们有一个接口`Service<T>`,以及实现了这个接口的`UserService`和`ProductService`。在Spring配置文件中,我们...
例如,我们可以定义一个泛型方法`save(T entity)`,这个方法可以自动处理任何类型的实体,只要它们符合Java Bean规范。 博客中可能还会涉及如何配置SSH2框架,如Spring的bean配置、Hibernate的实体映射以及Struts的...
servlet类向jsp传递带泛型数组。泛型为自定义的bean
Maven是一个项目管理和构建工具,能够帮助开发者自动化构建过程,简化依赖管理。在本案例中,我们可以使用Maven来构建整个工程,包括管理依赖、编译代码、打包、测试等步骤。 ##### 3.1 添加依赖 在项目的`pom.xml...
另一个改进是对于`BeanUtils`类的升级,它在处理泛型Bean时更加灵活。例如,`BeanUtils.copyProperties()`方法现在能够更好地处理目标Bean的泛型属性,自动转换源Bean的属性值,确保类型匹配。这使得在Bean复制过程...
泛型允许我们在定义类、接口或方法时指定一个或多个类型参数,从而可以在编译时避免类型转换错误。例如,DAO中的T就是一个类型参数,代表某种未知的具体类型。 在Java中,泛型信息在编译后会被擦除,因此无法直接从...
例如,可以定义一个泛型Bean工厂,这样在获取Bean时,编译器会自动检查类型匹配,避免了强制类型转换。同时,Spring的AOP(面向切面编程)也能够利用泛型,提供更加精确的切面定义。 Struts2作为MVC框架,其Action...
4. 配置管理:设计一个配置管理系统,它可以是简单的Java集合,也可以是一个基于XML或注解的配置,用于存储bean的定义和依赖关系。 5. 注册和启动:在应用程序启动时,加载配置并启动注入过程,确保所有依赖都正确地...
总的来说,"SSHWithAnnotationDemo"项目展示了如何利用现代Java技术栈的高级特性,包括Struts2、Spring3和Hibernate的注解功能,DAO层的泛型设计以及通用的分页实现,来构建一个高效、可维护的Web应用。这样的实践...
1. **Java Bean**: Java Bean是Java中的一个简单对象,通常具有getter和setter方法,用于封装数据。在JAXB中,这些Bean类会被映射到XML元素和属性。 2. **XML Schema**: 定义了XML文档的结构和数据类型的规范。JAXB...
先说一下遇到的问题:通过使用GSON泛型进行报文转换的时候想要对部分关键字段加密,发现在封装好的方法中,对个别字段的加密满足不了。 解决过程:首先通过反射获取到bean下的对象名称。 对象名称获取到了之后需要...
当我们需要将XML字符串解析并映射到Java Bean对象时,dom4j是一个常用的库。本篇文章将详细探讨如何使用dom4j库实现这个过程。 首先,dom4j是一个强大的Java XML API,它提供了丰富的功能,如读取、写入、修改和...