1.创建Maven项目,项目名称springdemo23,如图所示

Spring4-@Import的使用_Spring4


2.配置Maven,修改项目中的pom.xml文件,修改内容如下

<project xmlns="http://maven.apache.org/POM/4.0.0" 
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
  <modelVersion>1.0.0</modelVersion>
  <groupId>shequ</groupId>
  <artifactId>springdemo13</artifactId>
  <version>0.0.1-SNAPSHOT</version>
  
  <properties>
  	<java.version>1.7</java.version>
  	<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
  	<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
  </properties>
  
  <repositories>
  	<repository>
  		<id>codelds</id>
  		<url>https://code.lds.org/nexus/content/groups/main-repo</url>
  	</repository>
  </repositories>
  
  <dependencies>
  	<dependency>
  		<groupId>junit</groupId>
  		<artifactId>junit</artifactId>
  		<version>4.10</version>
  	</dependency>
  	
  	<dependency>
  		<groupId>org.springframework</groupId>
  		<artifactId>spring-core</artifactId>
  		<version>4.1.4.RELEASE</version>
  	</dependency>
  	
  	<dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-context</artifactId>
        <version>4.1.4.RELEASE</version>
    </dependency>
    
    <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-jdbc</artifactId>
        <version>4.1.4.RELEASE</version>
    </dependency>
    
    <dependency>
        <groupId>mysql</groupId>
        <artifactId>mysql-connector-java</artifactId>
        <version>5.1.34</version>
    </dependency>
       
  </dependencies>
  <build/>
</project>


3.在src/main/java下创建实体Bean Forum,包名(com.mycompany.shequ.bean)如图所示

Spring4-@Import的使用_@Import_02


4.实体Bean Forum的内容如下

package com.mycompany.shequ.bean;

public class Forum {
	private int fid;
	private String name;
	public int getFid() {
		return fid;
	}
	public void setFid(int fid) {
		this.fid = fid;
	}
	public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}
}


5.在src/main/java下创建实体Bean ForumPost,包名(com.mycompany.shequ.bean)如图所示

Spring4-@Import的使用_Spring4_03


6.实体Bean ForumPost的内容如下

package com.mycompany.shequ.bean;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Qualifier;

public class ForumPost {
	private int pid;
	private String name;
	private Forum forum;
	
	public ForumPost() {
		super();
	}
	
	public ForumPost(Forum forum) {
		super();
		this.forum = forum;
	}
	public int getPid() {
		return pid;
	}
	public void setPid(int pid) {
		this.pid = pid;
	}
	public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}
	public Forum getForum() {
		return forum;
	}
	
	@Autowired
	@Qualifier("forum2")
	public void setForum(Forum forum) {
		this.forum = forum;
	}
}


7.在src/main/java下创建服务接口IForumService,包名(com.mycompany.shequ.service)如图所示

Spring4-@Import的使用_@Import_04


8.服务接口IForumService的内容如下

package com.mycompany.shequ.service;

import com.mycompany.shequ.bean.Forum;

public interface IForumService {
	public Forum getForumById(int fid);
}


9.在src/main/java下创建服务接口IForumPostService,包名(com.mycompany.shequ.service)如图所示

Spring4-@Import的使用_Spring4_05


10.服务接口IForumPostService的内容如下

package com.mycompany.shequ.service;

import com.mycompany.shequ.bean.ForumPost;

public interface IForumPostService {
	public ForumPost getForumPostById(int pid);
}


11.在src/main/java下创建服务接口IForumService的实现类ForumServiceImpl,包名(com.mycompany.shequ.service.impl)如图所示

Spring4-@Import的使用_Spring4_06


12.服务接口IForumService的实现类ForumServiceImpl的内容如下

package com.mycompany.shequ.service.impl;

import com.mycompany.shequ.bean.Forum;
import com.mycompany.shequ.service.IForumService;

public class ForumServiceImpl implements IForumService {

	public Forum getForumById(int fid) {
		Forum forum = new Forum();
		forum.setFid(fid);
		forum.setName("@Configuration");
		return forum;
	}

}


13.在src/main/java下创建服务接口IForumPostService的实现类ForumPostServiceImpl,包名(com.mycompany.shequ.service.impl)如图所示

Spring4-@Import的使用_@Import_07


14.服务接口IForumPostService的实现类ForumPostServiceImpl的内容如下

package com.mycompany.shequ.service.impl;

import com.mycompany.shequ.bean.ForumPost;
import com.mycompany.shequ.service.IForumPostService;

public class ForumPostServiceImpl implements IForumPostService {

	public ForumPost getForumPostById(int pid) {
		ForumPost post = new ForumPost();
		post.setPid(pid);
		post.setName("@import");
		return post;
	}

}



15.在src/main/java下创建配置类ForumServiceImplConfig,包名(com.mycompany.shequ.config)如图所示

Spring4-@Import的使用_Spring4_08


16.配置类ForumServiceImplConfig的内容如下

package com.mycompany.shequ.config;

import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

import com.mycompany.shequ.service.IForumService;
import com.mycompany.shequ.service.impl.ForumServiceImpl;

@Configuration
public class ForumServiceImplConfig {
	
	@Bean(name="forumservice")
	public IForumService forumDao(){
		return new ForumServiceImpl();
	}
}


17.在src/main/java下创建配置类ForumPostServiceImplConfig,包名(com.mycompany.shequ.config)如图所示

Spring4-@Import的使用_Spring4_09


18.配置类ForumPostServiceImplConfig的内容如下

package com.mycompany.shequ.config;

import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

import com.mycompany.shequ.service.IForumPostService;
import com.mycompany.shequ.service.impl.ForumPostServiceImpl;

@Configuration
public class ForumPostServiceImplConfig {

	@Bean(name="forumpostservice")
	public IForumPostService forumPostDao(){
		return new ForumPostServiceImpl();
	}
}


19.在src/main/java下创建配置类AppConfig,包名(com.mycompany.shequ.config)如图所示

Spring4-@Import的使用_Spring4_10


20.配置类AppConfig的内容如下

package com.mycompany.shequ.config;

import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.Import;

@Configuration
@Import({ForumServiceImplConfig.class,ForumPostServiceImplConfig.class})
public class AppConfig {

}


21.在src/test/java下创建测试类AppTest,包名(com.mycompany.shequ.test),如图所示

Spring4-@Import的使用_Spring4_11


22.测试类AppTest的内容如下

package com.mycompany.shequ.test;

import org.junit.Test;
import org.springframework.context.ApplicationContext;
import org.springframework.context.annotation.AnnotationConfigApplicationContext;

import com.mycompany.shequ.bean.Forum;
import com.mycompany.shequ.bean.ForumPost;
import com.mycompany.shequ.config.AppConfig;
import com.mycompany.shequ.service.IForumService;
import com.mycompany.shequ.service.IForumPostService;

public class AppTest {
	
	@Test
    public void configTest(){
        ApplicationContext context = new AnnotationConfigApplicationContext(AppConfig.class);
		
        IForumService forumService = (IForumService) context.getBean("forumservice");
		
        Forum forum = forumService.getForumById(1);
        System.out.println(forum.getName());
		
        IForumPostService forumPostService = (IForumPostService) context.getBean("forumpostservice");
        ForumPost post = forumPostService.getForumPostById(2);
        System.out.println(post.getName());
    }
}


23.在测试类AppTest的configTest方法上右键运行,输出结果如图所示

Spring4-@Import的使用_Spring4_12

Spring4-@Import的使用_@Import_13