前面的例子我们都是使用xml的bean定义来配置组件,如果组件过多很臃肿。spring2.5引入了组件自动扫描机制,在指定目录下查找标注了@Component、@Service、@Controller、@Repositiory注解的类,并把这些类自动纳入spring容器中管理。

要使用自动扫描机制,我们需要打开以下配置信息:
1、加入context组件,导入注解对应jar:
xmlns:context="http://www.springframework.org/schema/context"
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context-2.5.xsd

2、打开组件自动扫描:
<context:component-scan base-package="..."/>
base-package属性指定要扫描的package,包括其子package。

如果打开了自动扫描的话,会自动开启一些其他context配置组件,比如前面的:<context:annotation-config/>就可以省略了

@Service用于标注业务层组件、
@Controller用于标注控制层组件、
@Repository用于标注数据访问组件,即DAO组件
@Component泛指所有组件,如果无法判断就使用它
暂时这四个注解没多大区别。

四个组件中都只有一个value属性,表示bean的id属性。默认值为类名的首字母大写

代码片段:
@Repository
public class PersonDaoBean implements PersonDao {

@Service(value="personService")
public class PersonServiceBean implements PersonService {
@Resource(name="personDaoBean")
private PersonDao personDao;

既然可以自动扫描,使用注解形式生成bean了,我们在原来xml中海油一些属性,例如scope属性如何设置呢?
scope属性 @Scope(value="...") 默认值是singleton
初始化方法:@PostConstruct 作用在方法上
销毁方法: @PreDestory 作用在方法上

@PostConstruct
public void init(){

@PreDestroy
public void destory(){

通过在classpath自动扫描方式把组件纳入spring容器中管理。的更多相关文章

  1. 向Spring容器中注册组件的方法汇总小结

    1.通过xml定义 <bean class=""> <property name="" value=""></ ...

  2. 8、组件注册-@Import-给容器中快速导入一个组件

    8.组件注册-@Import-给容器中快速导入一个组件 8.1 给容器中注册组建的方式 包扫描+组建标注注解(@Controller.@Service.@Repository.@Component)[ ...

  3. 注解 springbootapplication 自动扫描所在包及其子包。会将有注解的加入到spring容器中

    注解 springbootapplication 自动扫描所在包及其子包.会将有注解的加入到spring容器中

  4. 在spring容器中定义初始化和销毁bean前所做的操作,有三种方式

    1.使用注解,通过@PostConstruct 和 @PreDestroy 方法 实现初始化和销毁bean之前进行的操作 package com.luoq.test.annotation.init; ...

  5. SpringBoot系列之Spring容器添加组件方式

    SpringBoot系列之Spring容器添加组件方式 本博客介绍SpringBoot项目中将组件添加到Spring容器中的方法,SpringBoot项目有一个很明显的优点,就是不需要再编写xml配置 ...

  6. spring注解开发:容器中注册组件方式

    1.包扫描+组件标注注解 使用到的注解如下,主要针对自己写的类 @Controller @Service @Repository @Component @ComponentScan 参考 spring ...

  7. spring IOC中四种依赖注入方式

    在spring ioc中有三种依赖注入,分别是:https://blog.csdn.net/u010800201/article/details/72674420 a.接口注入:b.setter方法注 ...

  8. 转:深入浅出spring IOC中四种依赖注入方式

    转:https://blog.csdn.net/u010800201/article/details/72674420 深入浅出spring IOC中四种依赖注入方式 PS:前三种是我转载的,第四种是 ...

  9. Spring容器、BeanFactory和ApplicationContext,及3种装配Bean的方式

    目录 一. spring容器理解 二. BeanFactory和ApplicationContext之间的关系 三. BeanFactory详情介绍 四.ApplicationContext介绍 五. ...

随机推荐

  1. Linux是怎么启动的(整理)

    昨天笔试考了一道关于linux系统启动的过程,当时没答上来,现在整理出来(其实并不复杂). 按下电源按钮的直到欢迎页出来之后,linux总共做的事可以分为五步来完成. 1.  BIOS加电自检: 加电 ...

  2. 敏捷DoD完毕定义的多种形态

    作者:张克强    作者微博:张克强-敏捷307 关于Definition of Done 完毕的定义 在以往的说法中,常见用 退出标准 , 完毕条件.成功标准,等等 在敏捷软件开发中,存在多级的不同 ...

  3. 关于安装oracle 11g client 出现安装先决条件检查全部失败

    本文转自:https://blog.csdn.net/iloli/article/details/45244159 今天我在安装Oracle11gClient时,全部显示成N/A,Oracle无法执行 ...

  4. MariaDB mysql 比较区别 选择

    MariaDB数据库管理系统是MySQL的一个分支 开发这个分支的原因之一是:甲骨文公司收购了MySQL后,有将MySQL闭源的潜在风险,因此社区采用分支的方式来避开这个风险. MariaDB的目的是 ...

  5. Docker入门系列5:常见问题小结

    重启容器 再次运行容器: docker start container_id 然后 docker attach container_id 就可以继续下命令了. [编辑]命名 --name [编辑]端口 ...

  6. PowerBuilder -- Tab控件

    在tab中关闭窗口 Close(tab_1.getparent()) 调整tab中的控件的tab oder 鼠标右键tabpage_1,选择 Tab Order菜单.

  7. ios-逆向 手把手安装最新版Theos

      Theos.最初由DHowett进行开发,由于DHwoett去了微软,不再有时间维护了,所以Adam Demasi(kirb)接手了他的工作,并且添加了很多全新的功能.所以,之前书上<iOS ...

  8. tps 与 事务平均响应时间关系对答(转)

    问者:每秒处理的事务数和事务的平均响应时间 怎么个关系,有关系吗 kaku21:举个例子:一个高速路 有10个入口,每个入口每秒钟只能进1辆车,请问1秒钟最多能进几辆车?? 问者:10 kaku21: ...

  9. 九度OJ 1162:I Wanna Go Home(我想回家) (最短路径)

    时间限制:1 秒 内存限制:32 兆 特殊判题:否 提交:870 解决:415 题目描述: The country is facing a terrible civil war----cities i ...

  10. ADAS

    1 什么是ADAS advanced driver assistance system,即高级驾驶员辅助系统.是基于车上各种传感器的应用,如摄像头.雷达.激光器等. 2 ADAS的构成部分 2.1 a ...