亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

一文讀懂Spring中@Bean注解的核心作用

 更新時間:2024年01月05日 08:46:50   作者:手插口袋誰也不愛?  
快速了解Spring框架中的@Bean注解?本文將帶你一鍵掌握其核心作用!只需一篇短文,揭示@Bean注解如何在Spring中定義bean實例,以及管理和裝配Bean的奧秘,閱讀指南,讓Spring開發(fā)更加得心應(yīng)手!

存儲Bean對象

將對象存儲在 Spring 中,有兩種注解類型可以實現(xiàn):

類注解:@Controller、@Service、@Repository、@Component、@Configuration 方法注解:@Bean @Controller(控制器存儲)

如下使用@Controller存儲Bean代碼:

@Controller
        public class UserController {
        public void SayHi(String name){
        System.out.println("你好"+name);
    }
}

使用獲取上下文的方法獲取上面存儲的對象

public class Test {
    public static void main(String[] args) {
        //獲取spring上下文
     ApplicationContext applicationContext = new ClassPathXmlApplicationContext("spring-config.xml");
    //獲取指定的Bean對象名稱+類型進行獲取
      UserController userController =  (UserController) applicationContext.getBean("userController");
      userController.SayHi("zcx");
    }
}

效果為

@Service(服務(wù)存儲)

如下使用@Service存儲Bean代碼:

@Service
public class UserService {
    public void SayHi(String name){
        System.out.println("你好"+name);
    }
}

輸出結(jié)果跟@Controller一樣

@Repository(倉庫存儲)

如下使用@Repository存儲Bean代碼:

@Repository
public class UserRepository {
    public void SayHi(String name){
        System.out.println("你好"+name);
    }
}

@Component(組件存儲)

如下使用@Component存儲Bean代碼:

@Component
public class UserComponent {
    public void SayHi(String name){
        System.out.println("你好"+name);
    }
}

@Configuration(配置存儲)

如下使用@Configuration存儲Bean代碼:

@Configuration
public class UserConfiguration {
    public void SayHi(String name){
        System.out.println("你好"+name);
    }
}

需要這么多類注解是讓程序員看到類注解之后,就能直接了解當(dāng)前類的?途,比如:

@Controller:表示的是業(yè)務(wù)邏輯層 @Servie:表示的是服務(wù)層 @Repository:表示的是持久層 @Configuration:表示的是配置層

Bean

?法注解是放到某個?法上的要配合類注解使?,如以下代碼的實現(xiàn):

@Controller
public class Users {
    @Bean
    public User user1(){
        User user = new User();
        return user;
    }
}
public class Test {
    public static void main(String[] args) {
        //獲取spring上下文
     ApplicationContext applicationContext = new ClassPathXmlApplicationContext("spring-config.xml");
    //獲取指定的Bean對象名稱+類型進行獲取
    User user =  (User) applicationContext.getBean("user1");
      user.sayHi("zcx");
    }
}

user類

@Component
public class User {

    public void sayHi(String name){

        System.out.println(name+"你好");
    }

}

結(jié)果

重命名Bean

可通過設(shè)置 name 屬性給 Bean 對象進?重命名操作

@Bean(name = {"u1", "us1"})
public User user1() {
User user = new User();
return user;
}

或者

@Bean(name = {"u1", "us1"})
public User user1() {
User user = new User();
return user;
}

獲取Bean對象

獲取Bean對象就是把對象取出來放入某個類中,也叫對象注入或者對象裝配。

對象注入有三種實現(xiàn)方法:

屬性注? 構(gòu)造?法注? Setter 注?

下?我們按照實際開發(fā)中的模式,將 Service 類注?到 Controller 類中

屬性注入

屬性注?是使? @Autowired 實現(xiàn)的,實現(xiàn)代碼如下:

@Service
public class UserService {

    public User user1(){
        User user = new User();
        return user;
    }
}
@Controller
public class UserController {
    @Autowired
    private UserService userService;
    public User getUser(){
 return userService.user1();
    }
}
public class Test {
    public static void main(String[] args) {
        //獲取spring上下文
        ApplicationContext applicationContext = new ClassPathXmlApplicationContext("spring-config.xml");
        //獲取指定的Bean對象名稱+類型進行獲取
        UserController userController = applicationContext.getBean(UserController.class);
      userController.getUser().sayHi("zcx");
    }
}

構(gòu)造方法注入

構(gòu)造?法注?是在類的構(gòu)造?法中實現(xiàn)注?,實現(xiàn)代碼如下:

@Controller
public class UserController {
    private UserService userService;
    @Autowired
    public UserController(UserService userService) {
        this.userService = userService;
    }
    public User getUser(){
 return userService.user1();
    }
}

其余代碼寫法跟屬性注入一樣

Setter注入

在設(shè)置 set ?法的時候需要加上 @Autowired 注解

@Controller
public class UserController {
    private UserService userService;
    @Autowired
    public void SetUserController(UserService userService) {
        this.userService = userService;
    }
    public User getUser(){
 return userService.user1();
    }
}

@Resource(注入關(guān)鍵字)

@Controller
public class UserController {
    @Resource
    private UserService userService;
    public User getUser(){
 return userService.user1();
    }
}

使用@Resource 可以解決同?類型多個 Bean 報錯問題

可以如下設(shè)置方法名

@Resource(name = "user1")

@Autowired 和 @Resource 的區(qū)別

出身不同:@Autowired 來?于 Spring,? @Resource 來?于 JDK 的注解 使?時設(shè)置的參數(shù)不同:相?于 @Autowired 來說,@Resource ?持更多的參數(shù)設(shè)置,例如name 設(shè)置,根據(jù)名稱獲取 Bean @Autowired 可?于 Setter 注?、構(gòu)造函數(shù)注?和屬性注?,? @Resource 只能?于 Setter 注?和屬性注?,不能?于構(gòu)造函數(shù)注?

更多文章推薦:

1.Spring Boot 3.x 教程,太全了!

2.2,000+ 道 Java面試題及答案整理(2024最新版)

3.《Java開發(fā)手冊(嵩山版)》最新發(fā)布!

到此這篇關(guān)于一文讀懂Spring中@Bean注解的核心作用的文章就介紹到這了,更多相關(guān)Spring 中 @Bean 注解用法內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • springboot各種下載文件的方式匯總

    springboot各種下載文件的方式匯總

    下載功能其實就是用戶輸入指定文件路徑信息,然后把文件返回給用戶,下面這篇文章主要給大家介紹了關(guān)于springboot各種下載文件的方式,需要的朋友可以參考下
    2022-10-10
  • Java的jmap命令的具體使用

    Java的jmap命令的具體使用

    jmap是JDK提供的一個可以生成Java虛擬機的堆轉(zhuǎn)儲快照dump文件的命令行工具,本文主要介紹了Java的jmap命令的具體使用,文中通過示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-03-03
  • Java中的ClassLoader類加載器使用詳解

    Java中的ClassLoader類加載器使用詳解

    這篇文章主要介紹了Java中的ClassLoader類加載器使用詳解,ClassLoader用于將CLASS文件動態(tài)加載到JVM中去,是所有類加載器的基類,所有繼承自抽象的ClassLoader的加載器,都會優(yōu)先判斷是否被父類加載器加載過,防止多次加載,需要的朋友可以參考下
    2023-10-10
  • Java中一個線程執(zhí)行死循環(huán)有什么后果

    Java中一個線程執(zhí)行死循環(huán)有什么后果

    這篇文章主要為大家詳細介紹了Java中一個線程執(zhí)行死循環(huán)有什么后果,當(dāng)一個線程在執(zhí)行死循環(huán)時會影響另外一個線程嗎,下面為大家揭曉
    2016-05-05
  • SpringBoot的配置文件(properties與yml)使用方法

    SpringBoot的配置文件(properties與yml)使用方法

    配置文件中的配置類型有兩類,一類是系統(tǒng)配置項,這種配置的格式都是固定的,是給系統(tǒng)使用的,另一種是用戶自定義配置,用戶可以隨意地規(guī)定配置項的格式,又用戶自行去設(shè)置和讀取,這篇文章主要介紹了SpringBoot的配置文件(properties與yml)使用方法,需要的朋友可以參考下
    2023-08-08
  • Java的HashTable源碼解讀

    Java的HashTable源碼解讀

    這篇文章主要介紹了Java的HashTable源碼解讀,HashTable繼承了Dictionary類,提供了一些字典相關(guān)的基本功能如添加、刪除、判空、獲取元素數(shù)量等,需要的朋友可以參考下
    2023-12-12
  • java使用Jco連接SAP過程

    java使用Jco連接SAP過程

    這篇文章主要介紹了java使用Jco連接SAP過程,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2023-03-03
  • IDEA的Mybatis Generator駝峰配置問題

    IDEA的Mybatis Generator駝峰配置問題

    這篇文章主要介紹了IDEA的Mybatis Generator駝峰配置問題,本文給大家介紹的非常詳細,對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2020-11-11
  • java中HashMap的7種遍歷方式與性能分析

    java中HashMap的7種遍歷方式與性能分析

    本文主要介紹了java中HashMap的7種遍歷方式與性能分析,文中通過示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2021-11-11
  • Java?Spring框架的注解式開發(fā)你了解嗎

    Java?Spring框架的注解式開發(fā)你了解嗎

    這篇文章主要為大家詳細介紹了Spring框架的注解式,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來幫助
    2022-03-03

最新評論