Spring_5_组件自动扫描机制

Web.xml的配置、PersonDao类、PersonDao类与1中相同。

自动扫描机制就是,它可以在类路径下寻找标注了@Component、@Service、@Controller、@Repository注解的类,并把这些类纳入Spring容器中管理。

1)PersonDaoBean 类:

@Repository
public class PersonDaoBean implements PersonDao  {

	public void add() {
		System.out.println("执行personDao中的add()方法!");
	}
}

2)beans.xml文件的配置:

<?xml version="1.0" encoding="UTF-8"?>
<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">

	<!-- 添加的自动扫描组件,base-package为要扫描的包(包括子包)-->
	<context:component-scan base-package="springDaoBean" />

</beans>

3)PersonServiceBean 类:

//@Service
// 直接访问PersonServiceBean类
@Service("personService")
// 先访问personService类然后跳转到PersonServiceBean类
@Scope("prototype")
// 每次用PersonServiceBean类都会生成一个新的对象
public class PersonServiceBean implements PersonService {

	private PersonDao personDao;

	@PostConstruct
	// 当实例化PersonServiceBean类时会调init方法
	public void init() {
		System.out.println("初始化");
	}

	@PreDestroy
	// 当正常关闭资源时回调用destroy方法
	public void destroy() {
		System.out.println("关闭资源");
	}

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

4)springTest 类:

public class springTest {
	@Test
	public void instanceSpring() {
		AbstractApplicationContext ctx = new ClassPathXmlApplicationContext("springXml/beans.xml");

		// 使用@Service直接放问PersonServiceBean
		// PersonService personServiceBean = (PersonService) 											ctx.getBean("personService");
		// System.out.println(personServiceBean);

		// 使用@Service("personService")间接访问PersonServiceBean
		// PersonService personService = (PersonService)ctx.getBean("personService");
		// System.out.println(personService);

		// 在PersonServiceBean类中可以添加@scope("prototype")是每	次实例化都生成一个新的对象
		// PersonService personService1 = (PersonService)ctx.getBean("personService");
		// PersonService personService2 = (PersonService)ctx.getBean("personService");
		// System.out.println(personService1 == personService2);

		// 在personServiceBean中添加@PostConstruct, 实例化类对象时会调用init()方法
		PersonService personServiceBean = (PersonService)ctx.getBean("personService");
		System.out.println(personServiceBean);

		// 在personServiceBean中添加@PreDestroy,在正常关闭资源时会调用destroy()方法
		ctx.close();
	}
}

@Service用于标注业务层组件,@Controller用于标注控制层组件(如struts中的action)、@Repository用于标注数据访问组件(DAO组件)、@Component扫描那些不好归类的组件。

Spring_5_组件自动扫描机制

时间: 2024-12-05 12:58:07

Spring_5_组件自动扫描机制的相关文章

Delphi的组件读写机制

Delphi的组件读写机制(一) 一.流式对象(Stream)和读写对象(Filer)的介绍在面向对象程序设计中,对象式数据管理占有很重要的地位.在Delphi中,对对象式数据管理的支持方式是其一大特色. Delphi是一个面向对象的可视化设计与面向对象的语言相结合的集成开发环境.Delphi的核心是组件.组件是对象的一种.Delphi应用程序完全是由组件来构造的,因此开发高性能的Delphi应用程序必然会涉及对象式数据管理技术. 对象式数据管理包括两方面的内容:● 用对象来管理数据● 对各类数

delphi组件读写机制

一.流式对象(Stream)和读写对象(Filer)的介绍 在面向对象程序设计中,对象式数据管理占有很重要的地位.在Delphi中,对对象式数据管理的支持方式是其一大特色.  Delphi是一个面向对象的可视化设计与面向对象的语言相结合的集成开发环境.Delphi的核心是组件.组件是对象的一种.Delphi应用程序完全是由组件来构造的,因此开发高性能的Delphi应用程序必然会涉及对象式数据管理技术. 对象式数据管理包括两方面的内容:● 用对象来管理数据● 对各类数据对象(包括对象和组件)的管理

React: React的组件状态机制

一.简介 在React中,有两个核心的默认属性,分别是state和props.state会记录组件的状态,React根据状态的变化,会对界面做相应的调整或渲染.props则是数据流向属性,React通过props传递来实现父子组件之间的通信.本篇主要研究React的组件状态机制,在很多Web界面可以看到数据不停的变化,其实,这个过程就是React监听到state状态在不停地发生改变时一次次重新对组件重新渲染的结果.基于React这个机制,所以开发者可以很灵活地用state来完成对行为的控制.数据

【React 6/100】 React原理 | setState | JSX语法转换 | 组件更新机制

****关键字 | setState | JSX语法转换 | 组件更新机制 组件更新机制 setState() 的两个作用 修改state 更新组件 过程:父组件重新渲染时,也会重新渲染子组件,但只会渲染当前组件子树(当前组件以其所有子组件) 组件性能优化 减轻state 减轻state:只存储跟组件渲染相关的数据(比如:count/ 列表数据 /loading等) 注意:不用做渲染的数据不要放在state中 对于这种需要在多个方法中用到的数据,应该放到this中 避免不必要的重新渲染 组件更新

Spring(九)让Spring自动扫描和管理Bean

在一个稍大的项目中,通常会有上百个组件,如果这些组件采用xml的bean定义来配置,显然会增加配置文件的体积,查找和维护起来也不太方便.Spring2.5为我们引入了组件自动扫描机制,它可以在类路径下寻找标注了@Component.@Service.@Controller.@Repository注解的类,并把这些类纳入Spring容器中管理.它的作用和在xml文件中使用bean节点配置组件是一样的.要使用自动扫描机制,需配置以下信息: beans4.xml <?xml version="1

Spring2.5学习3.4_让Spring自动扫描和管理Bean

通过在类路径下,根据自动扫描方式,把组件纳入Spring容器管理. 如果这些组件采用xml的bean定义来进行配置,显然会增加配置文件的体积,查找以及维护起来也不太方便.Spring2.5引入了组件自动扫描机制,它可以在类路径下寻找标注了@Component,@Service,@Controrl,@Respository注解的类,并把这些类纳入Spring容器管理,它的作用和xml文件中bean节点的配置是一样的,要使用自动扫描机制,我们需要打开以下配置信息: <?xml version="

spring入门教程——笔记

Spring学习笔记(1)----简单的实例 --------------------------------- 首先需要准备Spring包,可从官方网站上下载. 下载解压后,必须的两个包是spring.jar和commons-logging.jar.此外为了便于测试加入了JUnit包. 在Myeclipse中创建Java项目. 编写一个接口类,为了简单,只加入了一个方法. Java代码  1.package com.szy.spring.interfacebean;  2.  3.public

不错的Spring学习笔记(转)

Spring学习笔记(1)----简单的实例 ---------------------------------   首先需要准备Spring包,可从官方网站上下载.   下载解压后,必须的两个包是spring.jar和commons-logging.jar.此外为了便于测试加入了JUnit包.   在Myeclipse中创建Java项目.   编写一个接口类,为了简单,只加入了一个方法.   Java代码   1.package com.szy.spring.interfacebean;  

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

Spring注解@Component.@Repository.@Service.@Controller区别 Spring 2.5 中除了提供 @Component 注释外,还定义了几个拥有特殊语义的注释,它们分别是:@Repository.@Service 和 @Controller.在目前的 Spring 版本中,这 3 个注释和 @Component 是等效的,但是从注释类的命名上,很容易看出这 3 个注释分别和持久层.业务层和控制层(Web 层)相对应.虽然目前这 3 个注释和 @Comp