Sping 容器负责创建应用程序中的 bean 并通过 DI 来协调这些对象之间的关系。Spring 具有非常大的灵活性,他提供了三种主要的装配机制
- 在 XMl 中显示配置
- 在 java 中显示配置
- 隐式的 bean 发现机制和自动装配
自动装配 bean
Spring 从两个角度来实现自动装配
- 组件扫描
- 自动装配
创建可被发现的 bean
以 CD 播放机为例子
-
首先定义一个接口,并不需要关注他的内容,它定义了 CD 播放机的一系列操作。
public interface CompactDisc { public void play(); }
-
实现这个接口
@Component public class SgtPeppers implements CompactDisc { private String title = "Sgt. Pepper's Lonely Hearts Club Band"; private String artist = "The Beatles"; public void play() { System.out.println("Playing " + title + " by " + artist); } }
这个类的重点是 @Component 注解,这个注解标志该类会作为组件类,并且需要 Spring 为他创建 Bean。
-
创建配置类,开启默认扫描
@Configuration @ComponentScan public class CDPlayerConfig { }
@ComponentScan 注解启用了组件扫描,它会默认扫描与配置类相同的包。
测试
-
新建一个测试类。
@RunWith(SpringJUnit4ClassRunner.class) @ContextConfiguration(classes=CDPlayerConfig.class) public class CDPlayerTest { @Autowired private CompactDisc cd; @Test public void cdShouldNotBeNull() { Assert.notNull(cd); } }
SpringJUnit4ClassRunner 是为了在测试展开的时候加载 Spring 上下文。
@ContextConfiguration 注解告知在 CDPlayerConfig 类中加载配置。因为该类中包含 @ComponentScan 注解,最终会生成一个 CompactDisc 的 Bean。
@Autowired 将 Bean 注入到代码中,然后断言它非 Null。
完整例子
Java 装配 Bean
要使用 Java 装配 Bean,需要编写一个方法,这个方法会创建所需类型的实例,
欢迎来到这里!
我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。
注册 关于