Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Spring-Bean #4

Open
mkdir1 opened this issue Dec 16, 2015 · 0 comments
Open

Spring-Bean #4

mkdir1 opened this issue Dec 16, 2015 · 0 comments

Comments

@mkdir1
Copy link
Owner

mkdir1 commented Dec 16, 2015

bean之间的关系,即协作 (或者称依赖)。

Bean的命名

每个bean都有一个或多个id(或称之为标识符或名称,在术语上可以理解成一回事),这些id在当前IoC容器中必须唯一。
当然也可以为每个bean定义一个name,但是并不是必须的,如果没有指定,那么容器将为其生成一个惟一的name。对于不指定name属性的原因我们会在后面介绍(比如内部bean就不需要)。

Bean命名的约定

bean的命名采用标准的Java命名约定,即小写字母开头,首字母大写间隔的命名方式。如accountManager、 accountService等等。
对bean采用统一的命名约定将会使配置更加简单易懂。而且在使用Spring AOP,这种简单的命名方式将会令你受益匪浅。

Bean的别名

一个Bean要提供多个名称,可以通过alias属性来加以指定 ,示例如下:
<alias name="fromName" alias="toName"/>

容器如何实例化Bean

当采用XML描述配置元数据时,将通过元素的class属性来指定实例化对象的类型。class属性主要有两种用途:在大多数情况下,容器将直接通过 反射调 用指定类的构造器来创建bean(这有点等类似于在Java代码中使用new操作符);在极少数情况下,容器将调用类的静态工厂方法来创建bean实例,class属性将用来指定实际具有静态工厂方法的类(至于调用静态工厂方法创建的对象类型是当前class还是其他的class则无关紧要)。
用构造器来实例化Bean ,前面的实例就是

使用静态工厂方法实例化

采用静态工厂方法创建bean时,除了需要指定class属性外,还需要通过factory-method属性来指定创建bean实例的工厂方法,示例如下:

<bean id="exampleBean"
      class="examples.ExampleBean2"
      factory-method="createInstance"/>

使用实例工厂方法实例化

使用此机制,class属性必须为空,而factory-bean属性必须指定为当前(或其祖先)容器中包含工厂方法的bean的名称,而该工厂bean的工厂方法本身必须通过factory-method属性来设定,并且这个方法不能是静态的,示例如下:
<bean id="exampleBean" factory-bean="myFactoryBean" factory-method="createInstance"/>

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant