• Spring>环境 及 为什么使用spring


    一、为什么使用Spring(举例说明)

    UserDao.java

    package com.ncepu.dao;
    
    public interface UserDao {
    	public void save(String name,String psssword);
    }
    

    UserdaoForMysqlImpl.java

    package com.ncepu.dao;
    
    public class UserdaoForMysqlImpl implements UserDao {
    
    
    	public void save(String name, String psssword) {
    		System.out.print("-----UserdaoForMysqlImpl---实现");
    	}
    
    }
    

    UserdaoForOracleImpl.java

    package com.ncepu.dao;
    
    public class UserdaoForOracleImpl implements UserDao {
    
    
    	public void save(String name, String psssword) {
    		System.out.print("-----UserdaoForOracleImpl---实现");
    	}
    
    }
    

     UserManager.java

    package com.ncepu.manager;
    
    public interface UserManager {
    	
    	public void save(String username, String password);
    }

    UserManagerImpl.java

    package com.ncepu.manager;
    
    import com.ncepu.dao.UserDao;
    
    public class UserManagerImpl implements UserManager {
    	
    	private UserDao userDao;
    	
    	public UserManagerImpl(UserDao userDao) {
    		this.userDao = userDao;
    	} 
    	
    	public void save(String username, String password) {
    		this.userDao.save(username, password);
    	}
    }
    
    
    
    

    Client.java

    package com.ncepu.client;
    
    import com.ncepu.dao.UserdaoForOracleImpl;
    import com.ncepu.manager.UserManager;
    import com.ncepu.manager.UserManagerImpl;
    
    public class Client {
    
     public static void main(String[] args) {
    //  UserManager userManager = new UserManagerImpl(new UserdaoForMysqlImpl());
    //  userManager.save("张三", "123");
      UserManager userManager = new UserManagerImpl(new UserdaoForOracleImpl());
      userManager.save("张三", "123");
     }
    }
    

    在Client中,如果需求改变,如果不用依赖注入,我们需要给出两套实现。


    二.控制反转(Inversion of Control)与依赖注入(Dependency Injection)

    控制反转即IoC (Inversion of Control),它把传统上由程序代码直接操控的对象的调用权交给容器,通过容器来实现对象组件的装配和管理。所谓的“控制反转”概念就是对组件对象控制权的转移,从程序代码本身转移到了外部容器。
    IoC是一个很大的概念,可以用不同的方式来实现。其主要实现方式有两种:<1>依赖查找(Dependency Lookup):容器提供回调接口和上下文环境给组件。EJB(JNDI中ctx.lookup()和Apache Avalon都使用这种方式。<2>依赖注入(Dependency Injection):组件不做定位查询,只提供普通的Java方法让容器去决定依赖关系。后者是时下最流行的IoC类型,其又有接口注入(Interface Injection),设值注入(Setter Injection)和构造子注入(Constructor Injection)三种方式

    三、Spring实现,使一切变得简单

    1、spring依赖库
     * SPRING_HOME/dist/spring.jar
     * SPRING_HOME/lib/jakarta-commons/commons-logging.jar
     * SPRING_HOME/lib/log4j/log4j-1.2.14.jar
    2、拷贝spring配置文件applicationContext.xml到src下[spring-framework-2.0\samples\jpetstore\war\WEB-INF里面有]
    3、拷贝log4j配置文件log4j.properties到src下              [spring-framework-2.0\samples\jpetstore\war\WEB-INF里面有]
    4、在UserManagerImpl中提供构造函数或setter方法,spring将实例化好的UserDao实现注入给我们

    5、让spring管理我们的对象创建和依赖,必须在spring配置中进行定义

    构造函数

    <bean id="UserdaoForMysqlImpl" class="com.ncepu.dao.UserdaoForMysqlImpl"> </bean>
    	<bean id="UserdaoForOracleImpl" class="com.ncepu.dao.UserdaoForOracleImpl"></bean>
    	<bean id="UserManagerImpl" class="com.ncepu.manager.UserManagerImpl">
    	<constructor-arg ref="UserdaoForMysqlImpl"></constructor-arg>
    	</bean>
    

    或者setter方法

    	<bean id="UserdaoForMysqlImpl" class="com.ncepu.dao.UserdaoForMysqlImpl"> </bean>
    	<bean id="UserdaoForOracleImpl" class="com.ncepu.dao.UserdaoForOracleImpl"></bean>
    	<bean id="UserManagerImpl" class="com.ncepu.manager.UserManagerImpl">
    	<property name="userDao" ref="UserdaoForOracleImpl"></property>
    	</bean>

    6、编写客户端Client.java

    package com.ncepu.client;
    
    import org.springframework.beans.factory.BeanFactory;
    import org.springframework.context.support.ClassPathXmlApplicationContext;
    
    import com.ncepu.manager.UserManager;
    
    public class Client {
    
    	public static void main(String[] args) {
    		BeanFactory factory=new ClassPathXmlApplicationContext("applicationContext.xml");
    		UserManager userManager = (UserManager)factory.getBean("UserManagerImpl");
    		userManager.save("张三", "123");
    	}
    }
    

    使用了依赖注入,需求改变时,客户端我们不需要改,只需要改配置文件就可以。

    四、Spring最常用的特性

    利用Spring构建业务逻辑层
      管理依赖关系
      适应需求变更
    利用Spring创建数据访问对象(DAO)
    利用Spring进行事务处理


     

  • 相关阅读:
    godaddy 亚太机房 更换 美国机房 全过程(图)
    博客园设置访问密码
    GoDaddy Linux主机支持机房的更换
    今天电信宽代终于装上光纤了,升级或安装光纤需购光猫,可以自购。我来扫盲一下
    我来科普一下为毛很多人升级了20M的电信光纤宽带反而感觉速度更卡了
    百度浏览器使用率统计
    hdu 1281
    C#基于SMTP协议和SOCKET通信,实现邮件内容和附件的发送,并可隐藏收件人
    如何处理标注打架
    提高你的Java代码质量吧:谨慎包装类型的比较
  • 原文地址:https://www.cnblogs.com/xqzt/p/5637180.html
Copyright © 2020-2023  润新知