除了使用xml,spring提供javaconfig配置,下面是简单的例子:
1.声明接口
/** * */ package com.junge.demo.spring.service; /** * 表演 * @author Administrator * */ public interface IPerface { void play(); }
2.添加实现类
/** * */ package com.junge.demo.spring.service.impl; import org.springframework.stereotype.Service; import com.junge.demo.spring.service.IPerface; /** * 武术表演 * @author Administrator * */ @Service public class WushuPerface implements IPerface { /* (non-Javadoc) * @see com.junge.demo.spring.service.IPerface#play() */ @Override public void play() { System.out.println("武术表演"); } }
3.添加javaconfig配置类,和服务接口在同一级
/** * */ package com.junge.demo.spring.service; import org.springframework.context.annotation.ComponentScan; import org.springframework.context.annotation.Configuration; /** * 自动装配配置类 * @author Administrator * */ @Configuration @ComponentScan public class ServiceConfig { }
4.运行测试:
/** * */ package com.junge.demo.spring; import org.springframework.context.ApplicationContext; import org.springframework.context.annotation.AnnotationConfigApplicationContext; import com.junge.demo.spring.service.IPerface; import com.junge.demo.spring.service.ServiceConfig; /** * @author Administrator * */ public class ServiceConfigApp { private static ApplicationContext applicationContext; /** * @param args */ public static void main(String[] args) { applicationContext = new AnnotationConfigApplicationContext(ServiceConfig.class); System.out.println(applicationContext.getBeansOfType(IPerface.class)); } }
5.运行结果:
6.@Configuration注解说明:默认扫描的是当前包以及子包
如上所示:查看@ComponentScan的参数,有basePackages和basePackageClasses,在同一个java类中可以配置不同的扫描基本包:
在每一个要扫描的包中添加一个空标记接口,使用basePackageClasses可以把所有的扫描都配置上,使用basePackageClasses比basePackages更友好一点,因为在重构代码时,配置可以自动修改。