Spring IOC的简单实现(2)

实现的效果为:
Service service=(Service)beans.get("userService");
Dao dao = (Dao)beans.get("userDAO");
//依赖注入,Service实现依赖dao的实现
service.setDao(dao);

5.User:实体类

package com.example.domain; public class User { private String userName; private String password; /** * @return the userName */ public String getUserName() { return userName; } /** * @param userName the userName to set */ public void setUserName(String userName) { this.userName = userName; } /** * @return the password */ public String getPassword() { return password; } /** * @param password the password to set */ public void setPassword(String password) { this.password = password; } public String toString() { StringBuffer sb = new StringBuffer(); sb.append(this.userName); sb.append(this.password); return sb.toString(); } }

6.UserDAO

package com.example.dao; import com.example.domain.User; public interface UserDAO { void save(User u); void delete(); }

7.UserDAOImpl

package com.example.dao.impl; import com.example.dao.UserDAO; import com.example.domain.User; public class UserDAOImpl implements UserDAO { @Override public void save(User u) { System.out.println("User:" + u.toString()); } @Override public void delete() { System.out.println("delete User"); } }

8.UserService

package com.example.service; import com.example.dao.UserDAO; import com.example.domain.User; public class UserService { private UserDAO userDAO; public void addUser(User u) { this.userDAO.save(u); } /** * @return the userDAO */ public UserDAO getUserDAO() { return userDAO; } /** * @param userDAO the userDAO to set */ public void setUserDAO(UserDAO userDAO) { this.userDAO = userDAO; } }

9.测试:

package com.example.ioc; import com.example.domain.User; import com.example.service.UserService; public class RunIoc { public static void main(String[] args) throws Exception { BeanFactory factory = new ClassPathXmlApplicationContext(); //通过工厂直接获取 UserService userService = (UserService) factory.getBean("userService"); //其实User也可以从工厂中获得 User u = (User) factory.getBean("user"); //User u = new User(); u.setUserName("tom"); u.setPassword("123456"); userService.addUser(u);//打印结果tom123456 } }

小结

上文仅仅是简单地模拟了spring的IOC的实现,虽然只是完成了spring中依赖注入的一小部分,但还是很好地展现了Java反射机制在spring中的应用

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/4cec2580908f489d494f357ee2784f94.html