中文字幕精品亚洲无线码二区,国产黄a三级三级三级看三级,亚洲七七久久桃花影院,丰满少妇被猛烈进入,国产小视频在线观看网站

springboot~注冊不同(tong)級別包(bao)里的bean~scanBasePackages

對于springboot來說,它會把當前應用程序所在的包裝載到ioc容器里,讓使用者可以直接Autowired注入它們,一般的項目結果是這樣的,這個項目包下有main方法,它將會把nacosdemo這個包里面所有的bean都掃描出來,然后在程序啟動時,nacosdemo里的bean就會被自動注冊了。
項目結構
目前我們做一個測試,在nacosdemo包外層再建立一個包common,在里面寫個組件,然后在nacosdemo里去使用它,整個項目結構如下
整個結構
這時,項目啟動后(hou),是無法加載到(dao)你的(de)bean的(de),因為它不會被掃(sao)描到(dao),解決方法是把它添加到(dao)掃(sao)描包列表里(li)

@SpringBootApplication(scanBasePackages = {"com.lind.nacosdemo", "com.lind.common"})
@EnableDiscoveryClient
public class NacosDemoApplication {
    public static void main(String[] args) throws InterruptedException {
        ConfigurableApplicationContext applicationContext = SpringApplication.run(NacosDemoApplication.class, args);
        String userName = applicationContext.getEnvironment().getProperty("user.name");
        String userAge = applicationContext.getEnvironment().getProperty("user.age");
        System.err.println("user name :" + userName + "; age: " + userAge);

    }
}

在添加時要(yao)注(zhu)冊,當前包(bao)的名稱也要(yao)加上,否則當前包(bao)也會被覆(fu)蓋的,這一點要(yao)清楚。

測試的代碼

common里(li)的組(zu)件(jian)bean

@Component
public class RedisConfig {
    public void print() {
        System.out.println("hello redis!");
    }
}

canosdemo包里調用(yong)它

  @Autowired
    RedisConfig redisConfig;
    @RequestMapping("/get")
    public String get() {
        redisConfig.print();
        return username;
    }

結果如圖,我們的方法被調用到了
結果
這種方法雖然實現(xian)了(le)我們的功能(neng),但需要在程序的入口(kou)維護一坨(tuo)坨(tuo)包名(ming),很(hen)不友好,下(xia)次我們說(shuo)對這塊進行(xing)重構。

posted @ 2020-06-10 13:06  張占嶺  閱讀(10406)  評論(0)    收藏  舉報