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

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

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

存儲(chǔ)Bean對(duì)象

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

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

如下使用@Controller存儲(chǔ)Bean代碼:

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

使用獲取上下文的方法獲取上面存儲(chǔ)的對(duì)象

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

效果為

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

如下使用@Service存儲(chǔ)Bean代碼:

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

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

@Repository(倉庫存儲(chǔ))

如下使用@Repository存儲(chǔ)Bean代碼:

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

@Component(組件存儲(chǔ))

如下使用@Component存儲(chǔ)Bean代碼:

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

@Configuration(配置存儲(chǔ))

如下使用@Configuration存儲(chǔ)Bean代碼:

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

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

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

Bean

?法注解是放到某個(gè)?法上的要配合類注解使?,如以下代碼的實(shí)現(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對(duì)象名稱+類型進(jìn)行獲取
    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 對(duì)象進(jìn)?重命名操作

@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對(duì)象

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

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

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

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

屬性注入

屬性注?是使? @Autowired 實(shí)現(xiàn)的,實(shí)現(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對(duì)象名稱+類型進(jìn)行獲取
        UserController userController = applicationContext.getBean(UserController.class);
      userController.getUser().sayHi("zcx");
    }
}

構(gòu)造方法注入

構(gòu)造?法注?是在類的構(gòu)造?法中實(shí)現(xiàn)注?,實(shí)現(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 ?法的時(shí)候需要加上 @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 可以解決同?類型多個(gè) Bean 報(bào)錯(cuò)問題

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

@Resource(name = "user1")

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

出身不同:@Autowired 來?于 Spring,? @Resource 來?于 JDK 的注解 使?時(shí)設(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ā)手冊(cè)(嵩山版)》最新發(fā)布!

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

相關(guān)文章

  • java查詢mongodb中的objectid示例

    java查詢mongodb中的objectid示例

    這篇文章主要介紹了java查詢mongodb中的objectid示例,需要的朋友可以參考下
    2014-04-04
  • SpringBoot3集成MyBatis詳解

    SpringBoot3集成MyBatis詳解

    MyBatis是一款開源的持久層框架,它極大地簡化了與數(shù)據(jù)庫的交互流程,MyBatis更具靈活性,允許開發(fā)者直接使用SQL語句與數(shù)據(jù)庫進(jìn)行交互,本文將詳細(xì)介紹在Spring Boot項(xiàng)目中如何集成MyBatis,以實(shí)現(xiàn)對(duì)數(shù)據(jù)庫的輕松訪問和操作,需要的朋友可以參考下
    2023-12-12
  • SpringMVC中的@RequestMapping注解解析

    SpringMVC中的@RequestMapping注解解析

    這篇文章主要介紹了SpringMVC中的@RequestMapping注解解析,SpringMVC使用@RequestMapping注解為控制器指定可以處理哪些?URL?請(qǐng)求,在控制器的類定義及方法定義處都可標(biāo)注@RequestMapping,需要的朋友可以參考下
    2023-12-12
  • 簡述Java編程之關(guān)系操作符

    簡述Java編程之關(guān)系操作符

    這篇文章主要介紹了簡述Java編程中的關(guān)系操作符,同時(shí)對(duì)比較類作了簡單介紹,需要的朋友可以參考下
    2017-09-09
  • Java的MyBatis框架中關(guān)鍵的XML字段映射的配置參數(shù)詳解

    Java的MyBatis框架中關(guān)鍵的XML字段映射的配置參數(shù)詳解

    將XML文件的schema字段映射到數(shù)據(jù)庫的schema是我們操作數(shù)據(jù)庫的常用手段,這里我們就來整理一些Java的MyBatis框架中關(guān)鍵的XML字段映射的配置參數(shù)詳解,需要的朋友可以參考下
    2016-06-06
  • java多線程編程之Synchronized塊同步方法

    java多線程編程之Synchronized塊同步方法

    這篇文章主要介紹了java多線程編程之Synchronized塊同步方法,synchronized關(guān)鍵字又稱同步鎖,當(dāng)方法執(zhí)行完后,會(huì)自動(dòng)釋放鎖鎖,只有一個(gè)線程能進(jìn)入此方法,看看下文中各種例子對(duì)synchronized的詳細(xì)解釋
    2015-12-12
  • SpringBoot整合OpenFeign的完整指南

    SpringBoot整合OpenFeign的完整指南

    OpenFeign 是由 Netflix 開發(fā)的一個(gè)聲明式 Web 服務(wù)客戶端,它使得編寫 HTTP 客戶端變得更加簡單,本文為大家介紹了SpringBoot整合OpenFeign的詳細(xì)步驟,需要的小伙伴可以參考下
    2025-04-04
  • MyBatis中的collection兩種使用方法及效率比較

    MyBatis中的collection兩種使用方法及效率比較

    collection主要是應(yīng)對(duì)表關(guān)系是一對(duì)多的情況,本文主要介紹了MyBatis中的collection兩種使用方法及效率比較,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2022-06-06
  • SpringBoot靜態(tài)方法調(diào)用Spring容器bean的三種解決方案

    SpringBoot靜態(tài)方法調(diào)用Spring容器bean的三種解決方案

    在SpringBoot中靜態(tài)方法調(diào)用Spring容器bean時(shí)出現(xiàn)的null值問題,本文就來介紹一下SpringBoot靜態(tài)方法調(diào)用Spring容器bean的三種解決方案,文中通過示例代碼介紹的非常詳細(xì),需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2025-01-01
  • Java對(duì)int[]數(shù)組做新增刪除去重操作代碼

    Java對(duì)int[]數(shù)組做新增刪除去重操作代碼

    這篇文章主要介紹了Java里面對(duì)int[]數(shù)組做新增刪除去重實(shí)現(xiàn),這里記錄下使用int[]數(shù)組對(duì)數(shù)組進(jìn)行新增刪除去重等操作,用來更加了解java里面的集合類思想,需要的朋友可以參考下
    2023-10-10

最新評(píng)論

伊春市| 漠河县| 广河县| 福安市| 德昌县| 新乐市| 辛集市| 灵石县| 佳木斯市| 兴安县| 吴堡县| 靖州| 平原县| 周至县| 丰都县| 清远市| 潜江市| 宁德市| 曲阳县| 曲水县| 拜城县| 江永县| 桐庐县| 广丰县| 察哈| 沐川县| 宣城市| 吉木萨尔县| 澳门| 彭阳县| 柳江县| 乐平市| 金阳县| 阿克| 淅川县| 南和县| 紫金县| 黄大仙区| 酒泉市| 容城县| 桦甸市|