spring的自动装配基础详解编程语言
当开始看别人的代码使用注解的时候,以为照着别人的代码写,也写一个注释就能实现这样的功能,但是,现在开始考虑自动装配时怎样实现的.
首先,如果如果知道如何手动在xml配置中 装配bean ,那么在理解自动装配就比较简单了,如果想直接了解自动装配,那还得从手动装配开始.
XML配置里的bean的自动装配
*Spring IOC 容器可以自动装配Bean,需要做的仅仅是在Bean的autowire属性中指定自动装配的模式
*byType (根据类型自动装配):若IOC容器中有多个与目标Bean类型一致的Bean,Spring将无法判断使用那个Bean,所以不能执行自动装配,且抛出异常
*byName(根据名称自动装配):必须将目标Bean的名称和属性名的设置完全相同.(byName根据bean的名字和当前Bean的setter风格的属性名进行自动装配,若有匹配的的自动装配,若么有匹配的则不装配)
*constructor(通过构造器自动装配):当Bean中存在多个构造器时,此种自动装配方式将会很复杂.不推荐
*一般在实际开发中很少使用自动装配功能,因为和自动装配功能所带来的好处比起来,明确清晰的配置文档更有说服力
使用注解的方式
组件扫描,Spring能够从classpath下自动扫描,侦测和实例化具有特定注解的组件
特定组件包括
@Compontent,基本标示,标示了一个受Spring管理的组件
@Repository,标示持久层组件
@Service,标示服务层(业务层)组件
@controller,标示表现层组件
对于扫描到的组件,Spring有默认的命名策略,使用非限定类名,第一个字母小写,也可以在主键中通过Value属性值组件的名称
当在组件类上使用了特定的注解之后,还需要在Spring的配置文件中声明 context:component-scan
-base-package属性指定一个需要扫描的基类包,Spring容器将会扫描这个基类包里及其子类包中的所有类.
-当需要扫描多个包时,可以使用逗号分隔,
-如果仅希望扫描特定的类而非基包下的所有类,可以使用resource-pattern属性过滤特定的类,示例:
context:component-scan base-package="com.study.spring.beans" resource-pattern="autowire/*.class"/ - context:include-filter 子节点表示药包含的目标类 - context:exclude-filter 子节点表示药排除在外的目标类 - context:component-scan 下可以拥有若干个 context:include-filter 和 context:exclude-filter 子节点
组件装配
context:component-scan 元素还会自动注册AutowiredAnnotationBeanPostProcessor实例,[email protected]@Resource,@inject注解属性
@Autowired注解自动装配具有兼容类型的单个Bean,可以用在构造器,普通字段(即使是非public),[email protected]
原创文章,作者:ItWorker,如若转载,请注明出处:https://blog.ytso.com/15397.html
cjavaxml相关文章
- Spring学习笔记(四)——Spring中的AOP
- 每天20分钟之spring-cloud-gateway基础三自定义断言工厂
- 每天20分钟之spring-cloud-gateway基础四自定义过滤工厂
- redis 配置密码验证_spring redis配置
- Spring Cloud:第三章:Ribbon客服端负载均衡
- 一篇文章带你掌握主流基础框架——Spring
- Spring(一)-初识 + DI+scope
- Spring Boot基础配置之属性配置
- 理解分布式Session处理来看看spring怎么做的
- Spring循环依赖-spring源码详解(四)
- Spring监听器-spring源码详解(五)
- SpringBoot基础学习文章-Java环境变量配置Maven介绍Spring Boot介绍
- Spring基础(三):IOC底层原理
- Spring基础(十五):Spring事务环境搭建
- 零基础上手丨在Spring Boot中整合热门Java技术
- Spring Boot的ORM框架使用(三)
- 如何使用 Arthas 定位 Spring Boot 接口超时
- spring aop详解编程语言
- spring的AOP(四)—-Spring AOP 编程(Advisor)详解编程语言
- Spring里的aop实现方式和源码分析详解编程语言
- Spring Boot2.0之web开发详解编程语言
- Spring Boot 单元测试详解+实战教程编程语言
- Spring Boot(十四):spring boot整合shiro-登录认证和权限管理详解编程语言
- Spring Boot(十二):spring boot如何测试打包部署详解编程语言
- Spring Boot(五):spring data jpa的使用详解编程语言
- 基于properties文件的Spring Boot多环境切换详解编程语言
- Spring——Spring IOC容器初始化过程详解编程语言
- Spring通知类型及使用ProxyFactoryBean创建AOP代理
- Spring getConnectionProperties方法:获取数据库连接属性
- Spring框架致力于搭建基于MSSQL的稳健开发体系(spring mssql)