【Spring实战】2.装配Bean

创建应用对象之间协作关系的行为通常称为装配,这也是依赖注入的本质。

Spring配置的可选方案

  1. 在XML中进行显示的配置
  2. 在Java中进行显示配置
  3. 隐式的Bean发现机制和自动装备

 

建议尽可能的使用自动装配机制。显式配置越少越好,当你必须要显示配置bean的时候,我推荐使用类型安全并且比XML更加强大的JavaConfig

 

1.自动化装配Bean

 

Spring从两个角度实现自动化装配

组件扫描:Spring会自动发现应用上下文中所创建的bean。

自动装配:Spring自动满足bean之间的依赖。

组件扫描和自动装配组合在一起就能发挥出强大的威力,他们能够将你显示的配置降低到最少。

 

组件扫描默认是不启用的,我们需要显示的配置一下,从而命令它去寻找带有@Component注解的类,并为其创建bean。

ComponentScan注解启用了组件扫描

@ComponentSan默认会扫描与配置类相同的包

 

如果倾向于使用XML来启动组件扫描的话,那么可以使用Spring Context的命名空间的

<context:component-scan>元素

Junit单元测试

设置组件扫描的基础包

或者这样

或者这样

或者这样

通过为bean添加注解实现自动装配

1.在构造器上添加@Autowired注解

2.@Autowired注解还能用在属性的Setter方法上

如果没有匹配的话,回报异常,所以需要以下配置处理

 

2.通过Java代码装配Bean

尽管在很多场景下组件扫描和自动装配实现Spring的自动化配置是更为推荐的方式,但是有时候自动化配置的方案行不通,因此需要明确配置Spring,比如说,你想要将第三方库中的组件配到你的应用中,在这种情况下,是没有办法在它的类上添加@Component和@Autowired,这种情况只能使用显示的装配方式。

显示的装配方式有两种可选方案:

Java和XML

2.1 JavaConfig显示配置

1. 创建配置类

2.声明简单的bean

借助JavaConfig实现注入

 

3.导入混合配置

小结:

Spring框架的核心是Spring容器,容器负责管理应用中组件的声明周期,他会创建这些组件并保证他们的依赖能够得到满足,这样的话,组件才能完成预定的任务。

Spring中装备Bean的三种主要方式:自动化配置、基于Java的显示配置以及基于XML的显示配置。

建议极可能的使用自动化配置,以避免显示配置带来的维护成本,如果确实要是使用显示配置Spring的话,应该优于选择基于Java的配置,他比基于XML的配置更加强大、类型安全且易于重构。

 

 

@Autowired可是用在构造方法上,用在set方法上除此之外还可以用在任意方法上,下面用代码验证。
UserDao
@Component
public class UserDao {
	public void SayHelloUser(){
		System.out.println("Hello User!");
	}
}

UserService

@Service
public class UserService {

	private UserDao userDao;

	@Autowired
	public void desionUserDao(UserDao userDao){
		this.userDao = userDao;
	}
	public void SayHelloUser(){
		userDao.SayHelloUser();
	}
}
App
@ComponentScan("com.lhj")
public class App {
	public static void main(String[] args) {
		AnnotationConfigApplicationContext context = new AnnotationConfigApplicationContext(App.class);
		UserService object = (UserService) context.getBean("userService");
		object.SayHelloUser();
	}
}

运行结果

ok

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值