`
come_for_dream
  • 浏览: 117836 次
  • 性别: 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平台下的系统架构,针对不同应用系统的特点,提取出数据 访问、事务处理、日志跟踪、用户审计、系统监管和分布部署等通用需求,通过现有技术的合理继承,解决了传统...

    Java EE设计模式:Spring企业级开发最佳实践

    在 Spring 中,MVC 模式是框架的核心部分,提供了一个松耦合的架构,开发者可以根据需要选择不同的视图技术和模型来实现业务逻辑。 5.DependencyInjection Pattern:依赖注入模式,提供一种松耦合的方式来管理对象...

    【Java面试资料】-原创_27道大厂高频Spring面试

    3. 控制反转(IOC)和依赖注入的定义:控制反转是应用于软件工程领域的,在运行时被装配器对象用来绑定耦合对象的一种编程技巧。依赖注入是在编译阶段尚未知所需的功能是来自哪个的类的情况下,将其他对象所依赖的...

    内容管理系统(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 ...

    基于Maven构建的Spring+Hibernate+Struts2 web项目(免费提供全部源码)

    Spring的依赖注入(DI)机制使得组件之间的耦合度降低,增强了系统的可测试性和可维护性。 Hibernate ORM:用于实现数据持久化,Hibernate通过映射Java类与数据库表,使得数据库操作更加面向对象。Hibernate的HQL...

    基于BS架构的考勤管理系统设计与实现.doc

    在该系统中,本人负责的Spring Security模块主导着该系统的安全大门,能够充分利用了Spring IoC(依赖注入,也称控制反转)和AOP(面向切面编程)功能,为考勤管理系统提供声明式的安全访问控制功能,减少了为系统...

    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 ...

    基于ssm的车辆管理系统(免费赠送代码)

    为了提高车辆管理的科学性和效率,基于SSM框架开发了一套车辆管理系统,通过集成Spring的依赖注入、Spring MVC的Web开发能力和MyBatis的持久层管理,实现了系统的高效开发和稳定运行。 核心功能 车辆信息管理:包括...

    免费计算机毕业设计-基于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作为后端数据库,...

Global site tag (gtag.js) - Google Analytics