Spirng配置的可选方案

  • 在XML中进行显示配置
  • 在Java中进行显示配置
  • 隐式的bean发现机制和自动装配

bean装配

1. 在希望被扫描到的类上加注解 @Component

2. 基于不同的配置方案选择不同的方式配置

方式 方法
基于Java的配置 1. 定义一个Java类,使用注解@Configuration将其定义为一个配置类
2.再加入注解@ComponentScan,如果没有其他配置的话,默认会扫描与配置类相同的包
基于XML的隐式配置 在XML中加入 <context:compoent-scan base-package="" /> 其中base-package指定扫描的范围
基于XML的显示配置 在XML中加入 <bean id="" class=""/> 即可

3.为组件扫描的bean命名

如果bean不是通过XML显示的给定ID,Spring会根据类名为其指定一个ID,规则是将雷鸣的第一个字母变为小写

4.默认情况下,Spring中的bean都是单例的

当不同的方法调用相同的类实例时, Spring会拦截对其的调用并确保返回的是Spring创建的实例

5.使用XML配置bean

使用XML配置bean的时候,如果没有显示的给定一个ID,bean将会根据全限定类名进行命名,并且后面会跟上#和数字.例如 <bean class="example.test" /> ,它的ID为 example.test#0,如果有另一个class相同的bean,会被命名为example.test#1

6.使用XML注入初始化bean

  • 构造器注入

    假设我们已经初始化了个bean, id为test, 使用以下方式注入到你希望初始化的地方
<bean id="..." class="...">
<constructor-arg ref="test" />
</bean>

如果在 constructor-arg 中使用value="",则表示注入常量

  • 属性注入

    假设我们已经初始化了个bean, id为test, 使用以下方式注入到你希望初始化的地方
<bean id="..." class="...">
<property name="..." ref="test" />
</bean>

name表明你希望被注入的属性名称

如果在 property 中使用value="",则表示注入常量


注解使用

@Compont

  • @Compont("...") 为bean定义一个ID

@CompontScan

  • @CompontScan("...") 或 @CompontScan(basePackages = "...") 设置基础包,允许设置多个基础包,设置为数组即可(@CompontScan(basePackages = "{...}"))
  • @CompontScan(basePackageClasses = {*.class, *.class}) 使用类来设置基础包,这些类所在的包将会作为组件扫描的基础包

@Autowired

实现自动装配,可以用在属性,构造器,任何方法上,但是我们常用的方式是放在属性上

如果有些bean不是必须的,可以讲required属性设置为false

@Import

@Import(*.class) 将多个配置项组装在一起,请注意,这里也可以使用数组

@ImportResource

引入XML配置文件


Spring的 c- 命名空间和 p- 命名空间

不常用,详情请翻到书本 P53和 P57

Spring in Action --- 第二章 装配Bean的更多相关文章

  1. 《Spring in action》之装配Bean

    创建应用对象之间协作关系的行为通常称为装配,这也是依赖注入的本质. Spring装配Bean的三种主要机制: 1.在XML中进行显示配置 2.在java中进行显示配置 3.隐式的bean发现机制和自动 ...

  2. spring在IoC容器中装配Bean详解

    1.Spring配置概述 1.1.概述 Spring容器从xml配置.java注解.spring注解中读取bean配置信息,形成bean定义注册表: 根据bean定义注册表实例化bean: 将bean ...

  3. (转)java之Spring(IOC)注解装配Bean详解

    java之Spring(IOC)注解装配Bean详解   在这里我们要详细说明一下利用Annotation-注解来装配Bean. 因为如果你学会了注解,你就再也不愿意去手动配置xml文件了,下面就看看 ...

  4. Spring入门2. IoC中装配Bean

    Spring入门2. IoC中装配Bean 20131125 前言: 上一节学习了Spring在JavaProject中的配置,通过配置文件利用BeanFactory和ApplicationConte ...

  5. Spring常用注解,自动扫描装配Bean

    1 引入context命名空间(在Spring的配置文件中),配置文件如下: xmlns:context="http://www.springframework.org/schema/con ...

  6. Spring实战——通过Java代码装配bean

    上篇说的是无需半行xml配置完成bean的自动化注入.这篇仍然不要任何xml配置,通过Java代码也能达到同样的效果. 这么说,是要把上篇的料拿出来再煮一遍? 当然不是,上篇我们几乎都在用注解的方式如 ...

  7. 第02章-装配Bean

    1. Spring配置的可选方案 在XML中进行显式配置: 在Java中进行显式配置: 隐式的bean发现机制和自动装配. 2. 自动化装配bean Spring从两个角度来实现自动化装配: 组件扫描 ...

  8. Spring学习指南-第二章-Spring框架基础(完)

    第二章 Spring框架基础 面向接口编程的设计方法 ​ 在上一章中,我们看到了一个依赖于其他类的POJO类包含了对其依赖项的具体类的引用.例如,FixedDepositController 类包含 ...

  9. Spring学习系列(二) 自动化装配Bean

    一.Spring装配-自动化装配 @Component和@ComponentScan 通过spring注解(@Component)来表明该类会作为组件类,并告知Spring要为这类创建bean,不过组 ...

随机推荐

  1. JAVA学习:异常

    一.异常官方定义: 1.就是不正常.程序在运行时出现的不正常情况.其实就是程序中出现的问题.这个问题按照面向对象思想进行描述,并封装成了对象.因为问题的产生有产生的原因.有问题的名称.有问题的描述等多 ...

  2. Asp.Net Web API 导航3

    Asp.Net Web API 导航   Asp.Net Web API第一课:入门http://www.cnblogs.com/aehyok/p/3432158.html Asp.Net Web A ...

  3. rcp(插件开发) The activator X for bundle Y is invalid 解决办法

    最近在做插件产品的重构,重构的过程当中难免有一些细节的地方 忘记修改 ,导致出现莫名的问题. 比如这个问题: The activator X for bundle Y is invalid 这个问题从 ...

  4. .NET 利用反射将对象数据添加到数据库

    .NET 利用反射将对象数据添加到数据库   一些小型的项目,在不使用其他的框架(LINQ,NHibernate,EF等等框架)的前提下,这时候一些反复的增删改查就会让我们感到极其的繁琐,厌烦,为了避 ...

  5. 用django搭建一个简易blog系统(翻译)(三)

    06. Connecting the Django admin to the blog app Django 本身就带有一个应用叫作Admin,而且它是一个很好的工具 在这一部分,我们将要激活admi ...

  6. ORA-12520错误解决方法

    ORA-12520监听程序无法为请求的服务器类型找到可用的处理程序 以下不知道是不是解决方法的方法,因为我只重启下oracle服务就好了,并没进行任何修改 引用别人的文章: 1)数据库是专用服务器,但 ...

  7. 数据访问模式之Repository模式

    数据访问模式之Repository模式   数据访问层无非就是对数据进行增删改查,其中增.删.改等我们可以抽象出来写一个公共的接口或抽象类来定义这些方法,并采用一个基类实现这些方法,这样该基类派生的子 ...

  8. WCF客户端与服务端通信简单入门教程

    服务端 1.新建空白解决方案,然后再空白解决方案中新建:WCF服务应用程序.建完后如图: 2.删掉自动生成的IService1.cs和Service.svc并添加WCF服务文件StudentServi ...

  9. Socket的粘包处理

    Socket的粘包处理 当socket接收到数据后,会根据buffer的大小一点一点的接收数据,比如: 对方发来了1M的数据量过来,但是,本地的buffer只有1024字节,那就代表socket需要重 ...

  10. spring实现数据库读写分离

    现在大型的电子商务系统,在数据库层面大都采用读写分离技术,就是一个Master数据库,多个Slave数据库.Master库负责数据更新和实时数据查询,Slave库当然负责非实时数据查询.因为在实际的应 ...