spring学习5-注解式bean配置+Junit简易使用

隔了两天,忙着面试,快累死了,终于有空来写博客了。好了,发完牢骚,进入咱们今天的学习。面试

上篇spring学习4-bean配置文件中学习了使用xml配置文件配置bean,是否是以为不淡定,每写一个类,就得来注册一下,xml文件得多大。好在spring中提供另外一种bean的配置方式,使用注解配置bean。spring

首先得了解一下注解,注解是jdk1.5才添加的新特性,具体注解怎么写,我就很少说了,我在osc博客里搜到一篇很不错的文章,不了解的童鞋能够去瞧瞧Java注解总结api

配置文件仍是免不了的,须要在配置文件中使用<context:component-scan>标签才能让spring去扫描注解。先准备一下前期工做吧。app

在spring的api文档xsd-config能够找到context的命名空间,把加粗的两行加入到applicationContext.xml里。框架

 

下一步,咱们在配置文件中加入bean扫描的标签,其中只有一个属性,base-package,指定须要扫描的包maven

  
< context:component-scan base-package ="com.example.spring" ></ context:component-scan >

这样咱们的注解就能够被扫描到了,工具

题外话,在网上搜到能够用测试用例来测试咱们写的代码,不用每次都写学习

  
ApplicationContext context = new ClassPathXmlApplicationContext( " applicationContext.xml " ); Car car = (Car) context.getBean( " car " );

这样的代码了。测试

-------------------------------------我是华丽的分割线---------------------------------------spa

先讲一下怎么测试

首先在pom.xml里须要加入两个包,一个是junit4,一个是spring的测试框架,原来建立maven工程自带的junit版本过低,很差用。

  
< dependency > < groupId > org.springframework </ groupId > < artifactId > spring-test </ artifactId > < version > 3.2.8.RELEASE </ version > < scope > runtime </ scope > </ dependency > < dependency > < groupId > junit </ groupId > < artifactId > junit </ artifactId > < version > 4.11 </ version > </ dependency >

而后咱们写一下测试类,就叫CarTest好了,名字随便。

  
@RunWith(SpringJUnit4ClassRunner. class ) @ContextConfiguration(locations = " classpath:applicationContext.xml " ) public class CarTest { @Test public void demo1(){ } }

整个测试类框架大概就是这样子

第一行@RunWith(SpringJUnit4ClassRunner.class)是整合spring和junit4用的

第二行@ContextConfiguration(locations="classpath:applicationContext.xml")是指定applicationContext.xml文件

demo1方法上的注解就是标注这个方法由junit运行,须要运行测试用例的时候按下图来,在方法名上点右键,选debug as或是run as中的 JUnit Test便可,很是方便

image 

-------------------------------------我是华丽的分割线再一次出现---------------------------------------

如今咱们修改一下以前的Car类和Engine类

在QiyouEngine类名上面一行添加 @Component("qiyouEngine"),这个的做用和xml配置中Bean id=”qiyouEngine”是同样的

在Car类中咱们在private IEngine engine;上面添加两个标记,第一标记标识自动装配,这个标记是按类型进行装配的,若是是有多个类实现了IEngine,就须要写@Qualifier("qiyouEngine")指明bean的id是哪一个,否则spring会报错,说找到多个实现了IEngine类。

  
@Autowired @Qualifier( " qiyouEngine " ) private IEngine engine;

这是一种写法,spring推荐使用另外一个标签@Resource,两种方法效果是同样的

  
@Resource(name = " qiyouEngine " ) private IEngine engine;

使用了自动装配标签,本来set的方法就能够去掉了,spring使用的是asm工具,直接操做字节码注入类,没有set的方法也是能够注入的。

最后须要说明的一点,注解的方式只试用类是咱们本身写的,或是咱们能够进行修改代码的才有用,若是是第三方类,就只能老老实实的用xml配置文件了。

相关文章
相关标签/搜索