软件开发架构平台技术之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

 

 

 

 

 

 

 

 

 

 

 

 

 

  

相关推荐