使用Spring容器最简单的代码姿势
2024-10-21 19:43:48
如果仅仅是为了测试简单使用一下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'}
最新文章
- MVC过滤器
- 利用windows系统ftp命令编写的BAT文件上传[转]
- mq_notify
- zookeeper的安装和启动
- Android进阶笔记15:ListView篇之图片优化
- Linux 命令 - ping: 向网络主机发送 ICMP ECHO_REQUEST 包
- webserver<;1>;
- Jack Straws(判断线段是否相交 + 并查集)
- google官方提供的下拉刷新控件SwipeRefreshLayout
- MyIsam与InnoDB主要区别
- JS声明语句提升与作用域
- Java缓存框架
- Spark技术内幕:Sort Based Shuffle实现解析
- MySQL 迁移并搭建主从(实践)
- Delphi中快速修改变量名称
- HDU 2159 FATE (二维背包)
- Code Forces 543A Writing Code
- perl数组高级
- 使用MVC Razor生成格式良好的HTML Body作为邮件内容
- Daily Scrum (2015/10/29)
热门文章
- 【Docker】docker的安装和常用命令
- HTML&;CSS基础-文档声明
- Uva1349Optimal Bus Route Design(二分图最佳完美匹配)(最小值)
- 自动化测试常用断言的使用方法(python+selenium)
- Maven之setting.xml 配置详解
- SQL查询结果拼接成字符串
- Net-NTLMv1的利用思路
- (尚024)Vue_案例_交互删除
- BZOJ 4764: 弹飞大爷 LCT
- BZOJ 4197: [Noi2015]寿司晚宴 状压dp+质因数分解