如果僅僅是為了測試簡單使用一下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 {@Autowiredprivate 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;}@Overridepublic String toString() {return "SysUser{" +"userId=" + userId +", userName='" + userName + '\'' +'}';} }
?
6.執行測試類Application中的main方法,查看輸出結果:
SysUser{userId=2, userName='Tom'}
?