内射老阿姨1区2区3区4区_久久精品人人做人人爽电影蜜月_久久国产精品亚洲77777_99精品又大又爽又粗少妇毛片

【Spring從入門到實(shí)戰(zhàn)】第3講:Spring中Bean的注入方式-創(chuàng)新互聯(lián)

本文已收錄于專欄
🌲《Spring從入門到實(shí)戰(zhàn)》🌲
專欄前言

?? 大家好,我是執(zhí)梗。本專欄將從Spring入門開始講起,詳細(xì)講解各類配置的使用以及原因,到使用SpringBoot進(jìn)行開發(fā)實(shí)戰(zhàn),旨在記錄學(xué)習(xí)生活的同時(shí)也希望能幫到大家,如果對(duì)您能有所幫助,還望能點(diǎn)贊關(guān)注該專欄,對(duì)于專欄內(nèi)容有錯(cuò)還望您可以及時(shí)指點(diǎn),非常感謝大家 🌹。

成都創(chuàng)新互聯(lián)公司是一家集網(wǎng)站建設(shè),汝城企業(yè)網(wǎng)站建設(shè),汝城品牌網(wǎng)站建設(shè),網(wǎng)站定制,汝城網(wǎng)站建設(shè)報(bào)價(jià),網(wǎng)絡(luò)營(yíng)銷,網(wǎng)絡(luò)優(yōu)化,汝城網(wǎng)站推廣為一體的創(chuàng)新建站企業(yè),幫助傳統(tǒng)企業(yè)提升企業(yè)形象加強(qiáng)企業(yè)競(jìng)爭(zhēng)力??沙浞譂M足這一群體相比中小企業(yè)更為豐富、高端、多元的互聯(lián)網(wǎng)需求。同時(shí)我們時(shí)刻保持專業(yè)、時(shí)尚、前沿,時(shí)刻以成就客戶成長(zhǎng)自我,堅(jiān)持不斷學(xué)習(xí)、思考、沉淀、凈化自己,讓我們?yōu)楦嗟钠髽I(yè)打造出實(shí)用型網(wǎng)站。目錄
  • 專欄前言
  • 1.什么是Bean對(duì)象?
  • 2.Bean的注入方式
    • 1.XML注入
      • 1.1set注入
      • 1.2構(gòu)造方法注入
      • 1.3 P標(biāo)簽注入
      • 1.4靜態(tài)工廠注入
      • 1.5實(shí)例工廠注入
  • 3.XML注入的缺點(diǎn)
  • 4.注解注入
    • 1.@Controller
    • 2.@Service
    • 3.@Repository
    • 4.@Component
    • 5.@Configuration

1.什么是Bean對(duì)象?

??我們上文以及講過Spring的IOC容器,那么這個(gè)容器管理的對(duì)象,我們一般就成為Bean對(duì)象。我們以前平時(shí)生成一個(gè)對(duì)象,都是調(diào)用構(gòu)造方法來new對(duì)象,對(duì)象都是由我們自己進(jìn)行管理和生成,當(dāng)我們將User對(duì)象托管給Spring管理后,此時(shí)的User就可以稱之為是一個(gè)Bean對(duì)象,Spring可以幫我們?nèi)ス芾砗蜕蓪?duì)象,不需要我們自己去操作。
??當(dāng)然并不是所有的對(duì)象Spring都得去幫我們管理,我們需要手動(dòng)的去告訴它,這就是我們本文要講的Bean的注入方式。

2.Bean的注入方式 1.XML注入

??這是Spring版本比較老的注入方式,當(dāng)然現(xiàn)在大家都不怎么使用了,主要還是因?yàn)椴环奖?,而?code>XML配置文件在SpringBoot中已經(jīng)不使用了 。

1.1set注入

??在SpringXML文件中,我們首先使用Bean標(biāo)簽注入我們需要注入的類,然后通過property標(biāo)簽的value屬性完成賦值操作。它是基于注入類的set方法進(jìn)行賦值的,如果property選擇的屬性沒有set方法則會(huì)報(bào)錯(cuò)。
實(shí)體類代碼:

@Data //自動(dòng)注入所有g(shù)et set方法,基于lombok
public class Student {String name;
    String id;
}

XML文件:

主函數(shù)運(yùn)行:

public class App {public static void main(String[] args) {//1.得到spring上下文對(duì)象
        ApplicationContext context=
                new ClassPathXmlApplicationContext("application.xml");
        //2.根據(jù)上下文對(duì)象提供的上下文對(duì)象
        Student student= (Student)context.getBean("student");
        System.out.println(student);
    }
}

正常打印
在這里插入圖片描述

1.2構(gòu)造方法注入

??這種注入方式也是在XML中進(jìn)行,只不過我們使用的屬性變成了constructor-arg,它基于的是構(gòu)造方法的注入而不是我們的set方法了,需要我們的實(shí)體類提供對(duì)應(yīng)的構(gòu)造方法,否則也會(huì)報(bào)錯(cuò)。
實(shí)體類代碼:

public class User {String name;
    int id;
    public User(String name, int id) {this.name = name;
        this.id = id;
    }
}

XML文件:

主函數(shù)運(yùn)行:

public class App {public static void main(String[] args) {//1.得到spring上下文對(duì)象
        ApplicationContext context=
                new ClassPathXmlApplicationContext("application.xml")

        User user = context.getBean("user", User.class);
        System.out.println(user);
    }
}

正常打印
在這里插入圖片描述

1.3 P標(biāo)簽注入

??這種注入方法其實(shí)本質(zhì)上和set注入沒有區(qū)別,因?yàn)樗彩腔?code>set方法進(jìn)行實(shí)現(xiàn)的,如果缺失set方法的話同樣會(huì)報(bào)錯(cuò),感覺就是對(duì)set注入進(jìn)行的一種簡(jiǎn)化,看上去更加簡(jiǎn)潔。
XML文件:

配置文件中請(qǐng)加入下面這行
xmlns:p="http://www.springframework.org/schema/p"

正常打印:
在這里插入圖片描述

1.4靜態(tài)工廠注入

??這種注入方式比較少見,它是調(diào)用靜態(tài)工廠的靜態(tài)方法來創(chuàng)建Bean,當(dāng)我們需要對(duì)象時(shí),只需要傳入?yún)?shù)調(diào)用靜態(tài)方法即可,不需要關(guān)心創(chuàng)建對(duì)象的細(xì)節(jié)問題。當(dāng)然被注入的實(shí)體類同樣需要提供set方法,它也是基于set注入實(shí)現(xiàn)。我們還需要再配置文件中配置靜態(tài)工廠的路徑和調(diào)用方法名以及參數(shù)。需要注意的是靜態(tài)工廠中廠本身不需要?jiǎng)?chuàng)建,可以直接通過靜態(tài)方法調(diào)用。

實(shí)體類:

@Data
public class User {String name;
    int id;
    public User() {}
}

XML配置文件:

主函數(shù)運(yùn)行:

public class App {public static void main(String[] args) {//1.得到spring上下文對(duì)象
        ApplicationContext context=
                new ClassPathXmlApplicationContext("application.xml");

        User user = context.getBean("createuser", User.class);
        System.out.println(user);
    }
}

正常打印:
在這里插入圖片描述

1.5實(shí)例工廠注入

??這個(gè)和上面的靜態(tài)工廠有點(diǎn)類似,不同的區(qū)別在于實(shí)例工廠注入,我們首先需要把這個(gè)工廠注入進(jìn)Spring。然后在注入實(shí)體類的時(shí)候我們需要指明我們使用的是哪一個(gè)注入的工廠以及調(diào)用的是工廠內(nèi)的哪個(gè)方法,主要的區(qū)別就在于靜態(tài)工廠是不需要注入工廠的,而我們實(shí)例工廠注入由于需要實(shí)例化工廠對(duì)象,所以需要講工廠也注入進(jìn)來。注意的是改方法注入同樣依賴與set方法。

XML配置

此處是注入工廠

主函數(shù)運(yùn)行:

public class App {public static void main(String[] args) {//1.得到spring上下文對(duì)象
        ApplicationContext context=
                new ClassPathXmlApplicationContext("application.xml");

        User user = context.getBean("student2", User.class);
        System.out.println(user);
    }
}

正常打?。?br />在這里插入圖片描述

3.XML注入的缺點(diǎn)

??當(dāng)然現(xiàn)在主流開發(fā)都是使用的SpringBoot框架,我們一般不采用XML配置文件的方法去注入對(duì)象,主要它有以下缺點(diǎn):

  • XML文件配置麻煩,占用資源,維護(hù)代碼的同時(shí)還得維護(hù)配置文件
  • 當(dāng)注入的實(shí)體類過多時(shí),配置文件代碼量很大,維護(hù)麻煩
  • 程序編譯難以對(duì)配置文件進(jìn)行驗(yàn)證,會(huì)產(chǎn)生運(yùn)行時(shí)異常且難以發(fā)現(xiàn)
4.注解注入

??這是目前最主流的注入方式,我們只需要在我們需要注入的實(shí)體類上加上相應(yīng)的注解就可以Spring我們需要去注入它。當(dāng)然它也沒有那么只能,你在任何地方寫它都能識(shí)別到,我們首先需要配置包的掃描路徑,這樣它才會(huì)將該包下的所有添加注解的類注入。

application.xml添加如下配置:

base-package="需要掃描的包路徑"
1.@Controller

??@Controller注解主要用于控制層,表明我們將該類注入進(jìn)Spring管理,注意該類路徑需要在掃描的包下。

實(shí)體類代碼:

@Controller
public class UserController {public void sayHi(String name){System.out.println("Hi"+name);
    }
}

主函數(shù)運(yùn)行代碼:
??這里需要注意的是我們類名叫UserController這種大駝峰命名,但是在通過context取對(duì)象時(shí)卻是userController,這是Spring約定熟成的規(guī)矩。

public class App {public static void main(String[] args) {//1.得到spring上下文對(duì)象
        ApplicationContext context=
                new ClassPathXmlApplicationContext("application.xml");
                
        UserController userController = context.getBean("userController", UserController.class);
        userController.sayHi("張飛");
    }
}

正常運(yùn)行:
在這里插入圖片描述

2.@Service

??同樣具有注入功能,只不過我們一般寫在Service層。

@Service
public class UserService {public void sayHi(String name){System.out.println("Hi"+name);
    }
}
3.@Repository

??同樣具有注入功能,我們一般用在數(shù)據(jù)訪問層,也就是常說的DAO層。

@Repository
public class UserRepository{public void sayHi(String name){System.out.println("Hi"+name);
    }
}
4.@Component

??同樣具有注入功能,它指的是我們注入的是一個(gè)組件,那么什么是組件呢?我也說不清楚哈哈哈,反正不是使用上面的三種的情況下我們就使用該注解注入。

@Component
public class UserComponent {public void sayHi(String name) { System.out.println("Hi"+name);
    }
}
5.@Configuration

??同樣具有注入功能,它表示我們注入的類是一個(gè)配置類。

@Configuration
public class UserConfiguration {public void sayHi(String name) { System.out.println("Hi"+name);
    }
}

你是否還在尋找穩(wěn)定的海外服務(wù)器提供商?創(chuàng)新互聯(lián)www.cdcxhl.cn海外機(jī)房具備T級(jí)流量清洗系統(tǒng)配攻擊溯源,準(zhǔn)確流量調(diào)度確保服務(wù)器高可用性,企業(yè)級(jí)服務(wù)器適合批量采購(gòu),新人活動(dòng)首月15元起,快前往官網(wǎng)查看詳情吧

分享題目:【Spring從入門到實(shí)戰(zhàn)】第3講:Spring中Bean的注入方式-創(chuàng)新互聯(lián)
網(wǎng)址分享:http://www.rwnh.cn/article30/cejdpo.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站內(nèi)鏈、電子商務(wù)、品牌網(wǎng)站設(shè)計(jì)、網(wǎng)站維護(hù)網(wǎng)站制作、動(dòng)態(tài)網(wǎng)站

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)

h5響應(yīng)式網(wǎng)站建設(shè)
吉林市| 沙坪坝区| 尼勒克县| 黑山县| 仙居县| 恩施市| 溧阳市| 隆尧县| 常州市| 甘南县| 新泰市| 金堂县| 太原市| 三河市| 房山区| 河池市| 竹山县| 五台县| 韶山市| 德化县| 青海省| 兴城市| 望城县| 龙川县| 方山县| 夏河县| 龙州县| 嘉峪关市| 新蔡县| 明溪县| 潍坊市| 黔东| 谷城县| 宝清县| 孟连| 聂荣县| 石家庄市| 平远县| 都昌县| 台山市| 噶尔县|