PS:由于笔者是直接学习的Spring,有些地方写不清楚和有错误的地方还请谅解和指正。


原理部分:

在使用Spring框架之前,如果要实现一个业务(以用户类为例),相当复杂。

原先实现的方式

1、UserDAO 接口
2、UserDAOImpl 实现类
3、UserService 业务接口
4、UserServiceImpl 业务实现类

DAO是Data Access Object数据访问bai接口。 在核心J2EE模式中是这样介绍DAO模式的:为了建立一个健壮的J2EE应用,应该将所有对数据源的访问操作抽象封装在一个公共API中。

Impl 应该是implement的简写

如果当我们增加了程序的要求(比如增加MySQL方式来获取数据,则我需要增加DAOImpl的实现,并且在UserServiceImpl中对代码进行修改才能办到.
(原先需要专门生成UserDAOImpl类)

  1. public interface UserDAO {
  2. void getUser();
  3. }
  4. public class UserDAOImpl implements UserDAO {
  5. @Override
  6. public void getUser() {
  7. System.out.println("this is UserDAO.");
  8. }
  9. }
  10. public interface UserServiceDAO {
  11. void getUser();
  12. }
  13. public class UserServiceDAOImpl implements UserServiceDAO{
  14. private UserDAO userDAO = new UserDAOImpl();
  15. @Override
  16. public void getUser() {
  17. userDAO.getUser();
  18. }
  19. }

修改后(使用类似”注入”的思想)

  1. public class UserServiceDAOImpl implements UserServiceDAO{
  2. private UserDAO userDAO;
  3. //使用注入方式
  4. public void SetUser(UserDAOImpl userDAO) {
  5. this.userDAO = userDAO;
  6. }
  7. @Override
  8. public void getUser() {
  9. userDAO.getUser();
  10. }
  11. }

这样,我们只需要使用setUser函数来对确定传入值,而不需要每次都改UserService中的实现了.
实际Spring使用中,用的是一个Spring即已经实现的一个中间层,把需要的对象直接写入XML文件中,可以直接用Spring的容器直接获取类的实例化,而无须在程序中生成.

具体实现

image.png
HelloWorld辟邪
我惊讶的发现,android程序的编写和Spring的项目有着惊人的相似性,都是可以通过XML文件来进行配置.