我想通过类型使用自动连接,以便在运行时容器注入适当的对象并调用适当的bean/method。
1.接口
public interface Calculator {
public int add(int a,int b);
}
2.头等舱
public class CalculatorImpl implements Calculator {
public int add(int a, int b) {
// TODO Auto-generated method stub
int result=a+b;
return result;
}
public class CalculatorImpl2 implements Calculator{
public int add(int a, int b) {
// TODO Auto-generated method stub
int result=a-b;
return result;
}
4.Rest课
@Component
@Path("/calc")
public class CalculationService {
@Autowired
Calculator calculator;
@GET
@Path("/add/{a}/{b}/")
@Qualifier("calculatorImpl")
@Produces("text/plain")
public Response serveAdd(@PathParam("a") int a,
@PathParam("b") int b)
{
int result= calculator.add(a, b);
return Response.status(200).entity(String.valueOf(result)).build();
}
@GET
@Path("/sub/{a}/{b}")
@Qualifier("calculatorImpl2")
public Response serveSub(@PathParam("a") int a,
@PathParam("b") int b)
{
int result= calculator.add(a, b);
return Response.status(200).entity(String.valueOf(result)).build();
}
}
5.application-context.xml
<context:component-scan base-package="com.veke.rest" />
<bean id="calculatorImpl"
class="com.veke.calcImpl.CalculatorImpl" autowire="byType"/>
<bean id="calculatorImpl2"
class="com.veke.calcImpl.CalculatorImpl2" autowire="byType"/>
</beans>
错误:
不能只有一个calculator
实例变量,并使其同时表现为CalculatorImpl
和CalculatorImpl2
。您需要进行以下更改:
在calculationservice
中:
@Autowired
@Qualifier("Impl1")
Calculator calculator;
@Autowired
@Qualifier("Impl2")
Calculator calculator2;
然后可以在相应的方法中使用这些实例变量。
我在调用get请求(modes-calcul)时遇到这个错误,我不明白为什么...我的依赖注入是正确的吗? ModeCalculController: 谢谢你的帮助..
2020-09-23T15:28:00.3483912Zjava.lang.IllegalStateExcture:未能加载Application ationContext 2020-09-23T15:28:00.3489821Z引起的原因:org.springframework.beans.factory.不满意依赖异常:创建在文件[/home/run/work/comation-service
这是我的pom 时出现以下错误
我使用一个Android库,它要求我创建两个类,每个类继承自不同的类 (具有公共基类) 现在我有这个代码: 我必须复制这个类来创建一个扩展,即使我的两个类共享完全相同的代码。 我简化了示例的代码,但重复可能很重要 我决定将代码放在这两个类之外的静态方法中,并在类重写的方法中调用它们,但我认为必须有一种更干净的方法来做到这一点。 你能帮我解决这个问题吗? 和都继承自。
问题内容: 我喜欢基于构造函数的注入,因为它允许我进行注入的字段。我还喜欢注释驱动的注入,因为它简化了我的操作。只要没有两个相同类型的参数,就可以用标记构造函数,并且一切正常。例如,我有一个课: 以及具有以下内容的应用程序上下文: 应该有一种在类的构造函数上指定bean ID的方法,但是我在文档中找不到它。是否有可能,或者我是否梦想着不存在的解决方案? 问题答案: 是按类型(在这种情况下);用于按
问题内容: 我有以下定义。 在我的bean定义中,我有两个相同类型的bean 如果有所不同,则从另一个xml文件导入第二个bean。它们也设置了不同的属性。为什么spring不会抛出错误,因为已经定义了2个相同类型的bean。它是否使用变量名,因为它们与bean id匹配。dao是不同的,如果我对两个不同的bean使用@Qualifiers,则功能可以按预期工作。 这是一个更简洁的版本。我没有考虑