引入依赖
pom.xml
<?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.company</groupId> <artifactId>Spring01</artifactId> <version>1.0-SNAPSHOT</version> <build> <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-compiler-plugin</artifactId> <version>3.1</version> <configuration> <source>1.8</source> <target>1.8</target> <encoding></encoding> </configuration> </plugin> </plugins> </build> <dependencies> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>4.12</version> </dependency> <dependency> <groupId>dom4j</groupId> <artifactId>dom4j</artifactId> <version>1.6.1</version> </dependency> <dependency> <groupId>jaxen</groupId> <artifactId>jaxen</artifactId> <version>1.1.6</version> </dependency> </dependencies> </project>
在Resources目录下Beans.xml
<?xml version="1.0" encoding="UTF-8" ?> <beans> <bean id="accountDao" class="com.company.dao.AccountDaoImpl"></bean> <bean id="accountService" class="com.company.service.AccountServiceImpl"></bean> </beans>
在POJO目录下定义Account类
public class Account { private int id; private String name; private double money; @Override public String toString() { return "Account{" + "id=" + id + ", name='" + name + '\'' + ", money=" + money + '}'; } public int getId() { return id; } public void setId(int id) { this.id = id; } public String getName() { return name; } public void setName(String name) { this.name = name; } public double getMoney() { return money; } public void setMoney(double money) { this.money = money; } }
dao层
接口AccountDao.java
public interface AccountDao { void addAccount(Account account); }
实现类AccountDaoImpl.java
public class AccountDaoImpl implements AccountDao { @Override public void addAccount(Account account) { System.out.println("创建一个新账户"); } }
service层
接口AccountService.java
public interface AccountService { void addAccount(Account account); }
实现类AccountServiceImpl.java
public class AccountServiceImpl implements AccountService{ private AccountDao accountDao=new AccountDaoImpl(); @Override public void addAccount(Account account) { accountDao.addAccount(account); } }
解析Beans.xml
public class BeanFactory { private static Map<String, Object> map = new HashMap<>(); static { try { SAXReader saxReader = new SAXReader(); InputStream inputStream = BeanFactory.class.getClassLoader().getResourceAsStream("beans.xml"); Document document = saxReader.read(inputStream); inputStream.close(); Element rootElement = document.getRootElement(); List<Element> listElement = rootElement.selectNodes("//bean"); for (Element element : listElement) { String id = element.attributeValue("id"); String aClass = element.attributeValue("class"); Class<?> clazz = Class.forName(aClass); Object o = clazz.newInstance(); map.put(id, o); } } catch (Exception e) { e.printStackTrace(); } } public static Object getBean(String id) throws Exception { return map.get(id); } }
测试
public class MyIOCTest { @Test public void test() throws Exception { AccountDao accountDao = (AccountDaoImpl)BeanFactory.getBean("accountDao"); AccountService accountService =(AccountServiceImpl) BeanFactory.getBean("accountService"); System.out.println(accountDao); System.out.println(accountService); } }
文件目录如下:

posted on
浙公网安备 33010602011771号