• spring快速入门(一)


    • 对于为什么使用spring框架,这里不多做解释,详情请百度。本人推荐面向驱动程序学习,通过实战来瞧瞧spring技术的伟大。所以先来看看原始开发一个简单的例子,由例子引入spring相关的技术。如果错误,敬请指正~~

      


      1、新建一个java项目,项目结构图如下:

        

      项目说明:该项目简单模拟添加一个用户的一个过程,由客户端client发送请求,Acton作为控制层,Dao作为数据层处理,数据处理层有两个不同的实现!

      UserDao代码:

    package com.murong.dao;
    
    public interface UserDao {
        
        //添加用户
        public void addUser(String name,int age);
    }

      UserDaoMysqlImpl代码:

    package com.murong.dao;
    
    public class UserDaoMysqlImpl implements UserDao {
    
        @Override
        public void addUser(String name, int age) {
            System.out.println("mysql添加用户成功"+"用户名称:"+name+"年龄:"+age);
        }
    }

      UserDaoOracleImpl代码:

    package com.murong.dao;
    
    public class UserDaoOracleImpl implements UserDao {
    
        @Override
        public void addUser(String name, int age) {
            System.out.println("oracle添加用户成功"+"用户名称:"+name+"年龄:"+age);
        }
    }

      UserAction代码:

    package com.murong.action;
    
    public interface UserAction {
            //添加用户
            public void addUser(String name,int age);
    }

      UserActionImpl代码:

    package com.murong.action;
    
    import com.murong.dao.UserDao;
    import com.murong.dao.UserDaoMysqlImpl;
    import com.murong.dao.UserDaoOracleImpl;
    
    public class UserActionImpl implements UserAction{
    
        @Override
        public void addUser(String name, int age) {
            //由mysql实现
            UserDao userDaoImpl = new UserDaoMysqlImpl();
            userDaoImpl.addUser(name, age);
            
            //由oracle实现
            UserDao userDaoOracle = new UserDaoOracleImpl();
            userDaoOracle.addUser(name, age);
        }
    
    }

      Client代码:

    package com.murong.client;
    
    import com.murong.action.UserAction;
    import com.murong.action.UserActionImpl;
    
    public class Client {
        
        public static void main(String[] args) {
            UserAction userAction = new UserActionImpl();
            userAction.addUser("久伴", 24);
        }
    }

       分析项目问题:我们在UserActionImpl的实现类中依赖UserDao的具体实现类,由我们的程序主动查找服务(对象)定位,即查找具体的实现类(UserDaoMysqlImpl或者UserDaoOracleImpl)完成添加功能。但是这是存在一定的硬编码问题。当然我们可以通过工厂的方式来创建UserDao,工厂隐藏了实现类的具体创建细节。但是呢,代码也不是很可观,起码我们的UserActionImpl中还存在工厂资源。其实我们还是自己拿到工厂自己创建对象。

      那么Spring是怎么样实现的呢?

        Spring是通过IOC容器完成对对象的创建,我们现在就不需要自己创建对象了,然后通过注入(DI)的方式给我们送相对应的资源。这就类似于Servlet中的request和response,它们是由tomcat容器创建,送给我们,我们直接使用就可以了。

        提前了解依赖注入和控制反转!!!

        依赖注入(Dependency Injection)和控制反转(Inversion of Control)同一个概念。具体含义:当某个角色(可能一 个Java实例,调用者)需要另一个角色(另一个Java实例,被调用者)的协助时,在 传统的程序设计过程中,通常由调用者来创建被调用者的实例。但在Spring里,创建被调用者的工作不再由调用者来完成,而是通过IOC容器创建,通过注入的方式给调用者。因此称为控制反转;创建被调用者 实例的工作通常由Spring容器来完成,然后注入调用者,因此也称为依赖注入

  • 相关阅读:
    在matlab中出现警告 Function call XX invokes inexact match
    VC2008调用matlab生成的dll和lib
    关于mwArray 的一些资料(一)
    关于C#中的3个timer类(申明是转贴的哦)
    C#教程 PDF
    我也做他个vote machine
    如何用UltraEdit编译C#源程序(再次申明这也是转贴的哦!)
    C#使用技巧调用DLL(还是转贴哦!)
    线程池
    Java web开发中如何自动生成文章html页面
  • 原文地址:https://www.cnblogs.com/yuanchaoyong/p/5748589.html
Copyright © 2020-2023  润新知