Spring - Bean的概念及其基础配置

原创 2015年11月18日 17:06:09
概述

bean说白了就是一个普通的java类的实例,我们在bean中写一些我们的业务逻辑,这些实例由Sping IoC容器管理着。在web工程中的spring配置文件中,我们用<bean/>标签来配置一个bean。

Bean ID

没个bean都有至少一个ID,而且区别于其他bean的ID。在配置文件中,我们可以用 id 或者 name 来指定bean的ID。id属性只能设置一个值,如果项目中需要给bean指定多个ID,可以在name属性中设置多个,表示这个bean的别名。如果 id 和 name 属性都没有指定,Spring会在初始化bean的时候自动给bean赋一个唯一的ID(格式为:类的全路径@数字串)。但如果你的bean需要引用另外一个bean,那么被引用的那个bean就必须设置id或者name属性。当然我们还可以以内置bean的方式配置而不需要给内部bean指定ID。

除了在bean配置内部指定bean的ID,还可以用<alias/>标签来指定bean的别名:
<span style="font-size:14px;"><alias name="oldName" alias="newName1"/>
<alias name="oldName" alias="newName2"/></span>

Bean实例化的方式

Spring提供多种配置方式以实现不同方式来实例化一个bean

1. 通过默认构造函数
配置方式如下:
<span style="font-size:14px;"><bean id="exampleBean" class="examples.ExampleBean"/>

<bean name="anotherExample" class="examples.ExampleBeanTwo"/></span>
 
注意class中必须是一个类名,不能是接口。因为Spring是通过Class.newInstance方法来实例化的。

2. 通过类内部静态工厂方法
配置方式如下:
<span style="font-size:14px;"><bean id="clientService"
      class="examples.ClientService"
      factory-method="createInstance"/>
</span>
<span style="font-size:14px;">public class ClientService {
  private static ClientService clientService = new ClientService();
  private ClientService() {}

  public static ClientService createInstance() {
    return clientService;
  } 
}</span>
这种方式在Spring是通过调用bean中factory-method中指定的静态方法来实例化这个bean。

3. 通过实例工厂类方法
配置方式如下:
<span style="font-size:14px;"><bean id="serviceLocator" class="examples.DefaultServiceLocator">
  <!-- inject any dependencies required by this locator bean --></bean>


<bean id="clientService"
      factory-bean="serviceLocator"
      factory-method="createClientServiceInstance"/>

<bean id="accountService"
      factory-bean="serviceLocator"
      factory-method="createAccountServiceInstance"/></span>
 
<span style="font-size:14px;">public class DefaultServiceLocator {
  private static ClientService clientService = new ClientServiceImpl();
  private static AccountService accountService = new AccountServiceImpl();

  private DefaultServiceLocator() {}

  public ClientService createClientServiceInstance() {
    return clientService;
  }

  public AccountService createAccountServiceInstance() {
    return accountService;
  }
}
</span>


这种方式Spring先加载实例工厂类DefaultServiceLocator,然后后面需要从这个类获取指定类实例的,只需要通过factory-bean和factory-method配置指定工厂类和调用方法即可。


版权声明:本文为博主原创文章,转载请注明出处

Spring中三个重要概念 IOC AOP Bean

首先讲解一下Spring框架,以及为什么要使用Spring 框架?Spring 是一个很好的容器框架, 是轻量级的IoC和AOP的容器框架,主要是针对javaBean的生命周期进行管理的轻量级容器,一...
  • woshiluoye9
  • woshiluoye9
  • 2017年05月26日 15:49
  • 608

Spring之AOP基本概念及配置AOP

为什么使用AOP传统方法 AOP前前奏 首先考虑一个问题,假设我们要设计一个计算器,有如下两个需求:在程序运行期间追踪正在放生的活动 希望计算器只能处理正数的运算 通常我们会用如下代码进行实现: 定义...
  • Megustas_JJC
  • Megustas_JJC
  • 2017年01月19日 17:04
  • 1204

Spring框架介绍和IoC容器中Bean配置(Spring框架)

Spring框架知识点整理 Spring概述      ①Spring为简化企业级开发而生,使用Spring,JavaBean就可以实现很多以前要靠EJB才能实现的功能。同样的功能,在EJB中要通...
  • wangligong
  • wangligong
  • 2016年11月10日 23:01
  • 2242

spring—Bean配置

Spring是一个开源的框架,其目标是简化java的开发。为了降低Java开发的复杂性,Spring有如下的特性: >> 基于POJO的轻量级和最小侵入性编程 >> 通过依赖注入和面向接口编程实现...
  • u013468915
  • u013468915
  • 2016年08月17日 22:09
  • 5705

Spring Bean配置方式之二:XML配置

一、bean的配置 在Spring中有三种方式来配置Bean之间的关系:XML配置文件、注解方式、Java类配置。下面讲解xml方式的配置。 1.bean的基本配置 举例 说明 ...
  • dingqinghu
  • dingqinghu
  • 2013年05月22日 23:27
  • 2124

Spring学习笔记(7)-----------Bean的基本配置

先从IOC说起,这个概念其实是从我们平常new一个对象的对立面来说的,我们平常使用对象的时候,一般都是直接使用关键字类new一个对象,那这样有什么坏处呢?其实很显然的,使用new那么就表示当前模块已经...
  • u011225629
  • u011225629
  • 2015年05月03日 16:46
  • 1510

Spring知识一(bean配置)

spring框架bean配置详解
  • sinat_28978689
  • sinat_28978689
  • 2017年03月13日 15:10
  • 338

Sping中的配置Bean详解

一、spring实例化对象的方法 在Spring中,所有管理的对象都是JavaBean对象,而BeanFactory和ApplicationContext就是spring框架的两个IOC容器,现在一...
  • xiaokang123456kao
  • xiaokang123456kao
  • 2017年03月14日 21:42
  • 2088

Spring学习之配置Bean几种不同的方式

一、无参构造器配置二、有参构造器
  • JianduoZhao
  • JianduoZhao
  • 2016年11月23日 14:15
  • 751

spring框架入门--三种方式配置Bean

Spring框架入门--配置Bean,xml方式,工厂方法配置,注解配置
  • love___code
  • love___code
  • 2016年11月15日 02:08
  • 864
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Spring - Bean的概念及其基础配置
举报原因:
原因补充:

(最多只允许输入30个字)