2017-09-24 49 views
0

我在两个类中实现了相同的接口,并使用@Resource注解来改变它,但我无法在这里理解这个概念,只是在资源注释中提到一个名称。春天如何正确实施?同一个bean的多重实现

实现类是HomeBankingDaoImpl和HomeBankingDaoImplTwo。

@Autowired 
@Resource(name="homeBankingDaoImpl") 
HomeBankingDao homeBankingDao; 
@RequestMapping(value="/login",method=RequestMethod.GET) 
public String login(ModelMap model){ 
    System.out.println("###########################"); 
    model.addAttribute("signup",new Signup()); 
    return "login"; 
} 
+0

您的两个实现类是Spring Bean对象,Spring Beans有名称。如果你没有明确命名Spring Bean,Spring会在未限定的类名后面命名,例如类'HomeBankingDaoImpl'成为bean名称'homeBankingDaoImpl','@ Resource'的'name'属性命名要使用的bean。 – Andreas

+0

为什么你使用'@ Resource'&'@ Autowired'呢? –

+0

是啊我需要删除自动装订 – Yuvanath

回答

0

更换@Resource@Qualifier

@Autowired 
@Qualifier(name="homeBankingDaoImpl") 
HomeBankingDao homeBankingDao; 
@RequestMapping(value="/login",method=RequestMethod.GET) 
public String login(ModelMap model){ 
    System.out.println("###########################"); 
    model.addAttribute("signup",new Signup()); 
    return "login"; 
} 

有可用的互联网上了解@Qualifier许多来源。 这里有一个简单的教程,供您理解:https://www.tutorialspoint.com/spring/spring_qualifier_annotation.htm

+0

谢谢你的参考 – Yuvanath