日本免费高清视频-国产福利视频导航-黄色在线播放国产-天天操天天操天天操天天操|www.shdianci.com

學無先后,達者為師

網站首頁 編程語言 正文

Spring 非自定義Bean注解

作者:Mr.VK 更新時間: 2024-03-10 編程語言

Spring 非自定義Bean注解

1.概述

在xml中配置的Bean都是自己定義的, 例如:UserDaolmpl,UserServicelmpl。但是,在實際開發中有些功能類并不是我們自己定義的, 而是使用的第三方jar包中的,那么,這些Bean要想讓Spring進行管理,也需要對其進行配置配置非自定義的Bean需要考慮如下兩個問題:

  • 被配置的Bean的實例化方式是什么?無參構造、有參構造、靜態工廠方式還是實例工廠方式;
  • 被配置的Bean是否需要注入必要屬性。

2.代碼演示

非自定義Bean不能像自定義Bean一樣使用@Component進行管理,非自定義Bean要通過工廠的方式進行實例化,使用@Bean標注方法即可,@Bean的屬性為beanName,如不指定,則當前工廠方法名稱作為beanName

@Component
public class ConfigBean {
	// 將方法返回值Bean實例,以@Bean注解指定的名稱存儲到Spring容器中
	@Bean("dataSource")
	public DataSource dataSource(){
		DruidDataSource dataSource = new DruidDataSource();
		dataSource.setDriverClassName("com.mysql.jdbc.Driver");
		dataSource.setUrl("jdbc:mysql://localhost:3306/mybatis");
		dataSource.setUsername("root");
		dataSource.setPassword("root");
		return dataSource;
	}
}

PS:工廠方法所在類必須要被Spring管理。例如上面的工廠方法dataSource()所在的類ConfigBean需要先被注入到容器中,所以要在ConfigBean上添加@Component注解

如果@Bean工廠方法需要參數的話,則有如下幾種注入方式:

  • 使用@Autowired 根據類型自動進行Bean的匹配,@Autowired可以省略 ;
  • 使用@Qualifier 根據名稱進行Bean的匹配;
  • 使用@Value 根據名稱進行普通數據類型匹配。
@Bean
@Autowired //根據類型匹配參數
public Object objectDemo01(UserDao userDao){
	System.out.println(userDao);
	return new Object();
}

@Bean
public Object objectDemo02(@Autowired UserDao userDao){// @Autowired作用在參數上時,可以省略
	System.out.println(userDao);
	return new Object();
}

// @Qualifier可以單獨使用在參數上,根據名稱注入
@Bean
public Object objectDemo03(@Qualifier("userDao") UserDao userDao, @Value("${jdbc.username}") String username){
	System.out.println(userDao);
	System.out.println(username);
	return new Object();
}

原文鏈接:https://blog.csdn.net/Mr_VK/article/details/132113603

  • 上一篇:沒有了
  • 下一篇:沒有了
欄目分類
最近更新