簡體   English   中英

自動裝配XML中定義的bean-Spring Boot

[英]Autowiring a bean defined in XML - Spring Boot

我是Spring(&boot)的新手,現在面臨以下問題。 我在XML文件中定義了一些Bean。 我可以使用ApplicationContext.getBean()檢索這些bean,相反,我想對其進行自動Autowire ,或在無法訪問'ApplicationContext'的類中使用它們

我的項目的簡化版本:

beans.xml:

<bean id="PartnerDao" name="PartnerDao" class="partner.dao.PartnerDAOImpl">
   <constructor-arg index="0" value="${integration.username}"/>
   <constructor-arg index="1" value="${integration.password}"/>
</bean>

applicationContext.xml:

<beans>
    <import resource="classpath:beans.xml" />
    <context:annotation-config/>
    <cache:annotation-driven/>
    <task:annotation-driven/>
</beans>

Application.java:

@SpringBootApplication
public class Application extends SpringBootServletInitializer {
    public static void main(String[] args) {
        SpringApplication.run(Application.class, args);
    }

    @Override
    protected SpringApplicationBuilder configure(SpringApplicationBuilder builder) {
        return builder.sources(Application.class);
    }
}

PartnerService.java:

@Service
public class PartnerService {

  @Autowired
  @Qualifier("PartnerDao")
  PartnerDAO partnerDao;

}

構建時,遇到以下異常:

org.springframework.beans.factory.NoSuchBeanDefinitionException:
No qualifying bean of type 'partner.dao.PartnerDAO' available:
expected at least 1 bean which qualifies as autowire candidate.
Dependency annotations: {@org.springframework.beans.factory.annotation.Autowired(required=true), @org.springframework.beans.factory.annotation.Qualifier(value=PartnerDao)}

正如我提到的那樣,我是Spring的新手,並且一直在使用Spring Boot的注解進行操作,但是我的主管構造了這個beans.xml以便與其他服務集成,並且我不確定如何自動裝配它。

我總能做到:

ApplicationContext context = new ClassPathXmlApplicationContext("beans.xml");
PartnerDAO partnerDao = context.getBean(partner.dao.PartnerDAOImpl.class);

但是我寧願只是自動接線。

還有其他可行的解決方案嗎?

謝謝。

Bean接線對應於提供Bean可能需要完成的依賴關系。 在Spring中,可以通過兩種方式將bean連接在一起:手動和自動裝配。

手動接線:在屬性構造函數標簽中使用ref屬性

<bean id="PartnerDao" name="PartnerDao" class="partner.dao.PartnerDAOImpl">
   <constructor-arg index="0" value="${integration.username}">
<ref bean="PartnerDao" />
<constructor-arg/>
   <constructor-arg index="1" value="${integration.password}"/>
</bean>

我不確定這是否行得通,但至少可以嘗試。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM