前言

Spring框架对Bean进行装配提供了很灵活的方式,下面归纳一下主要的方式:

在XML中进行显示配置

在Java中进行显示配置

隐式的bean发现机制和自动装配

而自动装配实现就需要注解扫描,这时发现了两种开启注解扫描的方式,即和

下面归纳一下这两种方式的异同点:

:注解扫描是针对已经在Spring容器里注册过的Bean

:不仅具备的所有功能,还可以在指定的package下面扫描对应的bean

Demo:

Demo:XML注册Bean方式

下面给出两个类,类A和类B

package com.test;

pubic class B{

public B(){

System.out.println("B类");

}

}

package com.test;

public class A {

private B bClass;

public void setBClass(B bClass){

this.bClass = bClass;

System.out.println("通过set的方式注入B类");

}

public A(){

System.out.println("A类");

}

}

如何我们这时可以通过传统的xml配置在Application.xml里进行bean注册

启动加载Application.xml

输出:

类B

类A

通过set的方式注入B类

Demo:annotation配置注解开启方式

package com.test;

pubic class B{

public B(){

System.out.println("B类");

}

}

package com.test;

public class A {

private B bClass;

@Autowired

public void setBClass(B bClass){

this.bClass = bClass;

System.out.println("通过set的方式注入B类");

}

public A(){

System.out.println("A类");

}

}

然后我们需要在Application.xml里注册Bean,假如我们先这样配置,仅仅注册Bean,不开启扫描

或者仅仅开启扫描,不注册Bean

这时加载Application.xml配置

输出:

类B

类A

我们会发现下面的@Autowired的方法是不能被加载的

@Autowired

public void setBClass(B bClass){

this.bClass = bClass;

System.out.println("通过set的方式注入B类");

}

解决方法:

修改Application.xml配置文件

重新加载配置文件,输出正常了

输出:

类B

类A

通过set的方式注入B类

归纳::注解扫描是针对已经在Spring容器里注册过的Bean

Demo:component配置注解开启方式

package com.test;

pubic class B{

public B(){

System.out.println("B类");

}

}

package com.test;

@Component

public class A {

private B bClass;

@Autowired

public void setBClass(B bClass){

this.bClass = bClass;

System.out.println("通过set的方式注入B类");

}

public A(){

System.out.println("A类");

}

}

然后我们配置一下application.xml,开启annotaion-config扫描

加载配置文件:

输出:

类B

类A

原因::注解扫描是针对已经在Spring容器里注册过的Bean,Bean并没有注册过,所以即使开启了@Autowired、@Component注解 和配置开启了annotaion-config扫描还是加载不到

修改配置文件:

重新加载配置文件:

输出:

类B

类A

通过set的方式注入B类

归纳:

:注解扫描是针对已经在Spring容器里注册过的Bean

:不仅具备的所有功能,还可以在指定的package下面扫描对应的bean

和 同时存在的时候,前者会被忽略。

即使注册Bean,同时开启扫描,@autowire,@resource等注入注解只会被注入一次,也即只加载一次

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

Java扫描配置文件的注解_详解Spring框架注解扫描开启之配置细节相关推荐

  1. cacheable更新_详解Spring缓存注解@Cacheable,@CachePut , @CacheEvict使用

    注释介绍 @Cacheable @Cacheable 的作用 主要针对方法配置,能够根据方法的请求参数对其结果进行缓存 @Cacheable 作用和配置方法 参数 解释 example value 缓 ...

  2. 多图详解Spring框架的设计理念与设计模式

    Spring作为现在最优秀的框架之一,已被广泛的使用,51CTO也曾经针对Spring框架中的JDBC应用做过报道.本文将从另外一个视角试图剖析出Spring框架的作者设计Spring框架的骨骼架构的 ...

  3. 详解Spring框架的异步请求

    文章目录 详解Spring框架的异步请求 1.导入响应的jar包(gson) 2.前端请求 3.后端逻辑处理并返回结果 详解Spring框架的异步请求 在开发过程中有异步请求和同步请求之分. 同步请求 ...

  4. java 配置文件的路径_详解java配置文件的路径问题

    详解java配置文件的路径问题 详解java配置文件的路径问题 各种语言都有自己所支持的配置文件,配置文件中有很多变量是经常改变的.不将程序中的各种变量写死,这样能更方便地脱离程序本身去修改相关变量设 ...

  5. java中batch基础_详解Spring batch 入门学习教程(附源码)

    详解Spring batch 入门学习教程(附源码) 发布时间:2020-09-08 00:28:40 来源:脚本之家 阅读:99 作者:achuo Spring batch 是一个开源的批处理框架. ...

  6. java切面不需要接口了吗_详解Spring AOP 实现“切面式”valid校验

    why: 为什么要用aop实现校验? answer: spring mvc 默认自带的校验机制 @Valid + BindingResult, 但这种默认实现都得在Controller方法的中去接收B ...

  7. java按钮权限控制_详解Spring Security 中的四种权限控制方式

    Spring Security 中对于权限控制默认已经提供了很多了,但是,一个优秀的框架必须具备良好的扩展性,恰好,Spring Security 的扩展性就非常棒,我们既可以使用 Spring Se ...

  8. java批量执行查询sql语句_详解MyBatis直接执行SQL查询及数据批量插入

    一.直接执行SQL查询: 1.mappers文件节选 ${paramSQL} 2.DAO类节选 public interface SomeDAO{ List getInstanceModel(@Par ...

  9. java sort 第二个参数_详解java Collections.sort的两种用法

    Collections是一个工具类,sort是其中的静态方法,是用来对List类型进行排序的,它有两种参数形式: public static > void sort(List list) { l ...

最新文章

  1. pymssql 安装后只有 .disk-info_变频空调安装注意事项
  2. 米兰大学发布论文与猫咪叫声数据集,分类喵喵叫
  3. 形态学图像处理或能帮助实例分割
  4. 如何给Pycharm加上头行 # *_*coding:utf-8 *_*?
  5. 辰星计划2021 | 旷视春季实习生招募—空中宣讲会第二弹来了!
  6. .NET6之MiniAPI(九):基于角色的身份验证和授权
  7. flask jinja2 如何遍历新闻列表
  8. 用markdown + html写一封简历
  9. 30. 连续子数组最大和
  10. 回来不是为了留下,而是为了重新出发 -- 生死阅读影评
  11. 程序执行系统VC++程序出现“试图执行系统不支持的操作”
  12. crmjs区分窗口是否是高速编辑(2)
  13. 电子技术基础(三)__具有无关项逻辑函数的化简
  14. google退出中国市场是战略性错误
  15. LED跑马灯-位操作
  16. 笔记本辐射与日常电器辐射对比
  17. 关于程序员的那些段子,你能看懂几个?
  18. 【计算机网络】DNS解析详解
  19. java学生成绩管理系统类图,学生成绩管理系统的分析及设计-应用UML建模
  20. Tableau入门(Tableau10.5.0)

热门文章

  1. PRT(Precomputed Radiance Transfer)球谐光照(Spherical Harmonic Lighting)
  2. 如何安装蓝湖插件支持Photoshop CC 2017
  3. 实现计时、时钟,实时获取当前年月日时分秒,记录时间(获取当前的时间,开始计时,计时过程相当于你的电脑时钟)0000年00月00日 00:00:00
  4. 设置WebStorm用Ctrl+鼠标滚轮上、下调整编辑器代码字体大小
  5. Linux多线程与同步
  6. fiddler 抓取winform wcf包
  7. github后端开发面试题大集合(一)
  8. (转)@ContextConfiguration注解说明
  9. Apache优化:修改最大并发连接数
  10. 多条件组合查询+分页