Spring基础(一)——Spring中装入bean的几种方法

装配bean的方法:
选择使用XML装配一些bean,使用Spring基于Java的配置(JavaConfig)来装配另一些bean, 而将剩余的bean让Spring去自动发现,概括起来一共是两种技术:显示装配技术、自动化装配技术,其中自动化装配技术最为强大。
spring 实现自动化装配j技术包括:
·组件扫描:Spring会自动发现应用上下文中所创建的bean,
·自动装配:Spring自动满足bean 之间的依赖。

1、组件扫描:首先创建一个Java类,并使用@Component标注,告诉spring这是一个注解类,需要为该类创建一个bean,

@Component
public class SgtPeppers implements CompactDisc {
	private String title="Sgt. Peppers Lonely Hearts Club Band";
	private String artist="The Beatles";
	public void play() {
		// TODO Auto-generated method stub
		System.out.println("Playing "+title +"by "+artist);
	}
}

但是组件扫描默认是不启用的,需要我们显示配置Spring,命令其寻找带有@Component注解的类,为类创建bean

package com.ssm.interImpl;
import org.springframework.context.annotation.ComponentScan;
import org.springframework.context.annotation.Configuration;
@Configuration
@ComponentScan
public class CDPlayerConfig {
 }

其中注解@ComponentScan 能够在spring中启用组件扫描,该注解默认会启用扫描与配置类相同的包及该包下的子包。
如果使用xml来启用组件扫描的话,那么可以使用spring context命名空间的

<context:component-scan>

测试代码:

package example;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.test.context.ContextConfiguration;
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
import com.ssm.inter.CompactDisc;
import com.ssm.interImpl.CDPlayerConfig;
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(classes=CDPlayerConfig.class)
public class CDPlayerTest {
	@Autowired
	private CompactDisc cd;
	@Test
	public void cdShouldNotBeNUll() {
		System.out.println(cd);
	}
}

(1)为bean 命名
通常spring会为创建的bean设置不同的ID,默认是将类名的第一个字母变为小写。我们还可以为bean自定义唯一的ID,

@Component("comSgtPeppers ")
public class SgtPeppers implements CompactDisc {
}

(2)设置扫描的基础包。是因为正常我们的配置类所在包回是一个单独的包,所以这里需要指明要扫描的组件的包,同时还可以设置多个要扫描的包。

@Configuration
@ComponentScan(basePackages="com.ssm.interImpl")
public class CDPlayerConfig {
 }

2、通过为bean添加注解实现自动装配。
首先是@Autowired,使用方式一共有两种,一种是用在构造器上,还可以用在属性的Setter方法上(这里可以是任意方法)。如果没有匹配的bean,那么会抛出一个异常,[提示:如果是上述两种方法都没有使用,直接在属性上使用@Autowired注解,抛出空指针异常,如果有多个bean都满足,同样也会抛出异常,自动装配的歧义性接下来会讲。]

@Component
public  class CDPlayer implements  MedailPlayer{
 
 	 private CompactDisc  cd;
 	 
	 @Autowired
	 public  CDPlayer (CompactDisc   cd){
	 		this.id=id;
		 }
	 }
@Autowired
public void setCompactDisc(CompactDisc   cd){
		this.cd=cd;
}

注:仅个人理解,望大神多指点。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值