0 0

spring自动注入并过滤的问题0

接口:com.eman.menu.dao.MenuDao

两个实现类:
com.eman.menu.dao.impl.oracle.MenuDaoImpl
com.eman.menu.dao.impl.mssql.MenuDaoImpl

事件类代码:
@Service
@Transactional
public class MenuService {

@Resource
private MenuDao menuDao;

public List<Menu> queryAllMenu() {
System.out.println("------------");

return this.menuDao.findList();
}

public void query() {

}
}

applicationContext.xml 配置
<context:component-scan base-package="com.eman.*.dao" >
<context:exclude-filter type="regex" expression="com.eman.*.dao.impl.oracle.*"/>
</context:component-scan>

我的目的:
    我想通过配置指定spring自动注入实现类的,比如上面的配置我想MenuDao menuDao 对象是获得oracle包下的对象,而不mssql包下的对象。

目前的错误信息是,它同时加载了两个对象,一个是mssql下的,一个是oracle下的,我试过很多次,都不能解决这个问题。我把报错的信息贴出来
org.springframework.beans.factory.BeanDefinitionStoreException: Unexpected exception parsing XML document from class path resource [applicationContext.xml]; nested exception is org.springframework.context.annotation.ConflictingBeanDefinitionException: Annotation-specified bean name 'MenuDao' for bean class [com.eman.menu.dao.impl.oracle.MenuDaoImpl] conflicts with existing, non-compatible bean definition of same name and class [com.eman.menu.dao.impl.mssql.MenuDaoImpl]

问题补充:最新测试结果:
<context:component-scan base-package="com.eman.*.dao.*" use-default-filters="true">
<context:exclude-filter type="regex" expression="com.eman.*.dao.impl.oracle.*"/>
</context:component-scan>
它获取的mssql包下的对象,运行成功

<context:component-scan base-package="com.eman.*.dao.*" use-default-filters="true">
<context:exclude-filter type="regex" expression="com.eman.*.dao.impl.mssql.*"/> 
</context:component-scan>

则报错:
java.lang.ClassCastException: com.eman.core.dao.impl.oracle.SysInitDaoImpl cannot be cast to com.eman.core.dao.impl.mssql.SysInitDaoImpl
at com.eman.core.service.SysInitService.contextInitialized(SysInitService.java:30)
at org.apache.catalina.core.StandardContext.listenerStart(StandardContext.java:3827)
at org.apache.catalina.core.StandardContext.start(StandardContext.java:4334)
at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:791)
at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:771)
at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:525)
at org.apache.catalina.startup.HostConfig.deployDirectory(HostConfig.java:920)
at org.apache.catalina.startup.HostConfig.deployDirectories(HostConfig.java:883)
at org.apache.catalina.startup.HostConfig.deployApps(HostConfig.java:492)
at org.apache.catalina.startup.HostConfig.start(HostConfig.java:1138)
at org.apache.catalina.startup.HostConfig.lifecycleEvent(HostConfig.java:311)
at org.apache.catalina.util.LifecycleSupport.fireLifecycleEvent(LifecycleSupport.java:117)
at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1053)
at org.apache.catalina.core.StandardHost.start(StandardHost.java:719)
at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1045)
at org.apache.catalina.core.StandardEngine.start(StandardEngine.java:443)
at org.apache.catalina.core.StandardService.start(StandardService.java:516)
at org.apache.catalina.core.StandardServer.start(StandardServer.java:710)
at org.apache.catalina.startup.Catalina.start(Catalina.java:566)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at org.apache.catalina.startup.Bootstrap.start(Bootstrap.java:288)
at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:413)
2012-7-26 14:45:38 org.apache.catalina.core.StandardContext start

问题补充:已经解决,配置是正确的,只是其它代码写错了。
2012年7月26日 14:19
目前还没有答案

相关推荐

    SQL注入原理以及Spring Boot如何防止SQL注入(含详细示例代码)

    攻击过程包括发现漏洞、注入代码、执行查询、获取数据和利用结果,可能导致数据泄露、数据篡改、权限提升等一系列问题。 防止SQL注入的方法主要包括: 1. 参数化查询:使用预编译的SQL语句(如PreparedStatement)...

    java web Xss及sql注入过滤器.zip

    本项目"java web Xss及sql注入过滤器.zip"就是针对这两种威胁提供的一种解决方案,基于流行的Spring Boot 2.0框架进行开发。 XSS 攻击是通过在网页中插入恶意脚本,当其他用户访问该页面时,这些脚本会被执行,从而...

    Spring-MVC处理XSS、SQL注入攻击的方法总结

    本文介绍了两种在 Spring MVC 应用中防御 XSS 和 SQL 注入攻击的方法:数据入库前非法字符转义与显示时非法字符转义,并提供了相应的示例代码。此外,还提到了利用框架内置工具来简化这一过程的可能性。这些方法不仅...

    SpringCloud Function SpEL注入漏洞分析(CVE-2022-22963).doc

    然而,在 SpringCloud Function 中存在一个 SpEL 注入漏洞(CVE-2022-22963),该漏洞可能会导致攻击者可以执行恶意代码,从而导致严重的安全问题。 SpEL(Spring Expression Language)是一种强大的表达式语言,...

    Spring学习笔记(9)----让Spring自动扫描和管理Bean

    在Spring框架中,自动扫描和管理Bean是一种便捷的方式,它允许开发者无需显式配置每个Bean,而是通过指定包路径来让Spring自动发现和管理Bean。本文将深入探讨这个主题,帮助你更好地理解和应用这一功能。 首先,让...

    springcloud-服务注入与发现、服务间调用、负载均衡.zip

    本文将深入探讨这些核心概念,帮助你理解并掌握SpringCloud在实际开发中的应用。 1. **服务注入与发现** 在SpringCloud中,服务注入与发现主要依赖于Eureka组件。Eureka是一个分布式服务注册与发现的平台,服务...

    详解 Spring注解的(List&Map)特殊注入功能

    理解这种特殊注入功能的关键在于,Spring会自动处理符合类型要求的所有bean,并根据需要创建集合或映射结构。这使得我们可以在不显式配置的情况下,灵活地管理一组相似的bean。 **相关知识点总结:** 1. Spring的`@...

    spring mvc 参数绑定漏洞

    2. **静态代码分析工具**:SonarQube、FindBugs等可以自动化检测代码中的安全漏洞和潜在问题。 3. **动态分析工具**:Burp Suite、OWASP ZAP等可以模拟攻击,帮助发现应用的漏洞。 通过深入理解Spring MVC的工作...

    Spring 管理filter 和servlet

    开发者无需在Filter或Servlet内部硬编码bean名称,而是通过Spring容器自动注入所需的依赖,大大提升了代码的整洁度和复用性。此外,Spring提供的Filter和Servlet代理类,进一步简化了集成过程,使开发者可以专注于...

    详解Spring_3.0基于Annotation的依赖注入实现

    ### 详解Spring 3.0基于Annotation的依赖注入实现 #### 概述 Spring框架作为一个广泛使用的Java开发框架,提供了强大的依赖注入(Dependency Injection, DI)能力,帮助开发者轻松管理和组织复杂的Java应用。随着...

    springsecurity2 自定义filter实现

    - 认证成功后,Spring Security会自动处理后续流程;失败时,你可能需要设置异常或返回相应的错误响应。 5. **权限控制**: - 自定义Filter也可以用于实现更细粒度的权限控制。例如,你可以检查请求的特定参数或...

    Spring攻略(第二版 中文高清版).part1

    6.2 在你的Servlet和过滤器中使用Spring 214 6.2.1 问题 214 6.2.2 解决方案 215 6.2.3 工作原理 215 6.3 将Spring与Struts 1.x集成 220 6.3.1 问题 220 6.3.2 解决方案 220 6.3.3 工作原理 220 6.4...

    SpringCloud项目源码下载.docx

    通过以上介绍,我们不仅了解了Spring Cloud的基本概念和核心组件,还掌握了如何下载并使用其源码进行深入学习的方法。这对于开发者来说是非常宝贵的学习资源,有助于更好地理解和应用Spring Cloud技术栈。

    springboot_redis

    Spring Boot提供了自动配置支持,所以只需要添加`spring-boot-starter-data-redis`依赖即可。 ```xml &lt;!-- Maven --&gt; &lt;groupId&gt;org.springframework.boot &lt;artifactId&gt;spring-boot-starter-data-redis // ...

    spring cloud gateway 例子

    “spring”则强调了这个示例是基于Spring框架的,这通常意味着代码将使用Java或Kotlin编写,利用Spring Boot的自动配置和依赖注入特性。 在压缩包中的`gateway-sample`可能是示例项目的源代码,包含了如何搭建和...

    spring_精简教程

    - **Spring与SSH整合实例**:通过绘制SSH(Spring、Struts2、Hibernate)整合实例的架构图,清晰地展示了客户端请求经过的各个层次,包括核心过滤器、Action、Service层、DAO层以及Hibernate的数据库操作过程。...

    spring in action的jar包

    1. **Spring Core**:这是Spring框架的基础,提供了依赖注入(Dependency Injection,DI)和面向切面编程(Aspect-Oriented Programming,AOP)的支持。DI允许我们解耦组件,使它们更易于测试和维护,而AOP则提供了...

    springmvc4.1+spring4.1+mybatis3.2+spring-security3.2的maven环境搭建

    Spring框架是Java企业级应用开发的基石,提供了依赖注入、AOP(面向切面编程)、事务管理等多种功能。Spring 4.1引入了对Java 8的支持,包括Lambda表达式和日期/时间API,还增强了数据访问层的性能和内存使用效率。 ...

    spring+spingmvc+hibernate整合总结

    `beans.xml`是Spring的核心配置文件,这里通常会开启组件扫描,使Spring自动发现并管理带有注解的bean。此外,还需要配置数据源、SessionFactory、事务管理器以及JSR303验证规则,以支持数据校验。 通过以上步骤,...

Global site tag (gtag.js) - Google Analytics