`
jiagou
  • 浏览: 2595252 次
文章分类
社区版块
存档分类
最新评论

如何实现Spring?

 
阅读更多

通过上篇文章的介绍我们已经了解了一部分原因关于为什么要使用Spring,接下来我们将通过一个例子来了解Spring是如何运行的.


1、spring的依赖包配置

*SPRING_HOME/dist/spring.jar

*SPRING_HOME/lib/log4j/log4j-1.2.14.jar

*SPRING_HOME/lib/jakarta-commons/commons-logging.jar


计算机生成了可选文字:画prefeFenCeSUSeFLibF己FieSJaVaBUi!dp日thUSerLibrarieSUSeFlibFarieSCanbeaddedpathwhenlaunched.Defineduser!ibraries:‘峨springtoaJavaBuildpathandbundleanumberofeXternalarchives.Systemlibrarieswillbeaddedtothebootclass.子springjar一D:\软件安装包丫工程软件气开发资源包卜pring\spring一framework一2.0一wit卜dependencies\spring一frame叭函1og4)一1.2.14jar一D:\软件安装包气工程软件\开发资源包spring\spring一framework一2.0一wit卜dependencies\spring一fr最commons一logging.jar一。:\软件安装包\工程软丫电开发资源包\spring\spring一framework一2.0一wit卜dependencieS\sFAddJARS~


2、提供spring配置文件applicationContext.xml


			<?xml version="1.0" encoding="UTF-8"?>
			
			
			<beans xmlns="http://www.springframework.org/schema/beans"
				     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
				     xmlns:aop="http://www.springframework.org/schema/aop"
				     xmlns:tx="http://www.springframework.org/schema/tx"
				     xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.0.xsd
			           http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-2.0.xsd
			           http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-2.0.xsd">
			
			
			</beans>


3、提供log4j.properties配置文件,放在classpath能够找到的地方.

4、在UserManager中提供构造函数,让spring将UserDao实现注入(DI)过来

		package com.tgb.spring.manger;
		
		import com.tgb.spring.dao.UserDao;
		import com.tgb.spring.dao.UserDaoMysqlImpl;
		
		/**
		 * 
		 * @title UserManager 通过Spring注入实现
		 * @project_name spring_why_spring
		 * @author jnqqls
		 * @group TGB
		 * @version 1.0
		 * @comments
		 */
		public class UserManagerImpl implements UserManager {
		
			// 因为UserDao为没有状态的类,所以可以定义为成员变量
			private UserDao userDao;
		
			/**
			 * 可以通过构造方法赋值
			 * 
			 * @param userDao
			 */
			public UserManagerImpl(UserDao userDao) {
				
				this.userDao = userDao;
			}
		
			@Override
			public void addUser(String username, String password) {
		
				userDao.addUser(username, password);
		
			}
		
		}


5、让spring管理我们对象的创建和依赖,必须将依赖关系配置到spring的核心配置文件中

		<?xml version="1.0" encoding="UTF-8"?>
		<beans xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
		    xmlns:aop="http://www.springframework.org/schema/aop"
		    xmlns:tx="http://www.springframework.org/schema/tx"
		    xmlns="http://www.springframework.org/schema/beans"
		    xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.0.xsd
		           http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-2.0.xsd
		           http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-2.0.xsd" >
		
		    <bean
		        id="userDao4Mysql"
		        class="com.tgb.spring.dao.UserDaoMysqlImpl" />
		
		    <bean
		        id="userDao4Oracle"
		        class="com.tgb.spring.dao.UserDaoOracleImpl" />
		
		    <bean
		        id="userManager"
		        class="com.tgb.spring.manger.UserManager" >
		        
		        <!-- 描述依赖关系  UserManager 依赖MySql的实现,会先找到UserDaoMysqlImpl,然后New好对象,随后将对象注入到构造函数中.-->
		        <!-- 你找女朋友和女朋友找你是不一样的 -->
		        <constructor-arg ref="userDao4Mysql"></constructor-arg>
		    </bean>
		
		</beans>


6、编写客户端

			package com.tgb.spring.client;
			
			import org.springframework.beans.factory.BeanFactory;
			import org.springframework.context.support.ClassPathXmlApplicationContext;
			
			import com.tgb.spring.dao.UserDaoMysqlImpl;
			import com.tgb.spring.manger.UserManager;
			import com.tgb.spring.manger.UserManagerImpl;
			
			/**
			 * 
			 * @title Spring实例客户端
			 * @project_name spring_why_spring
			 * @author jnqqls
			 * @group TGB
			 * @version 1.0
			 * @comments
			 */
			public class Client {
			
				/**
				 * @param args
				 */
				public static void main(String[] args) {
			
					// 请求IOC容器,读取配置文件,根据配置文件创建UserManager对象
					BeanFactory beanFactory = new ClassPathXmlApplicationContext(
							"applicationContext.xml");
					// 获取UserManager的对象,不用去管UserDao因为在Spring中已经对关系进行管理
					UserManager userManager = (UserManager) beanFactory
							.getBean("userManager");
			
					userManager.addUser("jnqqls", "123456");
			
				}
			
			}

以上便是Spring的实例,核心内容是第4步,第5步,通过依赖注入和Spring的配置文件来达到不需要主动查找对象,对象的查找,定位和创建全部由容器管理.

Spring 小结:

鼓励我们面向接口编程,能够大量减少FactorySingleton的数量.这样代码的层次会更清楚,只是业务对象之间的关系,程序员可以更加注重对业务的精力.主要原因是我们不再查找,定位,创建和管理对象之间的关系,都交给IOC来管理.减少了代码中的耦合(解耦合),将耦合推迟到了配置文件中,发生了变化也更容易控制.


分享到:
评论

相关推荐

    What’s Spring?

    **什么是Spring?** Spring是一个开源的、全面的Java/JEE应用程序框架,由Rod Johnson在其著作《Expert One-on-One J2EE Design and Development》中首次提出。它提供了一个容器(ApplicationContext),用于管理...

    Spring事务管理Demo

    本Demo将深入探讨Spring如何实现事务的管理。 首先,Spring提供了两种主要的事务管理方式:编程式事务管理和声明式事务管理。 1. **编程式事务管理**:通过使用`PlatformTransactionManager`接口及其实现类(如`...

    基于注解实现SpringAop

    基于注解实现SpringAop基于注解实现SpringAop基于注解实现SpringAop

    springIoc实现原理

    **Spring Ioc 实现原理详解** Spring Ioc(Inversion of Control,控制反转)是Spring框架的核心特性之一,它改变了传统应用程序中对象的创建和管理方式。在传统的软件设计中,对象的创建和依赖关系的维护通常由...

    基于Cglib简单实现Spring体系(Ioc+Aop+Mvc)

    基于Cglib简单实现Spring体系(Ioc+Aop+Mvc)基于Cglib简单实现Spring体系(Ioc+Aop+Mvc)基于Cglib简单实现Spring体系(Ioc+Aop+Mvc)基于Cglib简单实现Spring体系(Ioc+Aop+Mvc)基于Cglib简单实现Spring体系(Ioc+Aop+Mvc)...

    模拟实现Spring的IOC

    2、本工程,模拟实现Spring的IOC,将xml中配置的Bean读入到Spring容器中,并在测试用例中调用Spring容器中的bean。 3、开发环境eclipse,jdk1.6。使用第三方jar包有:jdom.jar(用于解析xml文件),junit-4.4.jar...

    Spring框架的简单实现

    【SSH进阶之路】一步步重构容器实现Spring框架——从一个简单的容器开始(八) 【SSH进阶之路】一步步重构容器实现Spring框架——解决容器对组件的“侵入式”管理的两种方案--服务定位器和IoC容器(九) 【SSH进阶之路】...

    spring+spring mvc+mybatis框架整合实现超市货物管理系统

    在本文中,我们将深入探讨如何使用JavaEE技术栈,特别是Spring、Spring MVC和MyBatis框架,来构建一个超市货物管理系统的实现。这个系统涵盖了基本的登录功能以及与MySQL数据库的交互,包括增删改查操作和分页显示。...

    对Spring中注解怎么实现的一些基本原理

    在Spring框架中,注解是实现依赖注入和配置的核心机制之一。本文将深入探讨Spring注解的基本原理,包括它们如何被解析、处理以及如何影响应用程序的生命周期。 首先,我们需要了解注解在Java语言中的本质。注解是一...

    手动实现的简单Spring框架

    【标题】手动实现的简单Spring框架 在Java Web开发领域,Spring框架是一个极其重要的存在,它提供了丰富的功能,包括依赖注入、AOP(面向切面编程)、MVC(模型-视图-控制器)架构等。本项目是基于对Spring框架核心...

    自主实现的简易Spring框架

    本项目"自主实现的简易Spring框架"显然是对Spring核心功能的一种简化版实现,旨在帮助开发者深入理解Spring的核心机制。 首先,我们来讨论一下Spring的核心组件——IoC(Inversion of Control)容器。IoC也被称为...

    Spring实现增删改查

    在这个“Spring实现增删改查”的项目中,我们将深入探讨如何利用Spring框架来实现数据库操作的基础功能。 1. **依赖注入(DI)**:在Spring框架中,DI是一种设计模式,它允许对象之间的关系在运行时被外部容器管理...

    springmvc3+spring+mybatis3整合项目 注解实现

    同时,Spring的事务管理功能可以通过@Transactional注解来实现,它可以控制事务的边界,确保数据操作的一致性。 项目的描述中提到了“事务详解”,这通常涉及到数据库操作的ACID特性(原子性、一致性、隔离性和持久...

    利用spring实现打印机

    本教程将深入探讨如何利用Spring框架来实现一个打印机功能,这对于初学者掌握Spring的核心概念非常有帮助。 首先,我们需要理解什么是依赖注入。在传统的编程模式中,对象通常会自行创建或查找其依赖的对象,这可能...

    Spring+Spring MVC+Spring JDBC+MySql实现简单登录注册

    在此项目中,Spring MVC用于处理用户登录注册的HTTP请求,实现前后端交互。 3. **Spring JDBC**:Spring JDBC模块提供了一层抽象,简化了与数据库的交互。它包含模板类如JdbcTemplate,用于执行SQL语句,并处理结果...

    利用Spring实现工作流

    本文将深入探讨如何利用Spring实现工作流,以及如何通过Spring的依赖注入特性将业务模块灵活地整合在一起。 首先,我们需要理解Spring框架的核心概念——依赖注入(Dependency Injection,简称DI)。依赖注入是...

    自己实现的spring-session

    自己实现spring-session,实现单点登陆的功能 使用filter拦截用户的请求,在filter中包装request,在request的包装类requestWrapper中,重写getSession(), 和getSession(boolean create)。自己实现httpSession,...

    Spring Boot 实战开发2022年

    │ 05 自动配置:如何正确理解 Spring Boot 自动配置实现原理?.mp4 │ 06 基础规范:如何理解 JDBC 关系型数据库访问规范?.mp4 │ 07 数据访问:如何使用 JdbcTemplate 访问关系型数据库?.mp4 │ 13 服务调用...

    论坛系统项目(Struts 2+Hibernate+Spring实现)

    论坛系统项目(Struts 2+Hibernate+Spring实现)论坛系统项目(Struts 2+Hibernate+Spring实现)论坛系统项目(Struts 2+Hibernate+Spring实现)论坛系统项目(Struts 2+Hibernate+Spring实现)论坛系统项目(Struts...

    基本的spring mvc + spring security实现的登录(无数据库)

    在本项目中,我们主要探讨的是如何利用Spring MVC和Spring Security框架构建一个基本的无数据库登录系统。Spring MVC是Spring框架的一部分,用于处理Web应用程序的请求-响应模型,而Spring Security则是一个强大的...

Global site tag (gtag.js) - Google Analytics