Spring 使用javaconfig配置

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

原文地址:https://www.cnblogs.com/junge8618/p/8365397.html