2021-06-25Spring学习笔记

6.25Spring学习笔记
实验18:使用@Autowired注解实现根据类型实现自动装配★
实验19:如果资源类型的bean不止一个,
默认根据@Autowired注解标记的成员变量名作为id查找bean,进行装配★
实验20:如果根据成员变量名作为id还是找不到bean,
可以使用@Qualifier注解明确指定目标bean的id★
实验21:在方法的形参位置使用@Qualifier注解
实验22:@Autowired注解的required属性指定某个属性允许不被设置

假设创建了这么几个类:BookSevlet,BookService,BookDao

在我们想要存放一本书的时候,
我们会在BookDao这个类里面写一个savabook()方法,
在BookService这个类里面写一个调用BookDao里面的savebook()的方法save()
在BookServlet这个类里面写一个调用BookService里面的save()的方法doget()

那么很清楚,我们需要在这些类里面分别创建其他类的对象,方便用来调用其他类的方法
以前我们是通过new的,而现在Spring非常强大,提供了自动装配功能,通过在创建类的对象语句上面注解@Autowired就能达到目的

比如这样:

@Controller
public class BookSevlet {

	@Autowired
	private BookService bookService;
}

如此容器就会自动帮你创建好BookService的对象,下面便可以直接调用BookService里面的方法了

注意:@Autowired的自动装配流程:
1.通过类型进行装配:
1.如果只有一个该类型的对象,便装配成功
2.如果有多个该类型的对象,便会将组件的名称作为id进行查找:
1.如果找到,就装配
2.如果没找到,就报错

2.我们也可以通过注解@Qualifier("")对该组件进行重命名,以便id查找,这里需要注意,像这样:
@Qualifier("bookService")
		@Autowired
		private BookService book;
	如果通过@Qualifier("")对该组件进行重命名,那么,命名规则就是该组件首字母小写之后的样子(一定要注意大小写,否则会导致找不到,报空指针异常的错误)。

3.@Autowired默认必须装配成功,未装配成功则报错,但是我们可以通过注解来修改该行为,让其如果未找到,就会赋值未null,不报错
	通过在注解@Autowired()里面添加required="false",默认为true,@Autowired(required="false")即可


4.如果我们的方法上面添加了@Autowired注解,那么在ioc容器被创建时,会自动调用该方法,并对参数进行装配,比如这样:
@Autowired
public void hello(BookService bookservice,BookServlet bookservlet){

}
	那么在容器创建的时候,会自动将形参进行装配,装配流程同上
	同时,在形参前面也可以加注解,比如给该组件命名id,运用@Qualifier注解,像这样:
@Autowired
	public void hello(@Qualifier("bookService")BookService bookservice,BookServlet bookservlet){
	
	}
5.@Autowired是Spring自己的一个自动装配注解,
	而j2ee也自带一个叫@Resource的注解可以进行自动装配,是java的标准
	优缺点与区别:
	@Autowired:功能较为齐全与强大
	@Resource:扩展性更强,如果切换其他一个容器,还能够被识别

Spring单元测试几步走:
1.导包:spring-test-4.0.0.RELEASE.jar
2.在junittest类上加注解@ContextConfiguration(location=“classpath:application.xml”)
3.然后通过Runwith注解调用Spring自己的junit4测试@RunWith(SpringJUnit4ClassRunner.class)
4.接下来就可以在该类中通过ioc容器调用其他组件了

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值