<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                ThinkChat2.0新版上線,更智能更精彩,支持會話、畫圖、視頻、閱讀、搜索等,送10W Token,即刻開啟你的AI之旅 廣告
                # Spring Boot `@Component` > 原文: [http://zetcode.com/springboot/component/](http://zetcode.com/springboot/component/) Spring Boot `@Component`教程顯示了如何在 Spring 應用中使用`@Component`注解。 在示例中,我們創建一個 Spring Boot 控制臺應用。 Spring 是流行的 Java 應用框架,而 Spring Boot 是 Spring 的演進,可以幫助輕松地創建獨立的,生產級的基于 Spring 的應用。 ## `@Component` `@Component`是最通用的 Spring 注解。 在類路徑掃描期間找到裝飾有`@Component`的 Java 類,并在上下文中注冊為 Spring Bean。 `@Service`,`@Repository`和`@Controller`是`@Component`的專業,用于更具體的情況。 `@ComponentScan`確保找到用`@Component`裝飾的類并將其注冊為 Spring Bean。 `@ComponentScan`自動包含在`@SpringBootApplication`中。 `@Bean`具有與`@Component`類似的目的。 不會自動檢測到。 用`@Bean`裝飾的方法會在配置階段生成一個由 Spring 容器管理的 bean。 ## Spring Boot `@Component`示例 以下應用演示了`@Component`的用法。 它使用注解創建一個隨機生成名稱的 bean。 ```java pom.xml src ├───main │ ├───java │ │ └───com │ │ └───zetcode │ │ │ Application.java │ │ │ MyRunner.java │ │ └───service │ │ RandomNameGenerator.java │ └───resources │ application.properties └───test └───java ``` 這是項目結構。 `pom.xml` ```java <?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>com.zetcode</groupId> <artifactId>springbootcomponentex</artifactId> <version>1.0-SNAPSHOT</version> <packaging>jar</packaging> <properties> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> <maven.compiler.source>11</maven.compiler.source> <maven.compiler.target>11</maven.compiler.target> </properties> <parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>2.1.1.RELEASE</version> </parent> <dependencies> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter</artifactId> </dependency> </dependencies> <build> <plugins> <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> </plugin> </plugins> </build> </project> ``` 這是 Maven `pom.xml`文件。 `spring-boot-starter-parent`是父 POM,它為使用 Maven 構建的應用提供依賴關系和插件管理。 `spring-boot-starter`是一個核心啟動器,包括自動配置支持,日志記錄和 YAML。 `spring-boot-maven-plugin`將 Spring 應用打包到可執行的 JAR 或 WAR 歸檔文件中。 `resources/application.properties` ```java spring.main.banner-mode=off logging.level.org.springframework=ERROR logging.pattern.console=%d{dd-MM-yyyy HH:mm:ss} %magenta([%thread]) %highlight(%-5level) %logger.%M - %msg%n ``` `application.properties`是 Spring Boot 中的主要配置文件。 我們關閉 Spring 橫幅,通過僅選擇錯誤消息來減少 Spring 框架的日志記錄數量,并設置控制臺日志記錄模式 `com/zetcode/service/RandomNameGenerator.java` ```java package com.zetcode.service; import org.springframework.stereotype.Component; import java.util.List; import java.util.Random; @Component public class RandomNameGenerator { public String generate() { var names = List.of("Peter", "Roland", "Lucy", "Robert", "Jane"); var r = new Random(); int i = r.nextInt(names.size()); return names.get(i); } } ``` `RandomNameGenerator`是裝飾有`@Component`的 Java 類。 在組件掃描過程中將檢測到它,并將其注冊為 Spring Bean。 `com/zetcode/MyRunner.java` ```java package com.zetcode; import com.zetcode.service.RandomNameGenerator; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.CommandLineRunner; import org.springframework.stereotype.Component; @Component public class MyRunner implements CommandLineRunner { private static final Logger logger = LoggerFactory.getLogger(MyRunner.class); @Autowired private RandomNameGenerator randGenerator; @Override public void run(String... args) { logger.info("Generating random name: {}", randGenerator.generate()); logger.info("Generating random name: {}", randGenerator.generate()); logger.info("Generating random name: {}", randGenerator.generate()); } } ``` 通過實現`CommandLineRunner`,將在應用啟動后執行`MyRunner`類的`run()`方法。 ```java @Component public class MyRunner implements CommandLineRunner { ``` `MyRunner`也裝飾有`@Component`,因此也會自動檢測并注冊。 ```java @Autowired private RandomNameGenerator randGenerator; ``` 使用`@Autowired`注解,我們將`RandomNameGenerator` bean 注入到`randGenerator`字段中。 ```java @Override public void run(String... args) { logger.info("Generating random name: {}", randGenerator.generate()); logger.info("Generating random name: {}", randGenerator.generate()); logger.info("Generating random name: {}", randGenerator.generate()); } ``` 在`run()`方法中,我們記錄包含隨機名稱的消息。 `com/zetcode/Application.java` ```java package com.zetcode; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; @SpringBootApplication public class Application { public static void main(String[] args) { SpringApplication.run(Application.class, args); } } ``` `Application`是設置 Spring Boot 應用的入口。 `@SpringBootApplication`注解啟用自動配置和組件掃描。 它是`@Configuration`,`@EnableAutoConfiguration`和`@ComponentScan`注解的便捷注解。 ```java $ mvn -q spring-boot:run ... 30-04-2019 12:22:44 [main] INFO com.zetcode.MyRunner.run - Generating random name: Roland 30-04-2019 12:22:44 [main] INFO com.zetcode.MyRunner.run - Generating random name: Peter 30-04-2019 12:22:44 [main] INFO com.zetcode.MyRunner.run - Generating random name: Lucy ``` 應用運行后,我們可以在控制臺中看到日志消息。 在本教程中,我們展示了如何在 Spring 應用中使用`@Component`注解。 您可能也對相關教程感興趣: [Spring Boot `@Controller`教程](/springboot/controller/), [Spring Boot `@Repository`教程](/springboot/repository/), [Java 教程](/lang/java/)或列出全部 Spring 入門教程。
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看