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

                ### 組件添加 1、@Configuration ● 基本使用 ● Full模式與Lite模式 ○ 示例 ○ 最佳實戰 ■ 配置 類組件之間無依賴關系用Lite模式加速容器啟動過程,減少判斷 ■ 配置類組件之間有依賴關系,方法會被調用得到之前單實例組件,用Full模式 ### 新建一個bean: ```bash package com.maxiaoke.boot.bean; public class User { private String name; private Integer age; public User() { } public User(String name, Integer age) { this.name = name; this.age = age; } public String getName() { return name; } public void setName(String name) { this.name = name; } public Integer getAge() { return age; } public void setAge(Integer age) { this.age = age; } @Override public String toString() { return "User{" + "name='" + name + '\'' + ", age=" + age + '}'; } } ``` ### 添加配置類 ```bash package com.maxiaoke.boot.config; import com.maxiaoke.boot.bean.User; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; @Configuration(proxyBeanMethods = false) // 告訴SpringBoot,這是一個配置類 public class MyConfig { @Bean("tom") //給容器中添加組件。以方法名作為組件的id。返回類型就是組件類型。返回的值,就是組件在容器中的實例 public User user01() { User zhangsan = new User("zhangsan", 18); return zhangsan; } } ``` ### 測試 修改MainApplication啟動類: ```bash package com.maxiaoke.boot; import com.maxiaoke.boot.bean.User; import com.maxiaoke.boot.config.MyConfig; import org.springframework.boot.SpringApplication; import org.springframework.boot.SpringBootConfiguration; import org.springframework.boot.autoconfigure.EnableAutoConfiguration; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.context.ConfigurableApplicationContext; import org.springframework.context.annotation.ComponentScan; @SpringBootConfiguration @EnableAutoConfiguration @ComponentScan("com.maxiaoke.boot") public class MainApplication { //主方法 public static void main(String[] args) { //1、返回我們IOC容器 ConfigurableApplicationContext run = SpringApplication.run(MainApplication.class, args); //2、查看容器里面的組件 String[] names = run.getBeanDefinitionNames(); for (String name : names) { System.out.println(name); } //3、從容器中獲取組件 User tom01 = run.getBean("tom", User.class); User tom02 = run.getBean("tom", User.class); System.out.println("組件:"+(tom01 == tom02)); //4、com.maxiaoke.boot.config.MyConfig$$EnhancerBySpringCGLIB$$51f1e1ca@1654a892 MyConfig bean = run.getBean(MyConfig.class); System.out.println(bean); //如果@Configuration(proxyBeanMethods = true)代理對象調用方法。SpringBoot總會檢查這個組件是否在容器中有。 //保持組件單實例 User user = bean.user01(); User user1 = bean.user01(); System.out.println(user == user1); } } ``` 查看控制臺輸出: ![](https://img.kancloud.cn/5d/94/5d945f893f1d3bbad0643e11319e7028_1076x559.png =1000x) ### 配置類說明 1、配置類里面使用@Bean標注在方法上給容器注冊組件,默認也是單實例的 2、配置類本身也是組件 3、proxyBeanMethods:代理bean的方法 * Full(proxyBeanMethods=true)、【保證每個@Bean方法被調用多少次返回的組件都是單實例的】 * Lite(proxyBeanMethods=false)【每個@Bean方法被調用多少次返回的組件都是新創建的】 * 組件依賴必須使用Full模式默認。其他默認是否Lite模式
                  <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>

                              哎呀哎呀视频在线观看