本教學示範基於 Spring 4.0.6 的純註解配置風格,對比傳統 XML 配置,幫助理解 Spring 核心概念:IoC 容器、Bean 定義、依賴注入。
src/main/java ├── com.websystique.spring │ ├── AppMain.java # 啟動類 │ ├── configuration │ │ └── HelloWorldConfig.java # 註解配置類 │ ├── domain │ │ ├── HelloWorld.java # 服務介面 │ │ └── HelloWorldImpl.java # 服務實現
<properties>
<springframework.version>4.0.6.RELEASE</springframework.version>
</properties>
<dependencies>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-core</artifactId>
<version>${springframework.version}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context</artifactId>
<version>${springframework.version}</version>
</dependency>
</dependencies>
核心依賴:spring-core (基礎設施) + spring-context (註解支援、ApplicationContext)。
// HelloWorld.java
public interface HelloWorld {
void sayHello(String name);
}
// HelloWorldImpl.java
public class HelloWorldImpl implements HelloWorld {
public void sayHello(String name) {
System.out.println("Hello " + name);
}
}
@Configuration
public class HelloWorldConfig {
@Bean(name="helloWorldBean")
@Description("Sample HelloWorld Bean") // Spring 4 新註解
public HelloWorld helloWorld() {
return new HelloWorldImpl();
}
}
關鍵註解:
@Configuration:標識此類為配置類,內部 @Bean 方法產出的物件交由 Spring 容器管理。@Bean:方法層級註解,方法名預設為 Bean ID,可用 name 屬性指定。@Description:Spring 4 新增,提供 Bean 語義說明。<beans ...> <bean id="helloWorldBean" class="com.websystique.spring.domain.HelloWorldImpl" /> </beans>
public class AppMain {
public static void main(String[] args) {
// 註解配置啟動方式
AbstractApplicationContext context =
new AnnotationConfigApplicationContext(HelloWorldConfig.class);
HelloWorld bean = (HelloWorld) context.getBean("helloWorldBean");
bean.sayHello("Spring 4");
context.close();
}
}
AnnotationConfigApplicationContext 接受 @Configuration 類,掃描並註冊所有 @Bean 定義。
AbstractApplicationContext context =
new ClassPathXmlApplicationContext("helloworld-config.xml");
Hello Spring 4
下一篇將介紹 Component Scanning (組件掃描):使用 @Component、@Service、@Repository 等刻板印象註解,實現 Bean 自動發現與裝配,無需在配置類中逐一定義。