Spring4-@Import的使用

简介:



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

wKioL1jTdnWhnbXYAAAVE3kZp_Y534.png-wh_50


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)如图所示

wKioL1jTdvaBgH6FAABfTxK5Yzo293.png-wh_50


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)如图所示

wKiom1jTdzmQSEqfAABf-SuFedA626.png-wh_50


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)如图所示

wKioL1jTeAiA5ksAAABsLrl6rYA658.png-wh_50


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)如图所示

wKiom1jTeGvDcfKcAABqj1nIWkI492.png-wh_50


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)如图所示

wKiom1jTeM6xK6tBAABrz46Srqo068.png-wh_50


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)如图所示

wKioL1jTeSCBaOy1AABuU5Cobis282.png-wh_50


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)如图所示

wKiom1jTecKAq5zkAABoBzA4pG8387.png-wh_50


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)如图所示

wKioL1jTejyw7BwkAABrb6xF5O8670.png-wh_50


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)如图所示

wKiom1jTexiStYFaAABn2iMaEeQ381.png-wh_50


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),如图所示

wKioL1jTe32hpcUjAABfYOy4EN0246.png-wh_50


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方法上右键运行,输出结果如图所示

wKiom1jTfHryZ_cAAAEmYz8cfOY488.png-wh_50

wKioL1jUhejxBx2KAABwCKMO5XE040.png-wh_50



本文转自 素颜猪 51CTO博客,原文链接:http://blog.51cto.com/suyanzhu/1909673

相关文章
|
2月前
|
Java API 开发者
Spring中@import注解终极揭秘
在Spring框架中,@Import注解可以用来引入一个或多个组件,这些组件通常是通过@Bean注解定义的,当使用@Import注解时,实际上是在告诉Spring:“除了当前配置类中的bean定义外,还想包含另一个配置类(或多个配置类)中定义的bean。”
Spring中@import注解终极揭秘
|
9月前
java202304java学习笔记第六十天-ssm-spring配置文件-import和知识要点
java202304java学习笔记第六十天-ssm-spring配置文件-import和知识要点
27 0
|
10月前
|
XML 缓存 SpringCloudAlibaba
Spring注解导入:@Import使用及原理详解
`@Import` 是 Spring 基于 Java 注解配置的主要组成部分,`@Import` 注解提供了类似 `@Bean` 注解的功能,向Spring容器中注入bean,也对应实现了与Spring XML中的<import/>元素相同的功能
698 0
|
10月前
|
XML Java 测试技术
Spring高手之路8——Spring Bean模块装配的艺术:@Import详解
本文将带你深入探索Spring框架的装配机制,以及它如何使你的代码更具模块化和灵活性。我们首先介绍Spring手动装配的基础知识,然后进一步解析@Import注解在模块装配中的关键角色。文章涵盖从导入普通类、配置类,到使用ImportSelector和ImportBeanDefinitionRegistrar进行动态和选择性装配等多个层次,旨在帮助读者全面理解和掌握Spring的装配技术。
241 0
Spring高手之路8——Spring Bean模块装配的艺术:@Import详解
|
12月前
|
Java Spring 容器
Spring Boot - 自动装配中的不可忽视的@Import
Spring Boot - 自动装配中的不可忽视的@Import
98 0
|
存储 Java 中间件
《Spring核心技术》第5章:三万字深度解析@Import注解
《Spring核心技术》第5章:三万字深度解析@Import注解
135 0
《Spring核心技术》第5章:三万字深度解析@Import注解
|
Java Spring 容器
Spring注解@Import使用
Spring注解@Import使用
Spring注解@Import使用
|
Java 容器 Spring
Spring源码从入门到精通---@Import(五)
Spring源码从入门到精通---@Import(五)
Spring源码从入门到精通---@Import(五)
|
XML JSON SpringCloudAlibaba
深入理解 Spring @Import 不同方式注册 Bean
深入理解 Spring @Import 不同方式注册 Bean
340 0
深入理解 Spring @Import 不同方式注册 Bean
|
Java Spring 容器
每日一面 - Spring 的 @Import 注解的作用与用法(下)
每日一面 - Spring 的 @Import 注解的作用与用法(下)