簡體   English   中英

如何將這些類注入到我的Spring控制器類中?

[英]How are injected these classes into my Spring controller class?

我在Spring剛起步,對如何將某些類注入控制器類存有疑問。

進入我的項目,我有這個HomeController類:

@Controller
public class HomeController {

    private static final Logger logger = LoggerFactory.getLogger(HomeController.class);
    @Autowired
    private MessageSource  messageSource;
    @Autowired
    private Environment env;

    .....................................................
    .....................................................
    .....................................................
}

我的懷疑與2個對象MessageSource messageSourceEnvironment env類有關。

如您所見,這些類是通過@Autowired注釋注入的。

問題是我沒有為這些類在XML配置中定義bean。 那么為什么要正確注射呢? 這些bean的定義在哪里?

TNX

Spring映射可以使用XML注釋來完成。

在您的情況下,如果未定義XML,則應使用Spring批注(@Component @Service@Resource映射您的MessageSourceEnvironment類:

@Component

指示帶注釋的類是 “組件”。 當使用基於注釋的配置和類路徑掃描時,此類會被視為自動檢測的候選

@Autowired

@Autowired注解將嘗試在春季上下文中找到Foo類型的bean,然后將其注入。

@Resource

與此類似的是@Resource批注,它將嘗試查找名稱為“ foo”的bean。 總而言之,@ Autowired導線按類型,@ Resource導線按名稱。

Bean的自動發現基於以下規則:

1)在spring-config.xml中使用context:annotation-config標簽讓Spring使用Annotations
2)在spring-config.xml中使用context:component-scan標記,並告訴Spring在其中尋找自動發現bean的包
3)使用@Component批注將類標記為Spring自動發現的bean

如果使用@Component annotation ,則不需要在spring-config.xml中聲明Bean聲明。

EnvironmentMessageSource都與Spring Framework的內部工作緊密相關。

該環境是應用程序上下文的一部分,將可用於自動裝配。

ApplicationContext接口擴展了MessageSource接口,即使您尚未定義自己的消息源Bean,也可以將其作為消息源進行自動裝配。 (如果您定義自己的消息源,則應用程序上下文將委托給該消息源)

暫無
暫無

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

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