Bean的基础装配有三种装配方法:
一:隐式Bean发现机制:
Bean的发现机制基于组件扫描和自动装配两种机制。
组件扫描:
1.在要创建Bean的类上添加注解@Component,然后它生成的Bean ID 会以类名按一定的规则命名,如:类名是FirstClass,则生成的Bean ID 是 firstClass。如果想要自定义Bean Id,使用@component(“自定义的Bean ID”)
2.在配置类中(用@Configuation注解的类为配置类)添加注解@ComponentScan,然后就会扫描配置类所在包及其子包中带有注解@Component的类,然后为它生成Bean。可显示配置要扫描的包,就是@ComponentScan(basePackages={“包名”,“包名”…..}),但是这种方法是类型不安全的,还有另一种方法,@ComponentScan(basePackageClasses={类名1.class,类名2.class……}),这样就会扫描包含类名1和类名2的包。
自动装配:
1.在要注入Bean的方法前添加注解@Autowired实现自动装配。
2.方法可以包括构造器,Set方法等等的任何方法。都可以用@Autowired注解。

二:通过java配置类装配Bean:
1.创建java配置类——用@Configuration注解的类。
2.创建装配Bean的方法,用@Bean注解该方法,例如要装配FirstClass类:

    @Configurationpublic class FirstConfig{@Beanpublic FirstClass firstClass(){return new FirstClass();}}

所创建的BeanId就是你创建该Bean的方法名。
创建需要注入的Bean:假设也是FirstClass,不过要注入SecondClass Bean

@Configuration
public class FirstConfig
{@Beanpublic FirstClass firstClass(SecondClass secondClass("这个是BeanID名")){return new FirstClass(secondClass);}
}

三:用XML文件实现Bean的装配:

<Bean id="自定义Bean Id" class="要创建Bean的类名"><Constructor-arg  ref="需要注入的Bean Id" />    //构造器注入Bean<Constructor-arg value="字面量" /> //构造器注入字面量,就是非String之类的<Constructor-arg><list/set等等><value>字面量的值</value><value>字面量的值</value>     //构造器注入字面量集合</list/set等等></Constructor-arg><Constructor-arg><list/set等等><ref:bean="Bean Id" /><ref:bean="Bean Id" />    //构造器注入Bean集合</list/set等等></Constructor-arg><property name="set方法上的参数名" ref="要注入的Bean Id" /> //在set方法注入bean。<property name="set方法上的参数名" value="要注入的字面量" //在set方法注入字面量。<property><list/set等等><value>集合中的字面量</value>  //set方法中注入字面量集合</list/set等等></property><property><list/set等等><ref bean="集合中的Bean" />   //set方法中注入Bean集合<list/set等等></property>
</Bean>

注意:Spring中Bean默认是单例的,即多次注入,实际是注入同一个Bean实例。

Spring学习之旅(一):Bean的基础装配相关推荐

  1. Python学习之旅(核心编程基础篇003运算符)

    Python学习之旅 Python核心编程基础篇2020.12.18 一.算数运算符 二.比较运算符 三.赋值运算符 四.逻辑运算符 五.成员运算符 六.身份运算符 七.三目运算符 八.运算符优先级 ...

  2. Spring学习(六)bean装配详解之 【通过注解装配 Bean】【基础配置方式】

    本文借鉴:Spring学习(特此感谢!) 通过注解装配 Bean 1.前言 优势 1.可以减少 XML 的配置,当配置项多的时候,XML配置过多会导致项目臃肿难以维护 2.功能更加强大,既能实现 XM ...

  3. Spring学习之旅(二):Bean的高级装配之解决装配歧义性

    一:装配的歧义性: 发生原因:装配的接口有多个实现,例如:FirstClass,SecondClass,ThirdClass皆实现了接口SupperClass,当装配SupperCLass时就会出现歧 ...

  4. Spring学习(七)bean装配详解之 【通过注解装配 Bean】【自动装配的歧义解决】...

    本文借鉴:Spring学习,@Bean 的用法(特此感谢!) 自动装配 1.歧义性 我们知道用@Autowired可以对bean进行注入(按照type注入),但如果有两个相同类型的bean在IOC容器 ...

  5. Spring学习(五)bean装配详解之 【XML方式配置】

    本文借鉴:Spring学习(特此感谢!) 一.配置Bean的方式及选择 配置方式 在 XML 文件中显式配置 在 Java 的接口和类中实现配置 隐式 Bean 的发现机制和自动装配原则 方式选择的原 ...

  6. Spring学习笔记15--注解Bean

    传统的Spring做法是使用.xml文件来对bean进行注入或者是配置aop.事物,这么做有两个缺点: 1.如果所有的内容都配置在.xml文件中,那么.xml文件将会十分庞大:如果按需求分开.xml文 ...

  7. Spring学习(六)-Bean作用域与基于注解的配置

    Bean作用域 在配置文件中定义Bean时,用户不但可以配置Bean的属性值以及相互之间的依赖关系,还可以定义Bean的作用域.作用域将对Bean的生命周期和创建方式产生影响.Spring一般采用sc ...

  8. LINQ学习之旅——最后一站LTX之基础和编程接口所包含类的简介

    对LINQ TO SQL的内容讲解将告一段落,下面我们进入LINQ学习之旅的最后一站"LTX",即LINQ TO XML.当前XML技术在应用开发中显得越来越重要,已成为各类数据交 ...

  9. Spring学习之旅(四):面向切面编程(AOP)

    Spring框架的核心是依赖注入和面向切面编程 面向切面(AOP)的术语是理解AOP的重要内容: 一.通知(Advice):通知定义了切面是什么,定义了切面的功能代码以及什么时候使用. Spring切 ...

最新文章

  1. 聊聊storm的stream的分流与合并
  2. java进程与线程_Java多线程笔记(零):进程、线程与通用概念
  3. 字符串比较--小问题大智慧
  4. swift_002(Swift的String的基本使用)
  5. python多进程参考代码
  6. Google Guice范例解说之使用入门
  7. 超简单的java爬虫
  8. 惊呆了!竟然还有这样的操作!
  9. Fibonacci思想的灵活应用(洛谷P1011题题解,Java语言描述)
  10. k-means算法的matlab代码实现_MATLAB遗传算法及其实现
  11. linux关闭计算机的命令是,关闭Linux计算机的正确命令和方法
  12. eclipse中新建JSP文件时的编码设置
  13. 购物车功能完整版12.13
  14. python中求众数_Python实现求众数的三种方法
  15. Springboot+Vue+EasyExcel实现web页面的excel读取
  16. 死链检测工具Xenu的操作及使用方法
  17. iCollections for Mac(桌面图标及文件整理工具)
  18. python抢淘宝的东西-Python 实现毫秒级淘宝抢购脚本的示例代码
  19. shell while循环退出
  20. 路由器的虚拟服务器干嘛用的,dmz和虚拟服务器(tp路由器虚拟服务器能干嘛)...

热门文章

  1. 安卓案例:使用MPAndroidChart绘制饼状图、柱状图和折线图
  2. VB案例:DAO使用示例1
  3. 【BZOJ4289】Tax,堆优化dijsktra的最短路问题
  4. 2017.10.12 小Q的无敌异或 失败总结
  5. 2017.3.13 反素数ant 失败总结
  6. 【英语学习】【English L06】U07 Jobs L3 Dr. Allen is a Dentist
  7. 【英语学习】【WOTD】rowel 释义/词源/示例
  8. java ini_java读取ini格式的文件
  9. python中range 函数_Python
  10. MySQL表连接(join)