如果仅仅是为了测试简单使用一下Spring的IOC容器,或者研究一下Spring的容器的源码实现,那么在搭建Spring工程的时候,不需要复杂的xml配置。Spring3.0之后提供了Java注解配置的方式来启动Spring容器。下面是最简单的启动Spring容器的方式:

1.依赖包只需要spring-context即可:

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion> <groupId>com.springexample</groupId>
<artifactId>spring-ioc</artifactId>
<version>1.0-SNAPSHOT</version> <dependencies>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context</artifactId>
<version>5.1.8.RELEASE</version>
</dependency>
</dependencies> </project>

2.一个启动测试类:

import com.spring.ioc.SpringConfig;
import com.spring.ioc.UserService;
import org.springframework.context.annotation.AnnotationConfigApplicationContext; public class Application { public static void main(String[] args) {
AnnotationConfigApplicationContext context = new AnnotationConfigApplicationContext(SpringConfig.class);
UserService userService = context.getBean(UserService.class);
System.out.println(userService.getSysUser());
}
}

3.一个配置类(@Configuration注解的类相当于一个xml文件),用于扫描和注册Bean,@ComponentScan注解用于要扫描哪个包下的Bean(即扫描@Service、@Repository等注解的Bean):

import org.springframework.context.annotation.ComponentScan;
import org.springframework.context.annotation.Configuration; @ComponentScan("com.spring")
@Configuration
public class SpringConfig { }

4.模拟一个业务类,类上加上@Service注解:

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service; @Service
public class UserService { @Autowired
private UserDao userDao; public SysUser getSysUser() {
return userDao.getSysUser();
}
}

5.模拟Dao服务,类上加上@Repository注解,提供数据访问服务:

import org.springframework.stereotype.Repository;

@Repository
public class UserDao {
public SysUser getSysUser() {
SysUser sysUser = new SysUser();
sysUser.setUserId(2);
sysUser.setUserName("Tom");
return sysUser;
}
}

6.一个实体类,用于封装业务数据:

public class SysUser {

    private Integer userId;
private String userName; public Integer getUserId() {
return userId;
} public void setUserId(Integer userId) {
this.userId = userId;
} public String getUserName() {
return userName;
} public void setUserName(String userName) {
this.userName = userName;
} @Override
public String toString() {
return "SysUser{" +
"userId=" + userId +
", userName='" + userName + '\'' +
'}';
}
}

6.执行测试类Application中的main方法,查看输出结果:

SysUser{userId=2, userName='Tom'}

最新文章

  1. MVC过滤器
  2. 利用windows系统ftp命令编写的BAT文件上传[转]
  3. mq_notify
  4. zookeeper的安装和启动
  5. Android进阶笔记15:ListView篇之图片优化
  6. Linux 命令 - ping: 向网络主机发送 ICMP ECHO_REQUEST 包
  7. webserver&lt;1&gt;
  8. Jack Straws(判断线段是否相交 + 并查集)
  9. google官方提供的下拉刷新控件SwipeRefreshLayout
  10. MyIsam与InnoDB主要区别
  11. JS声明语句提升与作用域
  12. Java缓存框架
  13. Spark技术内幕:Sort Based Shuffle实现解析
  14. MySQL 迁移并搭建主从(实践)
  15. Delphi中快速修改变量名称
  16. HDU 2159 FATE (二维背包)
  17. Code Forces 543A Writing Code
  18. perl数组高级
  19. 使用MVC Razor生成格式良好的HTML Body作为邮件内容
  20. Daily Scrum (2015/10/29)

热门文章

  1. 【Docker】docker的安装和常用命令
  2. HTML&amp;CSS基础-文档声明
  3. Uva1349Optimal Bus Route Design(二分图最佳完美匹配)(最小值)
  4. 自动化测试常用断言的使用方法(python+selenium)
  5. Maven之setting.xml 配置详解
  6. SQL查询结果拼接成字符串
  7. Net-NTLMv1的利用思路
  8. (尚024)Vue_案例_交互删除
  9. BZOJ 4764: 弹飞大爷 LCT
  10. BZOJ 4197: [Noi2015]寿司晚宴 状压dp+质因数分解