<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>

                合規國際互聯網加速 OSASE為企業客戶提供高速穩定SD-WAN國際加速解決方案。 廣告
                # Spring – `@Lazy`加載 > [https://howtodoinjava.com/spring5/core/spring-bean-eager-vs-lazy-init/](https://howtodoinjava.com/spring5/core/spring-bean-eager-vs-lazy-init/) 默認情況下,Spring“應用程序上下文”會在應用程序啟動期間主動創建并初始化所有范圍為的 Bean。 在大多數情況下,它有助于早期發現 Bean 配置問題。 但是有時,由于項目要求不同,您可能需要標記部分或全部 bean 進行延遲初始化。 Spring 提供了兩種簡單的方法來配置 bean 的延遲初始化,具體取決于您使用的是哪種配置,即[基于 XML 的配置](https://howtodoinjava.com/spring5/core/spring-bean-xml-config/)或[基于 Java 的配置](https://howtodoinjava.com/spring5/core/spring-bean-java-config/)。 ## 1\. `@Lazy`初始化的 bean – Java 配置 #### 1.1. 延遲加載特定的 bean 要僅延遲加載特定的 bean,請在 Java 配置中使用[`@Lazy`](https://docs.spring.io/spring-framework/docs/current/javadoc-api/org/springframework/context/annotation/Lazy.html)注解和`@Bean`注解。 `AppConfig.java` ```java import org.springframework.context.annotation.Lazy; @Configuration public class AppConfig { @Lazy @Bean public EmployeeManager employeeManager() { return new EmployeeManagerImpl(); } } ``` #### 1.2. 延遲加載所有 bean 要延遲加載所有 bean,請在 Java 配置中使用`@Lazy`注解以及`@Bean`注解。 `AppConfig.java` ```java import org.springframework.context.annotation.Lazy; @Lazy @Configuration public class AppConfig { @Bean public EmployeeManager employeeManager() { return new EmployeeManagerImpl(); } } ``` #### 1.3. `@Autowired`延遲 Bean 通常,使用`@Autowired`注解將 bean 注入其他組件。 在這種情況下,我們必須在兩個地方都使用惰性標注: * 您要延遲加載的 bean 定義 * 它與`@Autowired`注解一起注入的位置 ```java @Lazy @Service public class EmployeeManagerImpl implements EmployeeManager { // } ``` ```java @Controller public class EmployeeController { @Lazy @Autowired EmployeeManager employeeManager; } ``` **在兩個地方都沒有使用`@Lazy`注解,它將無法正常工作。** ## 2\. XML 配置中的延遲初始化的 bean #### 2.1. 僅延遲加載特定的 bean 要為特定 bean 啟用延遲加載,請在 bean 配置 xml 文件中的 bean 定義上使用`lazy-init="true"`屬性。 `beans.xml` ```java <beans> <bean id="employeeManager" class="com.howtodoinjava.spring.service.impl.EmployeeManagerImpl" lazy-init="true"/> <beans> ``` #### 2.2. 延遲全局加載所有 bean 要為所有 bean 啟用延遲加載,請在 bean 配置 xml 文件的`beans`標簽上使用`default-lazy-init="true"`屬性。 `beans.xml` ```java <beans default-lazy-init="true"> <bean id="employeeManager" class="com.howtodoinjava.spring.service.impl.EmployeeManagerImpl" /> <beans> ``` ## 3\. Spring 延遲加載演示 讓我們看一下 bean 的代碼,我們正在嘗試延遲加載。 ```java @Lazy @Service public class EmployeeManagerImpl implements EmployeeManager { @Override public Employee create() { Employee emp = new Employee(); emp.setId(1); emp.setName("Lokesh"); return emp; } @PostConstruct public void onInit(){ System.out.println("EmployeeManagerImpl Bean is Created !!"); } } ``` 我已放置[`@PostConstruct`](https://howtodoinjava.com/spring/spring-core/spring-bean-life-cycle/)注解以檢測何時創建 bean。 讓我們使用 – 初始化應用程序上下文 #### 3.1. 沒有延遲加載 ```java import org.springframework.context.ApplicationContext; import org.springframework.context.annotation.AnnotationConfigApplicationContext; import com.howtodoinjava.spring.model.Employee; import com.howtodoinjava.spring.service.EmployeeManager; public class Main { public static void main( String[] args ) { ApplicationContext ctx = new AnnotationConfigApplicationContext(AppConfig.class); System.out.println("Bean Factory Initialized !!"); EmployeeManager empManager = ctx.getBean(EmployeeManager.class); Employee emp = empManager.create(); System.out.println(emp); } } ``` 程序輸出。 `Console` ```java EmployeeManagerImpl Bean is Created !! Bean Factory Initialized !! Employee [id=1, name=Lokesh] ``` 在這里,在 bean 工廠完全初始化之前,已創建并初始化了第一個 bean。 #### 3.2. 延遲加載 `Console` ```java Bean Factory Initialized !! EmployeeManagerImpl Bean is Created !! Employee [id=1, name=Lokesh] ``` 啟用 bean 延遲加載后,bean 工廠首先進行完全初始化。 稍后,當我們請求`EmployeeManager` bean 時,然后工廠創建實例并返回它。 請在注解部分中將與**的延遲加載和緊急加載之間的差異相關的問題放在 Spring** 中。 學習愉快! [下載源碼](https://github.com/lokeshgupta1981/spring-core/tree/master/src/main/java/com/howtodoinjava/core/demo/beans)
                  <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>

                              哎呀哎呀视频在线观看