除了使用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更友好一点,因为在重构代码时,配置可以自动修改。