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

學(xué)無(wú)先后,達(dá)者為師

網(wǎng)站首頁(yè) 編程語(yǔ)言 正文

Spring 非自定義Bean注解

作者:Mr.VK 更新時(shí)間: 2024-03-10 編程語(yǔ)言

Spring 非自定義Bean注解

1.概述

在xml中配置的Bean都是自己定義的, 例如:UserDaolmpl,UserServicelmpl。但是,在實(shí)際開發(fā)中有些功能類并不是我們自己定義的, 而是使用的第三方j(luò)ar包中的,那么,這些Bean要想讓Spring進(jìn)行管理,也需要對(duì)其進(jìn)行配置配置非自定義的Bean需要考慮如下兩個(gè)問(wèn)題:

  • 被配置的Bean的實(shí)例化方式是什么?無(wú)參構(gòu)造、有參構(gòu)造、靜態(tài)工廠方式還是實(shí)例工廠方式;
  • 被配置的Bean是否需要注入必要屬性。

2.代碼演示

非自定義Bean不能像自定義Bean一樣使用@Component進(jìn)行管理,非自定義Bean要通過(guò)工廠的方式進(jìn)行實(shí)例化,使用@Bean標(biāo)注方法即可,@Bean的屬性為beanName,如不指定,則當(dāng)前工廠方法名稱作為beanName

@Component
public class ConfigBean {
	// 將方法返回值Bean實(shí)例,以@Bean注解指定的名稱存儲(chǔ)到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工廠方法需要參數(shù)的話,則有如下幾種注入方式:

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

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

// @Qualifier可以單獨(dú)使用在參數(shù)上,根據(jù)名稱注入
@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

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