Spring框架的XML与注解注入详解
需积分: 0 134 浏览量
更新于2024-09-14
收藏 607KB DOC 举报
"本文主要介绍了Spring框架的两种注入方式——纯XML配置和纯注解配置,通过具体的代码示例解析了如何在Spring中管理Bean并实现依赖注入。"
在Spring框架中,依赖注入(Dependency Injection,DI)是一种重要的设计模式,它使得组件之间的耦合度降低,提高了代码的可测试性和可维护性。Spring提供了两种主要的注入方式:纯XML配置和基于注解的配置。
首先,我们来看纯XML配置的方式:
1. 在XML配置文件中,我们需要定义各个层的Bean,如DAO、Service和Controller。例如,`LoginDao`、`LoginDaoImpl`、`LoginService`、`LoginServiceImpl`和`LoginController`。在XML中,每个Bean都有一个唯一的ID,Spring会根据这个ID来查找并实例化对应的类。
Dao层配置:
```xml
<bean id="loginDao" class="com.example.LoginDaoImpl" />
```
Service层配置:
```xml
<bean id="loginService" class="com.example.LoginServiceImpl">
<property name="loginDao" ref="loginDao" />
</bean>
```
Web层配置:
```xml
<bean id="loginController" class="com.example.LoginController">
<property name="loginService" ref="loginService" />
</bean>
```
测试时,我们通过`ApplicationContext`获取Bean:
```java
LoginController controller = (LoginController)applicationContext.getBean("loginController");
```
接下来是纯注解配置的方式:
1. 使用注解,我们可以直接在类或方法上声明Bean和其依赖。例如,在DAO和Service的实现类上使用`@Component`注解,Spring会自动扫描并注册这些类。
Dao层实现类:
```java
@Component("loginDao")
public class LoginDaoImpl implements LoginDao {
// ...
}
```
Service层实现类:
```java
@Component("loginService")
public class LoginServiceImpl implements LoginService {
@Autowired
private LoginDao loginDao;
// ...
}
```
Controller层:
```java
@Component("loginController")
public class LoginController {
@Autowired
private LoginService loginService;
// ...
}
```
测试类:
```java
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(locations = {"classpath:spring-context.xml"})
public class Test {
@Autowired
private LoginController loginController;
// ...
}
```
这里,`@Autowired`注解用于自动装配相同类型的依赖,而`@Resource`注解可以根据指定的bean ID进行装配。
在实际项目中,我们通常不会在测试类中直接通过`ApplicationContext`获取Bean,而是通过监听器在Web应用启动时初始化Spring容器。在`web.xml`中配置`ContextLoaderListener`:
```xml
<listener>
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath:spring-context.xml</param-value>
</context-param>
```
这样,Spring容器会在Web应用启动时加载配置,创建并管理所有的Bean,使得我们在应用程序中可以直接使用它们。
2020-11-23 上传
2017-05-02 上传
805 浏览量
1318 浏览量
点击了解资源详情
点击了解资源详情
点击了解资源详情
点击了解资源详情
点击了解资源详情
shishi_ding
- 粉丝: 4
- 资源: 1
最新资源
- 高清艺术文字图标资源,PNG和ICO格式免费下载
- mui框架HTML5应用界面组件使用示例教程
- Vue.js开发利器:chrome-vue-devtools插件解析
- 掌握ElectronBrowserJS:打造跨平台电子应用
- 前端导师教程:构建与部署社交证明页面
- Java多线程与线程安全在断点续传中的实现
- 免Root一键卸载安卓预装应用教程
- 易语言实现高级表格滚动条完美控制技巧
- 超声波测距尺的源码实现
- 数据可视化与交互:构建易用的数据界面
- 实现Discourse外聘回复自动标记的简易插件
- 链表的头插法与尾插法实现及长度计算
- Playwright与Typescript及Mocha集成:自动化UI测试实践指南
- 128x128像素线性工具图标下载集合
- 易语言安装包程序增强版:智能导入与重复库过滤
- 利用AJAX与Spotify API在Google地图中探索世界音乐排行榜