我有以下...
package package1;
@Service
@Qualifier("kb")
public class UserService {
...
}
package package2;
@Service
@Qualifier("user")
public class UserService {
...
}
@Autowired
@Qualifier("user")
package2.UserService p2;
@Autowired
@Qualifier("kb")
package1.UserService p1;
但是当我试着运行这个时,我得到。。。
组织。springframework。豆。工厂BeanDefinitionStoreException:未能分析配置类[boot.Application];嵌套的异常是org。springframework。上下文注释。ConflictingBeanDefinitionException:为bean类[package1.userService]指定的注释bean名称“userService”与相同名称和类[package2.userService]的现有不兼容bean定义冲突
我如何拥有2个同名服务?
在这里,您需要理解@Qualifier的用途。
当您创建多个相同类型的bean并且只想将其中一个连接到属性时,可能会出现这种情况。在这种情况下,您可以使用@Qualifier注释和@Autowired,通过指定要连接的确切bean来消除混淆。
您正在尝试创建两个名称相同但包不同的类。为此,您需要将服务的名称指定为@service注释的值参数,以便区分这两种类型:
package package1;
@Service("kb")
public class UserService {
...
}
package package2;
@Service("user")
public class UserService {
...
}
@Autowired
@Qualifier("user")
package2.UserService p2;
@Autowired
@Qualifier("kb")
package1.UserService p1;
从类中删除@Qualifer,仅在自动连接时使用@Qualifer
@Service("kb")
public class UserService {
...
}
package package2;
@Service("user")
public class UserService {
...
}
来自@Qualifier javadoc
**
* This annotation may be used on a field or parameter as a qualifier for
* candidate beans when autowiring. It may also be used to annotate other
* custom annotations that can then in turn be used as qualifiers.
*/
问题内容: 如何在不同的程序包中访问两个具有相同名称的类? 和 所有这些都在同一个班级 谢谢。 问题答案: 您将必须导入另一个,您将编写完全合格的路径 例如在您的代码中:
问题内容: 我正在尝试使用RSA 7.5和Websphere 7服务器开发IBM JAX_WS Web服务。因为我是一个初学者,所以我遵循Java类优先方法,即首先创建Java类,然后生成WSDL文件。 当我尝试创建wsdl文件时,出现异常: java.security.PrivilegedActionException:com.sun.xml.internal.bind.v2.runtime.I
我用的是spring soap ws。 我有以下对应于复杂类型的JAXB域类 我有以下带有@XmlRegistry注释的类 以下是endpoint 当我发出 Soap 请求时,我正在使用 soap 请求中的终结点中给出NAMESPACE_URI。 在这里,在这种情况下,我得到以下回应 如果我使用"超文本传输协议://命名空间/url"作为NAMESPACE_URI在endpoint和肥皂请求我得到
我有两个类,它们具有相同的类名并使用相同的包名。但是,这两个类文件位于不同的目录中。这两个类之间的另一个不同之处是,每个类中都有其他类中没有的方法。本质上,我想将这些方法拆分为两个使用相同名称但不同文件夹的单独文件。 理论上,我认为这是可能的,因为Java编译器在构建输出时确实维护了目录结构。所以在运行时,如果在类中调用了一个方法,Java可能会在任何一个文件中找到该方法。 这可能吗?我使用的是I
问题内容: 我在xcode 9.3和xcode 10 beta 3操场上都运行此代码 即使两者都使用Swift 4.1,但它们却给了我不同的结果 在 xcode 9.3 上,数组的大小为 4 在 xcode 10 beta 3 上,数组的大小为 0 我一点都不明白。 问题答案: 这是获取所有枚举值序列的一种未公开的方法,并且仅在偶然的早期Swift版本中才起作用。它依赖于枚举值的哈希值是从零开始的
我有一个react-native应用程序,带有react-native购买和react-native指示包。他们都有进口品 由:java.lang.runtimeException:com.android.builder.dexing.dexarchivEmergerException:合并dex归档时出错:在https://developer.android.com/studio/build/d