<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 `AnnotationConfigApplicationContext` > [http://zetcode.com/spring/annotationconfigapplicationcontext/](http://zetcode.com/spring/annotationconfigapplicationcontext/) Spring `AnnotationConfigApplicationContext`教程展示了如何在 Spring 應用中使用`AnnotationConfigApplicationContext`。 Spring 是流行的 Java 應用框架。 ## `AnnotationConfigApplicationContext` `AnnotationConfigApplicationContext`是一個獨立的應用上下文,它接受帶注解的類作為輸入。 例如`@Configuration`或`@Component`。 可以使用`scan()`查找 Bean,也可以使用`register()`注冊 Bean。 ## Spring `AnnotationConfigApplicationContext`示例 以下示例使用`AnnotationConfigApplicationContext`來構建獨立的 Spring 應用。 它有一個 Spring bean `DateTimeService`,位于`scan()`中。 ```java pom.mxl src ├───main │ ├───java │ │ └───com │ │ └───zetcode │ │ │ Application.java │ │ └───bean │ │ DateTimeService.java │ └───resources │ logback.xml └───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>annotappctx</artifactId> <version>1.0-SNAPSHOT</version> <properties> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> <maven.compiler.source>11</maven.compiler.source> <maven.compiler.target>11</maven.compiler.target> <spring-version>5.1.3.RELEASE</spring-version> </properties> <dependencies> <dependency> <groupId>ch.qos.logback</groupId> <artifactId>logback-classic</artifactId> <version>1.2.3</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-context</artifactId> <version>${spring-version}</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-core</artifactId> <version>${spring-version}</version> </dependency> </dependencies> <build> <plugins> <plugin> <groupId>org.codehaus.mojo</groupId> <artifactId>exec-maven-plugin</artifactId> <version>1.6.0</version> <configuration> <mainClass>com.zetcode.Application</mainClass> </configuration> </plugin> </plugins> </build> </project> ``` 這是我們 Spring 應用的 Maven 構建文件。 `resources/logback.xml` ```java <?xml version="1.0" encoding="UTF-8"?> <configuration> <logger name="org.springframework" level="ERROR"/> <logger name="com.zetcode" level="INFO"/> <appender name="consoleAppender" class="ch.qos.logback.core.ConsoleAppender"> <encoder> <Pattern>%d{HH:mm:ss.SSS} %blue(%-5level) %magenta(%logger{36}) - %msg %n </Pattern> </encoder> </appender> <root> <level value="INFO" /> <appender-ref ref="consoleAppender" /> </root> </configuration> ``` 這是 Logback 配置文件。 `com/zetcode/bean/DateTimeService.java` ```java package com.zetcode.bean; import org.springframework.stereotype.Service; import java.time.LocalDate; import java.time.LocalDateTime; import java.time.LocalTime; @Service public class DateTimeService { public LocalDate getDate() { return LocalDate.now(); } public LocalTime getTime() { return LocalTime.now(); } public LocalDateTime getDateTime() { return LocalDateTime.now(); } } ``` `DateTimeService`是提供數據和時間服務的服務類。 它以`@Service`構造型裝飾,這使它在掃描過程中被檢測到。 `com/zetcode/Application.java` ```java package com.zetcode; import com.zetcode.bean.DateTimeService; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.context.annotation.AnnotationConfigApplicationContext; import org.springframework.stereotype.Component; @Component public class Application { private static final Logger logger = LoggerFactory.getLogger(Application.class); @Autowired private DateTimeService dateTimeService; public static void main(String[] args) { var ctx = new AnnotationConfigApplicationContext(); ctx.scan("com.zetcode"); ctx.refresh(); var bean = ctx.getBean(Application.class); bean.run(); ctx.close(); } public void run() { logger.info("Current time: {}", dateTimeService.getTime()); logger.info("Current date: {}", dateTimeService.getDate()); logger.info("Current datetime: {}", dateTimeService.getDateTime()); } } ``` 我們設置了應用并注入了`DateTimeService`。 我們稱這三種服務方法。 ```java @Component public class Application { ``` `Application`也是用原型裝飾,這次是`@Component`。 Spring 也會檢測到它。 我們需要調用其`run()`方法以超出靜態上下文。 ```java @Autowired private DateTimeService dateTimeService; ``` 服務類注入`@Autowired`。 ```java var ctx = new AnnotationConfigApplicationContext(); ctx.scan("com.zetcode"); ctx.refresh(); ``` 創建一個新的`AnnotationConfigApplicationContext`。 `scan()`方法掃描`com.zetcode`包及其子包中的帶注解的類,以生成 bean。 我們需要調用`refresh()`方法來完成該過程。 ```java public void run() { logger.info("Current time: {}", dateTimeService.getTime()); logger.info("Current date: {}", dateTimeService.getDate()); logger.info("Current datetime: {}", dateTimeService.getDateTime()); } ``` 我們獲取當前日期,時間和日期時間。 ```java $ mvn package $ mvn -q exec:java 19:25:12.842 INFO com.zetcode.Application - Current time: 19:25:12.842639200 19:25:12.842 INFO com.zetcode.Application - Current date: 2019-01-05 19:25:12.842 INFO com.zetcode.Application - Current datetime: 2019-01-05T19:25:12.842639200 ``` 我們運行該應用。 在本教程中,我們使用`AnnotationConfigApplicationContext`創建了一個新的獨立 Spring 應用。 您可能也對相關教程感興趣:[獨立的 Spring 應用](/articles/standalonespring/), [Spring `@ComponentScan`教程](/spring/componentscan/)和 [Java 教程](/lang/java/)。
                  <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>

                              哎呀哎呀视频在线观看