`
come_for_dream
  • 浏览: 116582 次
  • 性别: Icon_minigender_1
  • 来自: 长沙
社区版块
存档分类
最新评论

软件开发架构平台技术之Spring依赖注入

 
阅读更多

Spring依赖注入

 

        假如你没有一个非常给力的团队,我只能说与其让别人来找你,不如我去找别人或者组建

   自己的团队,Just Go!!!                                        ---------程序员的自我激励

                                                                                                                                                                                                                                                                                                         

 

    这几天项目忙的差不多了,静静的坐下开始静静的磨刀,接受下一轮更大的挑战,虽然Struts2和hibernate在目前的开发阶段已经够用了,但是为了更好的利用技术,实现更高效快速的开发,我就坐下静静的开始学Sping----一个神秘好玩的东西。

    Spring是Rod Johnson这个伟大的人发明的一个框架是开源社区鼎鼎有名的大神级人物。

      Spring是一个轻量级框架, Java EE的春天,当前主流框架。
    目标: 使现有技术更加易用,推进编码最佳实践
    内容: 依赖注入容器,AOP实现(声明式事务), DAO/ORM支持,Web集成
    Spring框架的核心技术就是依赖注入和控制反转,从横面和纵面来进行解耦。

    今天我开始写自己的第一个Spring Demo,这里使用到了依赖注入,不过在丧心病狂贴代码之前我们要搞清楚为什么要使用是依赖注入?

       我们知道面向对象的方法是的我们的系统实现变得容易,但是当我们的系统变得复杂面向对象的方法使我们变得很无力,因为我们要使用大量的对象,系统变得臃肿不好维护。

    我们就要采用组建化的方法进行系统的开发。

    而依赖注入的目的就是强制将组建的构建和使用分开。

    现在不多说了,上代码:

   首先是User类:

   

package com.zdx.model;

public class User {

	private String userName;
	private String passWord;

	public User() {
	
	}

	public String getUserName() {
		return userName;
	}

	public void setUserName(String userName) {
		this.userName = userName;
	}

	public String getPassWord() {
		return passWord;
	}

	public void setPassWord(String passWord) {
		this.passWord = passWord;
	}

}

 

   然后是UserDAO类:

 

package com.zdx.dao;

import com.zdx.model.User;

public interface UserDAO {

	public void save(User user);

	
}

 

    其次是UserDAOImpl类:

  

package com.zdx.dao;

import com.zdx.model.User;

public class UserDAOImpl implements UserDAO {

	@Override
	public void save(User user) {
		System.out.println("11111111111111111111111111");
	}

}

    然后是UserService类:

   

package com.zdx.service;

import com.zdx.dao.UserDAO;
import com.zdx.dao.UserDAOImpl;
import com.zdx.model.User;

public class UserService {
	private UserDAO userDAO;

	public void addUser(User user) {
		this.userDAO.save(user);
	}

	public UserDAO getUserDAO() {
		return userDAO;
	}

	public void setUserDAO(UserDAO userDAO) {
		this.userDAO = userDAO;
	}

}

 

     然后比较关键的就是beans.xml,Spring容器通过此配置文件创建并管理对象
     这里要注明的是DI有两种方式,一种是设值注入,一种是构造注入。
     设置注入可以用内部注入和外部注入。

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

	<bean name="user" class="com.zdx.model.User"></bean>
	<bean name="userDao" class="com.zdx.dao.UserDAOImpl"></bean>

	<bean name="userService" class="com.zdx.service.UserService">
		<!-- name要和类属性的命名一致 -->
		<property name="userDAO" ref="userDao"></property>
		<!-- 下面这种使用匿名对象的方式同样可以达到相同的效果
		<property name="userDAO">
		     <bean class="com.zdx.dao.UserDAOImpl">
		     </bean> 
		</property>
			 -->
	</bean>

</beans>

 

 然后就是Test类了

package com.zdx.test;

import org.junit.Test;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;

import com.zdx.model.User;
import com.zdx.service.UserService;


public class TestSpring {

	@Test
	public void testSpring() throws Exception {
		ApplicationContext ctx = new ClassPathXmlApplicationContext("beans.xml");
		UserService service=(UserService) ctx.getBean("userService");
		User user=(User) ctx.getBean("user");
		service.addUser(user);
	}
}

 

运行后就会出现输出:

 11111111111111111111111111

 

 

 

 

 

 

 

 

 

 

 

 

 

  

分享到:
评论

相关推荐

    基于Spring的Java平台程序架构研究.pdf

    基于Spring的依赖注入和切面编程思想,研究了Java平台下的系统架构,针对不同应用系统的特点,提取出数据 访问、事务处理、日志跟踪、用户审计、系统监管和分布部署等通用需求,通过现有技术的合理继承,解决了传统...

    内容管理系统(hibernate3+struts2+spring2)130224.rar

    通过学习这个资料包,你可以了解到如何使用Hibernate3进行数据库操作,如何利用Struts2实现MVC(Model-View-Controller)架构,以及如何通过Spring2进行依赖注入和控制反转。总之,这个基于Hibernate3、

    内容管理系统(hibernate3+struts2+spring2).rar

    Hibernate3、Struts2和Spring2是三个常用的开源框架,它们分别用于数据持久化、Web应用开发和依赖注入。这个名为“内容管理系统(hibernate3+struts2+spring2).rar”的压缩包,包含了一个基于Hibernate3、Struts2和...

    源码基于JSP的图书管理系统(struts+hibernate+spring).rar

    该资源是一个基于Java Server Pages (JSP) 技术构建的图书管理系统的源码包,采用了流行的MVC框架Struts,结合了Hibernate作为对象关系映射(ORM)工具以及Spring框架来实现依赖注入和控制反转。整个系统的设计旨在...

    Spring攻略(第二版 中文高清版).part1

    10.7 将依赖注入带给你的ActionScript客户 434 10.7.1 问题 434 10.7.2 解决方案 434 10.7.3 工作原理 435 10.8 小结 439 第11章 Grails 441 11.1 获取和安装Grails 441 11.1.1 问题 441 11.1.2 ...

    源码基于JSP的博客系统(struts+hibernate+spring).rar

    这个名为“基于JSP的博客系统(struts+hibernate+spring).rar”的文件是一个为计算机专业人员设计的软件开发包。它包含用于构建一个功能齐全的博客系统的源代码和资源文件,结合了Java Server Pages (JSP)、Apache ...

    java开源项目:基于spring+springmvc+hibernate的在线招标项目(免费提供源码)

    Spring框架: 负责依赖注入、AOP编程等,提供了控制反转(IoC)和面向切面编程(AOP)的支持。 Spring MVC框架: 负责请求响应和路由管理,使得项目具有良好的MVC架构。 Hibernate框架: 负责对象关系映射(ORM),...

    基于JavaSwing+百度OCR开发的题库管理系统源码+数据库,能够将图片中的文字提取出来,保存题库中

    由于Spring是为web服务而生,MybatisPlus需要依赖Spring的动态代理机制,该软件初代版本 只是集成了mybatis。但是后来发现只集成mybatis需要写的sql量还是很大,且前后端混杂,不易于版本迭代。于是中途换版本,开始...

    源码基于JSP的OA办公自动化管理系统(Struts1.2+Hibernate3.0+Spring2+DWR).rar

    Spring2则贯穿于整个系统,以其依赖注入和面向切面编程的特性,为各个组件之间的解耦和模块间的协作提供了强有力的支撑。此外,DWR框架的使用允许在浏览器端直接调用服务器端的Java方法,实现了像Ajax一样的异步交互...

    Spring面试题

    面向切面编程(AOP)完善spring的依赖注入(DI),面向切面编程在spring中主要表现为两个方面 1.面向切面编程提供声明式事务管理 2.spring支持用户自定义的切面 面向切面编程(aop)是对面向对象编程(oop)的...

    Spring攻略(第二版 中文高清版).part2

    10.7 将依赖注入带给你的ActionScript客户 434 10.7.1 问题 434 10.7.2 解决方案 434 10.7.3 工作原理 435 10.8 小结 439 第11章 Grails 441 11.1 获取和安装Grails 441 11.1.1 问题 441 11.1.2 ...

    免费计算机毕业设计-基于JavaEE的员工健康管理系统(包含论文+源码)

    它利用Java EE平台的强大后端处理能力和企业级特性,通过Spring框架的依赖注入和事务管理功能,以及Spring MVC的模型-视图-控制器架构,实现了一个稳定、安全、易于扩展的健康管理平台。系统主要功能包括员工健康...

    内容管理系统(hibernate3+struts2+spring2).zip

    内容管理系统 (CMS) 是一种用于管理和发布网站内容的软件系统。Hibernate、Struts2 和 Spring 是 Java 开发中常用的三个框架,它们分别负责数据持久化、Web 应用程序的 MVC 架构和应用程序的整体结构和依赖注入。

    我为何停止使用Spring

    Johannes Brodwall是一位...  我之前发表的一篇题为谦卑的架构师的文章引起了很多争论,特别是Spring与依赖注入框架这个话题,这次我打算来谈谈为什么我要停止Spring。我是挪威早采用Spring框架的一批人。我们在开发

    ssm项目基于微信微服务架构的汽车租赁系统的设计与实现_zaxzu.zip

    SSM项目基于微信微服务架构的汽车租赁系统的设计与实现_zaxzu.zip是一个使用Java语言开发的Web应用,它采用了SSM(Spring Spring MVC MyBatis)框架,并结合了微信小程序前端技术。该项目利用MySQL作为后端数据库,...

    JAVA毕业设计ssm后勤管理系统项目(ssm完整源码+说明)

    2. **灵活性**:SSM框架提供了强大的依赖注入和抽象工厂等机制,使得系统开发过程中可以更加灵活地处理各种业务逻辑和数据交互。 3. **安全性**:MyBatis作为持久层框架,提供了强大的SQL语句编写和执行能力,同时...

    免费计算机毕业设计-基于JavaEE的银行预约系统(包含源码+论文)

    该系统利用Java EE的强大后端开发能力,结合Spring框架的依赖注入和事务管理,以及Spring MVC的模型-视图-控制器架构,为用户提供了一个稳定、安全、高效的在线预约环境。系统主要功能包括用户身份验证、服务预约...

    ssm项目weixin047校园二手交易平台的小程序+ssm.zip

    整个项目采用MVC架构,Spring负责业务逻辑处理和依赖注入,Spring MVC处理请求分发和页面渲染,MyBatis负责数据库操作。通过合理的设计,使得代码结构清晰,便于维护和扩展。 该项目适合作为计算机科学和软件工程...

    ssm项目使命召唤游戏助手的设计与实现_pzbe0.zip

    整个项目采用MVC架构设计,Spring负责整体业务逻辑的处理和依赖注入,Spring MVC用于处理HTTP请求和页面跳转,而MyBatis负责与数据库的交互操作。数据库设计考虑了数据的完整性和查询效率,以适应游戏助手服务的需求...

    ssm项目养老院管理系统(小程序.zip

    整个项目采用MVC架构,Spring用于实现业务逻辑和依赖注入,Spring MVC负责请求分发与页面渲染,而MyBatis处理所有与数据库相关的操作。数据库设计考虑到了数据的完整性和查询效率,以支撑系统的高效运行。 这个项目...

Global site tag (gtag.js) - Google Analytics