理解 Spring XML 配置和注解的深层原理对于掌握 Spring Framework 至关重要。下面我将为你提供详细的代码介绍,涵盖了 Spring XML 配置和注解的使用。
1. Spring XML 配置
1.1 创建一个简单的 Java 类
package com.example.demo;
public class MyService {
public void doSomething() {
System.out.println("Doing something...");
}
}
1.2 编写 Spring XML 配置文件
创建 applicationContext.xml
文件,配置 bean 和其依赖关系。
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans.xsd">
<!-- 声明 MyService bean -->
<bean id="myService" class="com.example.demo.MyService"/>
</beans>
1.3 加载 Spring 上下文并获取 Bean
package com.example.demo;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
public class Main {
public static void main(String[] args) {
// 加载 Spring 上下文
ApplicationContext context = new ClassPathXmlApplicationContext("applicationContext.xml");
// 获取 MyService bean
MyService myService = (MyService) context.getBean("myService");
// 使用 MyService
myService.doSomething();
}
}
2. Spring 注解配置
2.1 创建一个带注解的类
package com.example.demo;
import org.springframework.stereotype.Component;
@Component
public class MyComponent {
public void doSomething() {
System.out.println("Doing something in MyComponent...");
}
}
2.2 配置 Spring 组件扫描
在 XML 配置文件中启用组件扫描。
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:context="http://www.springframework.org/schema/context"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context.xsd">
<!-- 启用组件扫描 -->
<context:component-scan base-package="com.example.demo"/>
</beans>
2.3 加载 Spring 上下文并获取 Bean
package com.example.demo;
import org.springframework.context.ApplicationContext;
import org.springframework.context.annotation.AnnotationConfigApplicationContext;
public class Main {
public static void main(String[] args) {
// 加载 Spring 上下文
ApplicationContext context = new AnnotationConfigApplicationContext(AppConfig.class);
// 获取 MyComponent bean
MyComponent myComponent = context.getBean(MyComponent.class);
// 使用 MyComponent
myComponent.doSomething();
}
}
2.4 创建 AppConfig 类
package com.example.demo;
import org.springframework.context.annotation.ComponentScan;
import org.springframework.context.annotation.Configuration;
@Configuration
@ComponentScan("com.example.demo")
public class AppConfig {
// 配置类
}
通过上述代码,你可以深入理解 Spring XML 配置和注解的使用方式。 XML 配置文件提供了一种显式的配置方式,而注解则提供了更加便捷和类型安全的配置方式。