Spring中@Bean (工厂 Bean)详解

搭建一个Spring项目并整合Mybatis看这个博客:https://my.oschina.net/u/4284277/blog/3194178

1. @Bean简介

@Bean用于修饰方法:
   作用: 
	1.将方法返回的对象注册到spring容器
	2.向方法形参注入数据 
注解 描述 修饰位置
@Bean 将方法的返回对象注册到Spring容器 方法
@Bean(name="xx") 将方法的返回对象注册到Spring容器, 并赋予注册名 方法

2. @Bean基本使用

方法返回值对象 注入 成员变量

2.1 按类型注入

  • Dao类:
public class ManLuDao{}
  • 配置类
/**
* Spring配置类
* @author 漫路h
*/
@Configuration
public class SpringConfiguration{ @Bean public ManLuDao getDao(){ return new ManLuDao(); } } 
  • 测试类
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(classes={SpringConfiguration.class}) public class ManLuText{ @Resource //向Spring容器获取对象 private ManLuDao dao; @Test public void run1(){ System.out.println(dao); } } 
  • 示意图:

2.2 按名称注入

  • Dao类:
public class ManLuDao{}
  • 配置类
/**
* Spring配置类
* @author 漫路h
*/
@Configuration
public class SpringConfiguration{ @Bean(name="manLuDao") public ManLuDao getDao(){ return new ManLuDao(); } } 
  • 测试类
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(classes={SpringConfiguration.class}) public class ManLuText{ @Resource(name="manLuDao") //向Spring容器获取对象 private ManLuDao dao; @Test public void run1(){ System.out.println(dao); } } 
  • 示意图

3. @Bean进阶使用

向方法形参注入

3.1 向参数注入-引用类型

  • Dao类:
public class ManLuDao{}
  • 配置类
/**
* Spring配置类
* @author 漫路h
*/
@Configuration
public class SpringConfiguration{ @Bean public ManLuDao getDao(){ return new ManLuDao(); } @Bean public Object test(ManLuDao dao){ System.out.println(dao); return null } } 
  • 测试类

直接运行即可

@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(classes={SpringConfiguration.class}) public class ManLuText{ @Test public void run1(){} } 
  • 示意图

3.2 向参数注入-多个简单类型

这里我们结合property配置文件的读取

  • property文件
jdbc.driver=com.mysql.jdbc.Driver
# 数据库地址
jdbc.url=jdbc:mysql://127.0.0.1:3306/springday01 # mysql账号 jdbc.username=root # mysql密码 jdbc.password=root 
  • 配置类
/**
* Spring配置类
* @author 漫路h
*/
@Configuration
public class SpringConfiguration{ @Bean public static PropertySourcesPlaceholderConfigurer prop(){ return new PropertySourcesPlaceholderConfigurer(); } /** * 将properties文件中的参数注入到方法形参中 */ @Bean public Object get1(@Value("${jdbc.driver}")String driver, @Value("${jdbc.username}")String username){ System. out .println(driver); System. out .println(username); return null; } } 
  • 测试类

直接运行即可

@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(classes={SpringConfiguration.class}) public class ManLuText{ @Test public void run1(){} } 

4. @Bean总结

@Bean用于修饰方法:
   作用: 
	1.将方法返回的对象注册到spring容器
	2.向方法形参注入数据
来源:个人站长

猜你喜欢

转载自www.cnblogs.com/1994jinnan/p/12514696.html