1、搜索bean类,使用注解标注spring bean。

@Component:标注一个普通的spring bean类

@Controller:标注一个控制器组件类(Java EE组件)

@Service:标注一个业务逻辑组件类(Java EE组件)

@Repository:标注一个DAO组件类(Java EE组件)

普通bean在使用@Component注解后,还需要在配置文件中配置这些bean的搜索路径。

引入命名空间:xmlns:context="http://www.springframework.org/schema/context"

引入元素:

http://www.springframework.org/schema/context
            http://www.springframework.org/schema/context/spring-context-4.0.xsd

指定搜索bean注解路径:

<context:component-scan base-package="com.lfy.bean"/>

举个例子:

<?xml version="1.0" encoding="GBK"?>
<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-4.0.xsdhttp://www.springframework.org/schema/contexthttp://www.springframework.org/schema/context/spring-context-4.0.xsd"><!-- 自动扫描指定包及其子包下的所有Bean类 --><context:component-scan base-package="com.lfy.bean"/>
</beans>

基于注解模式下,bean实例的名称默认是bean类的首字母小写,其他都不变。当然spring也支持在添加注解的时候指定bean实例的名称,如@Component("chinese")。

除此之外,还可以通过<component-scan.../>元素添加<include-filter.../>或<exclude-filter.../>子元素来指定spring bean类,只要指定路径下的java类满足指定的规则,无论其是否使用了注解,spring一样会将其当做bean类来处理。使用<include-filter.../>、<exclude-filter>元素时要求指定一下两个属性:

1》type:指定过滤器类型。spring内建的过滤器类型有:

annotation:Annotation过滤器,该过滤器需要指定一个Annotation名,如com.lfy.bean.MyAnnotation。

assignable:类名过滤器,该过滤器直接指定一个Java类。

regex:正则表达式过滤器,该过滤器指定一个正则表达式,匹配该正则表达式的Java类都将满足该规则。

aspectj:AspectJ过滤器。

2》expression:指定过滤器所需要的表达式。

2、指定bean的作用域

默认是single通。可以使用使用@Scope,也可以在配置文件中指定scope-resolver属性,则自定义的作用域解析器需要自定义,自定义的解析器需要实现ScopeMetadataResolver接口,并提供自定义的作用域解析策略。

举个例子:

<beans ...><context:component-scan base-package="com.lfy.bean" scope-resolver="="com.lfy.util.MyScopeResolver"/></beans>

3、使用@Resource配置依赖

@Resource有一个name属性,该属性相当于XML Schema模式中ref属性标签的作用。

//此时直接使用的是Java EE规范的Field属性字段注入
@Resource(name="stoneAxe")
private Axe axe;

//此时将作为参数传入setter方法
@Resource(name="stoneAxe")
public void setAxe(Axe axe){this.axe=axe;
}

或者name属性省略

4、使用@PostConstruct和@PreDestroy定制生命周期行为

前面我们使用的生命周期相关的有:

init-method:指定bean的初始化方法--spring容器会在bean的依赖关系注入完成后回调该方法。

destroy-method:指定bean销毁之前的方法--spring容器会在bean销毁之前回调该方法。

注解方面与之对应的有

@PostConstruct:对应init-method

@PreDestroy:对应destroy-method

5、@DependsOn强制初始化其他bean

可以修饰bean类或方法。指定一个字符串数组作为参数。

@dependsOn({"steelAxe","abc"})
@Component
public class Chinese{...
}

6、@Lazy是否取消预初始化

使用该注解可以指定一个boolean型的value属性,该属性决定是否预初始化bean

@dependsOn({"steelAxe","abc"})
@Lazy(true)
@Component
public class Chinese{...
}

7、@Autowired自动装配,@Qualifier精确装配

转载于:https://www.cnblogs.com/ZeroMZ/p/11333210.html

spring-第十三篇之零配置支持相关推荐

  1. 基于纯Java代码的Spring容器和Web容器零配置的思考和实现(3) - 使用配置

    经过<基于纯Java代码的Spring容器和Web容器零配置的思考和实现(1) - 数据源与事务管理>和<基于纯Java代码的Spring容器和Web容器零配置的思考和实现(2) - ...

  2. Spring JdbcTemplate + transactionTemplate 简单示例 (零配置)

    jdbcTemplate简介 Spring对数据库的操作在jdbc上面做了深层次的封装,使用spring的注入功能,可以把DataSource注册到JdbcTemplate之中. JdbcTempla ...

  3. 【Spring第七篇】Java配置类:JavaConfig

    Java配置类:JavaConfig 在spring配置中 applicationContext.xml <?xml version="1.0" encoding=" ...

  4. 基于Spring可扩展Schema提供自定义配置支持(spring配置文件中 配置标签支持)

    2019独角兽企业重金招聘Python工程师标准>>> spring使用了这么长时间, 你真的了解spring bean加载的机制吗? 这个是我们项目中最常见的配置文件中的内容配置, ...

  5. 基于Spring可扩展Schema提供自定义配置支持

    2019独角兽企业重金招聘Python工程师标准>>> 转载 原文地址 http://www.cnblogs.com/jifeng/archive/2011/09/14/217659 ...

  6. 零配置 之 Spring 概述

    转载自  [第十二章]零配置 之 12.1 概述 --跟我学spring3 12.1  概述 12.1.1  什么是零配置 在SSH集成一章中大家注意到项目结构和包结构是不是很有规律,类库放到WEB- ...

  7. 循序渐进学spring security 第八篇,如何配置密码加密?是否支持多种加密方案?

    文章目录 回顾 密码明文会带来什么问题? 如何加密? PasswordEncoder 加密接口 如何配置? 加密的密码在登录的时候是怎么校验的? 默认的加密是什么? DaoAuthentication ...

  8. spring boot 源码解析15-spring mvc零配置

    前言 spring boot 是基于spring 4 的基础上的一个框架,spring 4 有一个新特效–>基于java config 实现零配置.而在企业的实际工作中,spring 都是和sp ...

  9. 零配置 之 Spring注解实现Bean定义

    转载自  零配置 之 12.3 注解实现Bean定义 --跟我学spring3 12.3  注解实现Bean定义 12.3.1  概述 前边介绍的Bean定义全是基于XML方式定义配置元数据,且在[1 ...

  10. 零配置 之Spring基于Java类定义Bean配置元数据

    转载自  [第十二章]零配置 之 12.4 基于Java类定义Bean配置元数据 --跟我学spring3 12.4  基于Java类定义Bean配置元数据 12.4.1  概述 基于Java类定义B ...

最新文章

  1. 应聘苹果数据科学家,你需要知道些什么?
  2. 天价!一款芯片从设计到流片需要45亿!3纳米芯片研发成本曝光
  3. Anaconda 和 JetBrains 联手推出 'Anaconda的PyCharm'
  4. PowerDesigner(四)-业务处理模型
  5. 使用NRF2401 STM32F303ZET6 NUCLEO 开发板
  6. bzoj 3209 花神的数论题 —— 数位DP
  7. python架构师工作职责_软件架构师工作的职责
  8. 苹果4放入卡还是显示无服务器,iPhone4S不识别SIM卡 官方出解决方法
  9. 【C】狐狸找兔子问题
  10. 关键字生成参考文案查找相似款,特卖淘宝达人有福了,自媒体时代的懒人助手
  11. 利用smtp协议实现命令行发送邮件
  12. 毕业论文避免查重率过高技巧
  13. 从多张图片重建3D模型(瞎七瞎八写了好多)
  14. 我的助理辞职了——给不听话的下属看看
  15. [应用模板]HTML5+Phonegap通讯录
  16. spss入门——简单的数据预处理到时间序列分析系列(二)
  17. 如何找到msdn中文文档呢?
  18. R语言数据可视化教程(ggplot2)_其他图形
  19. 昨日美股:苹果突然放量暴跌,机构彻底失去了方向
  20. 电机星三角降压启动 博图SCL编程练习

热门文章

  1. GDK获得各种scale factor
  2. char*转换为jstring
  3. 麒麟OS新版本,老国产平台机器都装不了,情何以堪?
  4. IDEA中安装TeaVM插件
  5. OpenCV编译时提示错误“ Built target libprotobuf”
  6. 订阅机票时要注意的几个教训
  7. C的byte数组在python中的处理
  8. 解决办法:cv::randn(cv::_InputOutputArray const, cv::_InputArray const, cv::_InputArray const)’未定义的引用
  9. java虚拟机内存_java虚拟机内存区域的划分以及作用详解
  10. python定时任务启动与停止_对Python定时任务的启动和停止方法详解