# 2.3.2　声明简单的 bean

要在 JavaConfig 中声明 bean，我们需要编写一个方法，这个方法会创建所需类型的实例，然后给这个方法添加 @Bean 注解。比方说，下面的代码声明了 CompactDisc bean：

{% code title="CompactDisc.java" %}

```java
@Bean
public CompactDisc sgtPeppers() {
  return new SgtPeppers();
}
```

{% endcode %}

@Bean 注解会告诉 Spring 这个方法将会返回一个对象，该对象要注册为 Spring 应用上下文中的 bean。方法体中包含了最终产生 bean 实例的逻辑。

默认情况下，bean 的 ID 与带有 @Bean 注解的方法名是一样的。在本例中，bean 的名字将会是 sgtPeppers。如果你想为其设置成一个不同的名字的话，那么可以重命名该方法，也可以通过 name 属性指定一个不同的名字。

{% code title="CompactDisc.java" %}

```java
@Bean(name="lonelyHeartsClubBand")
public CompactDisc sgtPeppers() {
  return new SgtPeppers();
}
```

{% endcode %}

不管你采用什么方法来为 bean 命名，bean 声明都是非常简单的。方法体返回了一个新的 SgtPeppers 实例。这里是使用 Java 来进行描述的，因此我们可以发挥 Java 提供的所有功能，只要最终生成一个 CompactDisc 实例即可。

请稍微发挥一下你的想象力，我们可能希望做一点稍微疯狂的事情，比如说，在一组 CD 中随机选择一个 CompactDisc 来播放：

```java
@Bean
public CompactDisc randomBeatlesCD() {
  int choice = (int) Math.floor(Math.random() * 4);
  if (choice == 0) {
    return new SgtPeppers();
  } else if (choice == 1) {
    return new WhiteAlbum();
  } else if (choice == 2) {
    return new HardDaysNight();
  } else {
    return new Revolver();
  }
}
```

现在，你可以自己想象一下，借助 @Bean 注解方法的形式，我们该如何发挥出 Java 的全部威力来产生 bean。当你想完之后，我们要回过头来看一下在 JavaConfig 中，如何将 CompactDisc 注入到 CDPlayer 之中。
