`

Spring基础入门三:基于@Component,@Service,@Controller,@Repositroy自动扫描方式把组件纳入Spring容器中管理

阅读更多

使用@Component,@Service,@Controller,@Repositroy可以完成不用XML配置也可以将Java组件交给Spring容器

JavaBean代码如下:

package autoScan.dao;

public interface StudentDao {
	public abstract void add();
}

 

@Repository
@Scope("singleton")
public class StudentDaoImple implements StudentDao {
	
	// @PostConstruct用于配置初始化方法与XML中的init-method作用一致
	@PostConstruct
	public void myInit() {
		System.out.println("初始化方法");
	}
	
	// @PreDestroy用于配置销毁方法与XML中的destroy-method作用一致
	@PreDestroy
	public void myDestroy() {
		System.out.println("销毁方法");
	}
	
	public void add() {
		System.out.println("autoScan.dao.imple.StudentDaoImple的add方法");
	}
}
 

 

package autoScan.service;

public interface StudentService {
	public abstract void save();
}
 
@Service("stuService")
public class StudentServiceImple implements StudentService {
	
	@Resource(name = "studentDaoImple")
	private StudentDao stuDao;
	
	public void setStuDao(StudentDao stuDao) {
		this.stuDao = stuDao;
	}

	public void save() {
		stuDao.add();
	}
}

 那么XML中只需配置<context:component-scan>即可如下:

<beans xmlns="http://www.springframework.org/schema/beans"
	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	xmlns:context="http://www.springframework.org/schema/context"
	xsi:schemaLocation="http://www.springframework.org/schema/beans
           http://www.springframework.org/schema/beans/spring-beans-2.5.xsd
           http://www.springframework.org/schema/context
           http://www.springframework.org/schema/context/spring-context-2.5.xsd">

	<!-- 通过在classpath自动扫描方式把组件纳入Spring容器中管理 -->
	<context:component-scan base-package="autoScan.dao"></context:component-scan>
	<context:component-scan base-package="autoScan.service"></context:component-scan>
	
</beans>

 说明:

/**
 * 通过在classpath自动扫描方式把组件纳入Spring容器中管理
 * 
 * @author 张明学 2010-6-3下午09:52:40
 */
public class AutoScanTest {
	public static void main(String[] args) {
		// 通过<context:component-scan base-package="autoScan.dao"/>将base-package内
		// 寻找标注了@Component,@Service,@Controller,@Repositroy的bean纳入Spring的容器中
		// @Repositroy:用于标注数据访问组件
		// @Service:用于标注业务层
		// @Controller:用于标注控制器
		// @Component:用于标注其它的组件 (暂时这四个注解功能上没有什么区别)
		AbstractApplicationContext ctx = new ClassPathXmlApplicationContext("beans5.xml");
		// Bean的id默认为类名第一个字母小写,也可以@Service("stuService")进行修改
		// 也可以通过@Scope("prototype")指定bean的作用域
		// 也可以通过@PostConstruct指定初始化方法
		// 也可以通过@PreDestroy指定销毁方法
		System.out.println(ctx.getBean("studentDaoImple"));
		System.out.println(ctx.getBean("stuService"));

		StudentService stuService = (StudentService) ctx.getBean("stuService");
		System.out.println(stuService);

		System.out.println(ctx.getBean("studentDaoImple") == ctx
				.getBean("studentDaoImple"));
		ctx.close();
	}
}
 
1
2
分享到:
评论
1 楼 菜菜菜 2010-06-05  
根据测试,需要在StudentDaoImple类前加注释@Service("studentDaoImple")

相关推荐

    Spring注解@Component、@Repository、@Service、@Controller区别.doc

    这将扫描 com.eric.spring 包及其子包下所有标注了 @Component、@Repository、@Service、@Controller 等注解的组件,并将其纳入 Spring 容器中管理。 在实际应用中,我们可以使用 @Service、@Repository、@...

    Spring通过在classpath自动扫描方式把组件纳入spring容器中管理

    在Spring框架中,自动扫描(Auto-Component Discovery)是一种便捷的方式,它允许开发者无需显式配置每个bean,就能将类路径下(classpath)的特定包及其子包中的组件(即带有特定注解的类)纳入Spring容器进行管理...

    解释@Component @Controller @Service @Repository

    总的来说,`@Component`、`@Controller`、`@Service`和`@Repository`注解是Spring框架中进行组件扫描和依赖注入的重要工具,它们帮助开发者构建出高效、可维护的Java应用程序。在实际开发中,正确理解和运用这些注解...

    Spring注解 @Component、@Repository、@Service、@Controller区别

    ### Spring注解 @Component、@Repository、@Service、@Controller 的区别 #### 一、引言 在现代软件开发中,尤其是Java领域的企业级应用开发中,Spring框架因其灵活、强大的依赖注入(DI)和面向切面编程(AOP)...

    Spring扫描器—spring组件扫描使用详解

    在Spring框架中,`&lt;context:component-scan/&gt;`元素是核心组件扫描的基石,它允许我们自动检测和注册beans,极大地简化了配置工作。这篇博客将深入探讨这个功能强大的特性,以及如何在实际开发中有效利用它。 一、...

    Spring Boot技术知识点:如何深入理解@Component注解

    在Spring Boot中,通过`@SpringBootApplication`注解,Spring会默认进行组件扫描,寻找类路径下标记了`@Component`、`@Service`、`@Repository`和`@Controller`的类。这些注解都是`@Component`的特殊形式,分别对应...

    Spring的自动扫描注入.docx

    在 Spring 2.5 中,引入了组件自动扫描机制,该机制可以在类路径下寻找标注了 @Component、@Service、@Controller、@Repository 注解的类,并将这些类纳入 Spring 容器中管理。 @Component、@Repository、@Service...

    spring自动扫描和管理Bean的示例

    在Spring框架中,自动扫描和管理Bean是一种便捷的方式,它允许开发者无需显式地在配置文件中声明每个Bean,而是让Spring容器自动发现并管理应用中的组件。这一特性极大地简化了Spring应用的配置,提高了开发效率。...

    Spring @讲义.txt

    ### Spring 注解详解:@Component、@Repository、@Service、@Controller 区别 #### 一、Spring 注解概述 Spring 框架是 Java 开发领域中非常流行的一个轻量级框架,它通过依赖注入(DI)和面向切面编程(AOP)等...

    Spring @compenent注解详解

    在Spring框架中,`@Component`注解是核心的组件注解之一,它标志着一个类作为Spring IoC容器中的Bean。这个注解及其派生注解(如`@Service`、`@Repository`和`@Controller`)是Spring依赖注入(Dependency Injection...

    Spring自动注解方式实例

    你可以将它看作是一种声明,告诉Spring:“这个类是一个组件,需要被管理”。例如,你可能会创建一个名为`UserService`的类,并在顶部添加`@Component`注解: ```java @Component public class UserService { /...

    spring 2.5 IOC 自动扫描,自动注入

    自动扫描是Spring框架的一个强大功能,它允许开发者指定一个或多个包,Spring会自动查找这些包及其子包下的所有带有特定注解(如@Component、@Service、@Repository、@Controller等)的类,然后将这些类注册为bean。...

    spring教程,spring入门

    - Annotation配置:使用注解(@Component、@Service、@Repository、@Controller等)声明Bean,更简洁。 - Java配置:使用@Configuration和@Bean注解实现配置。 9. **Spring AOP的使用**: - 定义切面:使用@Aspect...

    spring中service生命周期(xml/annotation)

    它们用于标记组件类,方便Spring自动扫描并管理。其中,@Service通常用于标记Service层的类。例如: ```java @Service public class MyServiceImpl implements MyService { // ... } ``` 使用`@Service`注解的类会...

    Spring注解开发组件扫描器.zip

    组件扫描(Component Scanning)是Spring的核心特性之一,它允许框架自动发现并注册bean定义,而无需在XML配置文件中显式声明。在这个名为“Spring注解开发组件扫描器”的资料中,我们将深入探讨如何利用注解进行...

    Spring定义bean的三种方式和自动注入

    在Spring框架中,管理Bean的方式主要有三种:XML配置、注解配置和Java配置。下面将详细介绍这三种方式以及Spring的自动注入机制。 1. **基于XML的Bean定义**: 在XML配置中,我们通常在`applicationContext.xml`...

    spring @Component注解原理解析

    Spring 框架中 @Component 注解是用于标注 Bean 的一种方式,通过使用 @Component 注解,Spring 框架可以自动将该类纳入到容器中管理,从而实现了依赖注入和控制反转。 @Component 注解的作用是将普通的 POJO 对象...

    Spring基础教学视频

    - 注解配置:通过使用如@Component、@Service、@Repository、@Controller等注解来进行配置管理,这种方式更加简洁明了。 - **Bean的生命周期**:从创建到销毁的整个过程,Spring允许开发者在特定的阶段进行干预,...

Global site tag (gtag.js) - Google Analytics