最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Spring 方法注解@Bean及配置類掃描路徑

 更新時間:2024年12月23日 11:53:35   作者:三三是該溜子  
這篇文章主要介紹了Spring 方法注解@Bean及配置類掃描路徑,本文通過實例代碼給大家介紹的非常詳細,感興趣的朋友一起看看吧

引入

類注解是添加到某個類上的,但是存在兩個問題

1. 使?外部包?的類,沒辦法添加類注解

2. ?個類,需要多個對象,?如多個數(shù)據(jù)源

這種場景,我們就需要使??法注解 @Bean

一:@Bean方法注解

1:方法注解要搭配類注解使用

@Component
public class BeanConfig {
    @Bean
    public User user() {
        User user = new User();
        user.setName("zhangsan");
        user.setAge(18);
        return user;
    }
}
@SpringBootApplication
public class SpringIocDemoApplication {
    public static void main(String[] args) {
        // 獲取Spring上下?對象
        ApplicationContext context = SpringApplication.run(SpringIocDemoApplication.class, args);
        // 從Spring上下?中獲取對象
        User user = context.getBean(User.class);
        // 使?對象
        System.out.println(user);
    }
}

2:執(zhí)行結(jié)果

如果不搭配類注解使用,Spring會報錯沒有找到這樣一個Bean對象

二:如何定義多個對象

我們試想一下,如果一個類中,有多個方法都被@Bean注解修飾了,那么Spring在調(diào)用的時候怎么區(qū)分,我們需要調(diào)用的是哪個方法呢,比如上面的舉例,有user1方法,user2方法

1:代碼示例及運行結(jié)果

main方法沿用上述的

@Component
public class BeanConfig {
    @Bean
    public User user1() {
        User user = new User();
        user.setName("zhangsan");
        user.setAge(18);
        return user;
    }
    @Bean
    public User user2() {
        User user = new User();
        user.setName("lisi");
        user.setAge(19);
        return user;
    }
}

 報錯信息顯?:期望只有?個匹配,結(jié)果發(fā)現(xiàn)了兩個,user1,user2
從報錯信息中,可以看出來,@Bean注解的bean,bean的名稱就是它的?法名

2:根據(jù)名稱獲取bean對象

@SpringBootApplication
public class SpringIocDemoApplication {
    public static void main(String[] args) {
        // 獲取Spring上下?對象
        ApplicationContext context = SpringApplication.run(SpringIocDemoApplication.class, args);
        // 根據(jù)bean名稱, 從Spring上下?中獲取對象
        User user1 = (User) context.getBean("user1");
        User user2 = (User) context.getBean("user2");
        System.out.println(user1);
        System.out.println(user2);
    }
}

3:重命名Bean

通過設置name屬性給Bean對象進?重命名操作,掃描線程類SpringIocDemoApplication代碼此處省略(可參考上面)

(1)代碼示例

@Bean(name = {"u1","user1"})
public User user1(){
    User user = new User();
    user.setName("zhangsan");
    user.setAge(18);
    return user;
}   

(2)注意點

name={}可以省略,只有?個名稱時,{}也可以省略

三:掃描路徑

思考:如果對象很多,我們實際用到的對象很少,那么Spring全都掃描一遍是不是非常浪費資源,那么掃描線程類SpringIocDemoApplication的掃描范圍是如何規(guī)定的呢?

1:移動掃描線程類

我們把掃描線程類放到controller包路徑下,在運行代碼試試

@SpringBootApplication
public class SpringIocDemoApplication {
    public static void main(String[] args) {
        // 獲取Spring上下?對象
        ApplicationContext context = SpringApplication.run(SpringIocDemoApplication.class, args);
        // 從Spring上下?中獲取對象
        User u1 = (User) context.getBean("u1");
        // 使?對象
        System.out.println(u1);
    }
}

 2:運行結(jié)果

解釋:沒有bean的名稱為u1,因為掃描線程類此時處于controller包下,那么默認只掃描controller包路徑下的類,所以沒有被掃描到的類,當然就拿不到bean對象了。

3:配置掃描路徑@ComponentScan({})

@ComponentScan({"com.example.demo"})

在掃描線程類上加上注解@ComponentScan({"com.example.demo"}),就可以了

(1)注意點

{}?可以配置多個包路徑,但是實際應用并不做推薦

(2)默認掃描范圍

思考:為什么前?沒有配置@ComponentScan注解也可以呢?

@ComponentScan 注解雖然沒有顯式配置,但是實際上已經(jīng)包含在了啟動類聲明注解@SpringBootApplication 中了,默認掃描的范圍是SpringBoot啟動類所在包及其?包

(3)推薦做法

把啟動類放在我們希望掃描的包的路徑下,這樣我們定義的bean就都可以被掃描到

到此這篇關于Spring 方法注解@Bean及配置類掃描路徑的文章就介紹到這了,更多相關Spring 注解@Bean內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

相關文章

  • java 代碼塊與靜態(tài)代碼塊加載順序

    java 代碼塊與靜態(tài)代碼塊加載順序

    這篇文章主要介紹了java 代碼塊與靜態(tài)代碼塊加載順序的相關資料,需要的朋友可以參考下
    2017-07-07
  • Java數(shù)據(jù)類型和取值范圍入門詳解(代碼示例)

    Java數(shù)據(jù)類型和取值范圍入門詳解(代碼示例)

    本文深入介紹了Java編程語言中的基本數(shù)據(jù)類型,包括整數(shù)、浮點數(shù)、字符和布爾值,討論了它們的取值范圍,并提供了示例代碼,感興趣的朋友跟隨小編一起看看吧
    2026-01-01
  • SpringCloud項目中Feign組件添加請求頭所遇到的坑及解決

    SpringCloud項目中Feign組件添加請求頭所遇到的坑及解決

    這篇文章主要介紹了SpringCloud項目中Feign組件添加請求頭所遇到的坑及解決方案,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2023-04-04
  • Java實現(xiàn)從字符串中找出數(shù)字字符串的方法小結(jié)

    Java實現(xiàn)從字符串中找出數(shù)字字符串的方法小結(jié)

    這篇文章主要介紹了Java實現(xiàn)從字符串中找出數(shù)字字符串的方法,結(jié)合實例形式總結(jié)分析了Java查找數(shù)字字符串的常用技巧,需要的朋友可以參考下
    2016-03-03
  • springboot集成Lucene的詳細指南

    springboot集成Lucene的詳細指南

    這篇文章主要為大家詳細介紹了springboot集成Lucene的詳細指南,文中的示例代碼講解詳細,具有一定的借鑒價值,感興趣的小伙伴可以跟隨小編一起學習一下
    2025-05-05
  • SpringBoot中實現(xiàn)文件上傳、下載、刪除功能的步驟

    SpringBoot中實現(xiàn)文件上傳、下載、刪除功能的步驟

    本文將詳細介紹如何在 Spring Boot 中實現(xiàn)文件上傳、下載、刪除功能,采用的技術(shù)框架包括:Spring Boot 2.4.2、Spring MVC、MyBatis 3.5.6、Druid 數(shù)據(jù)源、JUnit 5 等,文中有詳細的操作步驟和示例代碼供大家參考,需要的朋友可以參考下
    2024-01-01
  • 實例講解MyBatis如何防止SQL注入

    實例講解MyBatis如何防止SQL注入

    這篇文章通過實例代碼介紹MyBatis如何防止SQL注入,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2021-12-12
  • Spring JDBC參數(shù)處理與嵌入式數(shù)據(jù)庫的實戰(zhàn)指南

    Spring JDBC參數(shù)處理與嵌入式數(shù)據(jù)庫的實戰(zhàn)指南

    這篇文章介紹了Spring Framework中JDBC的支持,包括如何處理參數(shù)和數(shù)據(jù)值、處理BLOB和CLOB、為IN子句傳遞列表以及存儲過程調(diào)用中的復雜類型,本文用通俗易懂的方式講解Spring JDBC參數(shù)處理與嵌入式數(shù)據(jù)庫的相關操作,感興趣的朋友跟隨小編一起看看吧
    2025-10-10
  • Java使用synchronized修飾方法來同步線程的實例演示

    Java使用synchronized修飾方法來同步線程的實例演示

    synchronized下的方法控制多線程程序中的線程同步非常方便,這里就來看一下Java使用synchronized修飾方法來同步線程的實例演示,需要的朋友可以參考下
    2016-06-06
  • 教你在SpringBoot中管理多環(huán)境配置文件

    教你在SpringBoot中管理多環(huán)境配置文件

    在項目開發(fā)中,一般會分為開發(fā)環(huán)境,測試環(huán)境和生產(chǎn)環(huán)境.如果總是在一個文件中修修改改,難免會出現(xiàn)錯誤,尤其是在交接的過程中,一旦出現(xiàn)問題,輕則丟失績效,重則需要刪庫跑路.本文則帶大家詳細了解怎么管理多環(huán)境配置文件,需要的朋友可以參考下
    2021-05-05

最新評論

西贡区| 绥中县| 广饶县| 和硕县| 庐江县| 安阳市| 萍乡市| 连城县| 庄河市| 平阳县| 无极县| 司法| 响水县| 稷山县| 定结县| 蚌埠市| 新平| 石嘴山市| 奉节县| 福清市| 鄢陵县| 莒南县| 论坛| 萨嘎县| 阜阳市| 平舆县| 麻江县| 岢岚县| 巫山县| 独山县| 普安县| 神木县| 龙海市| 清丰县| 永定县| 怀远县| 丹东市| 晋城| 板桥市| 景谷| 六枝特区|