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

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

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

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

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

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

 

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

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

这样我们的注解就可以被扫描到了,

题外话,在网上搜到可以用测试用例来测试我们写的代码,不用每次都写

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

这样的代码了。

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

先讲一下怎么测试

首先在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配置文件了。

你可能感兴趣的:(spring学习5-注解式bean配置+Junit简易使用)