使用Spring容器最简单的代码姿势
如果仅仅是为了测试简单使用一下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'}