-
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注入的方法主要包括: 1. 参数化查询:使用预编译的SQL语句(如PreparedStatement)...
本项目"java web Xss及sql注入过滤器.zip"就是针对这两种威胁提供的一种解决方案,基于流行的Spring Boot 2.0框架进行开发。 XSS 攻击是通过在网页中插入恶意脚本,当其他用户访问该页面时,这些脚本会被执行,从而...
本文介绍了两种在 Spring MVC 应用中防御 XSS 和 SQL 注入攻击的方法:数据入库前非法字符转义与显示时非法字符转义,并提供了相应的示例代码。此外,还提到了利用框架内置工具来简化这一过程的可能性。这些方法不仅...
然而,在 SpringCloud Function 中存在一个 SpEL 注入漏洞(CVE-2022-22963),该漏洞可能会导致攻击者可以执行恶意代码,从而导致严重的安全问题。 SpEL(Spring Expression Language)是一种强大的表达式语言,...
在Spring框架中,自动扫描和管理Bean是一种便捷的方式,它允许开发者无需显式配置每个Bean,而是通过指定包路径来让Spring自动发现和管理Bean。本文将深入探讨这个主题,帮助你更好地理解和应用这一功能。 首先,让...
本文将深入探讨这些核心概念,帮助你理解并掌握SpringCloud在实际开发中的应用。 1. **服务注入与发现** 在SpringCloud中,服务注入与发现主要依赖于Eureka组件。Eureka是一个分布式服务注册与发现的平台,服务...
理解这种特殊注入功能的关键在于,Spring会自动处理符合类型要求的所有bean,并根据需要创建集合或映射结构。这使得我们可以在不显式配置的情况下,灵活地管理一组相似的bean。 **相关知识点总结:** 1. Spring的`@...
2. **静态代码分析工具**:SonarQube、FindBugs等可以自动化检测代码中的安全漏洞和潜在问题。 3. **动态分析工具**:Burp Suite、OWASP ZAP等可以模拟攻击,帮助发现应用的漏洞。 通过深入理解Spring MVC的工作...
开发者无需在Filter或Servlet内部硬编码bean名称,而是通过Spring容器自动注入所需的依赖,大大提升了代码的整洁度和复用性。此外,Spring提供的Filter和Servlet代理类,进一步简化了集成过程,使开发者可以专注于...
### 详解Spring 3.0基于Annotation的依赖注入实现 #### 概述 Spring框架作为一个广泛使用的Java开发框架,提供了强大的依赖注入(Dependency Injection, DI)能力,帮助开发者轻松管理和组织复杂的Java应用。随着...
- 认证成功后,Spring Security会自动处理后续流程;失败时,你可能需要设置异常或返回相应的错误响应。 5. **权限控制**: - 自定义Filter也可以用于实现更细粒度的权限控制。例如,你可以检查请求的特定参数或...
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...
通过以上介绍,我们不仅了解了Spring Cloud的基本概念和核心组件,还掌握了如何下载并使用其源码进行深入学习的方法。这对于开发者来说是非常宝贵的学习资源,有助于更好地理解和应用Spring Cloud技术栈。
Spring Boot提供了自动配置支持,所以只需要添加`spring-boot-starter-data-redis`依赖即可。 ```xml <!-- Maven --> <groupId>org.springframework.boot <artifactId>spring-boot-starter-data-redis // ...
“spring”则强调了这个示例是基于Spring框架的,这通常意味着代码将使用Java或Kotlin编写,利用Spring Boot的自动配置和依赖注入特性。 在压缩包中的`gateway-sample`可能是示例项目的源代码,包含了如何搭建和...
- **Spring与SSH整合实例**:通过绘制SSH(Spring、Struts2、Hibernate)整合实例的架构图,清晰地展示了客户端请求经过的各个层次,包括核心过滤器、Action、Service层、DAO层以及Hibernate的数据库操作过程。...
1. **Spring Core**:这是Spring框架的基础,提供了依赖注入(Dependency Injection,DI)和面向切面编程(Aspect-Oriented Programming,AOP)的支持。DI允许我们解耦组件,使它们更易于测试和维护,而AOP则提供了...
Spring框架是Java企业级应用开发的基石,提供了依赖注入、AOP(面向切面编程)、事务管理等多种功能。Spring 4.1引入了对Java 8的支持,包括Lambda表达式和日期/时间API,还增强了数据访问层的性能和内存使用效率。 ...
`beans.xml`是Spring的核心配置文件,这里通常会开启组件扫描,使Spring自动发现并管理带有注解的bean。此外,还需要配置数据源、SessionFactory、事务管理器以及JSR303验证规则,以支持数据校验。 通过以上步骤,...