概括说明:下面通过实例介绍下属性方法注入、构造方法注入

1、源码结构图

2、代码介绍

(1)、Dao接口 :UserDAO

(2)、Dao接口实现:UserDAOImpl

(3)、实体类:User

(4)、服务层接口:UserService

(5)、服务层接口实现:UserServiceImpl

(6)、测试主类:UserServiceTest

3、源代码

(1)、Dao接口 :UserDAO

  1. package com.northeasttycoon.dao;
  2.  
  3. import com.northeasttycoon.model.User;
  4.  
  5. /**
  6. * @author tycoon
  7. */
  8. public interface UserDAO {
  9.  
  10. public void save(User user);
  11. }

(2)、Dao接口实现:UserDAOImpl

  1. package com.northeasttycoon.dao.impl;
  2.  
  3. import com.northeasttycoon.dao.UserDAO;
  4. import com.northeasttycoon.model.User;
  5. /**
  6. * @author tycoon
  7. */
  8. public class UserDAOImpl implements UserDAO {
  9.  
  10. // 保存数据方法
  11. public void save(User user) {
  12.  
  13. System.out.println("username:"+user.getUsername() +" ,userpassword:"+user.getPassword()+ " ,saved in Oracle!");
  14. System.out.println(user.getUsername() + " saved in DB2!");
  15. }
  16. }

(3)、实体类:User

  1. package com.northeasttycoon.model;
  2.  
  3. /**
  4. * 用户实体类
  5. * @author tycoon
  6. *
  7. */
  8. public class User {
  9.  
  10. private String username;
  11. private String password;
  12.  
  13. public String getUsername() {
  14. return username;
  15. }
  16.  
  17. public void setUsername(String username) {
  18. this.username = username;
  19. }
  20.  
  21. public String getPassword() {
  22. return password;
  23. }
  24.  
  25. public void setPassword(String password) {
  26. this.password = password;
  27. }
  28. }

(4)、服务层接口:UserService

  1. package com.northeasttycoon.service;
  2.  
  3. import com.northeasttycoon.model.User;
  4.  
  5. /**
  6. * 服务层接口
  7. * @author tycoon
  8. *
  9. */
  10. public interface UserService {
  11.  
  12. //处理新增用户业务逻辑
  13. public void add(User user);
  14. }

(5)、服务层接口实现:UserServiceImpl

  1. package com.northeasttycoon.service;
  2.  
  3. import com.northeasttycoon.dao.UserDAO;
  4. import com.northeasttycoon.model.User;
  5.  
  6. /**
  7. * 服务层接口实现类
  8. * @author tycoon
  9. */
  10. public class UserServiceImpl {
  11.  
  12. // 属性注册方式实现方法注入
  13. private UserDAO userDAO;
  14.  
  15. public void add(User user) {
  16. userDAO.save(user);
  17. }
  18.  
  19. public UserDAO getUserDAO() {
  20. return userDAO;
  21. }
  22.  
  23. public void setUserDAO(UserDAO userDAO) {
  24. this.userDAO = userDAO;
  25. }
  26.  
  27. // 构造方法注入
  28. // public UserServiceImpl(UserDAO userDAO) {
  29. // super();
  30. // this.userDAO = userDAO;
  31. // }
  32. }

(6)、测试主类:UserServiceTest

  1. package com.northeasttycoon.service.test;
  2.  
  3. import org.apache.log4j.Logger;
  4. import org.junit.Test;
  5. import org.springframework.context.ApplicationContext;
  6. import org.springframework.context.support.ClassPathXmlApplicationContext;
  7.  
  8. import com.northeasttycoon.model.User;
  9. import com.northeasttycoon.service.UserServiceImpl;
  10.  
  11. // 测试类
  12. public class UserServiceTest {
  13.  
  14. final static Logger logger = Logger.getLogger(UserServiceTest.class);
  15.  
  16. @Test
  17. public void testAdd() throws Exception {
  18. logger.info("insert sucessful start! ");
  19. // 创建容器
  20. ApplicationContext ctx = new ClassPathXmlApplicationContext("beans.xml");
  21. UserServiceImpl service = (UserServiceImpl) ctx.getBean("userService");
  22.  
  23. // 创建U实例
  24. User u = new User();
  25. u.setUsername("东北大亨");
  26. u.setPassword("123456");
  27. service.add(u);
  28. logger.info("insert sucessful end! ");
  29. }
  30. }

(7)、配置文件

  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <beans xmlns="http://www.springframework.org/schema/beans"
  3. xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  4. xsi:schemaLocation="http://www.springframework.org/schema/beans
  5. http://www.springframework.org/schema/beans/spring-beans-2.5.xsd">
  6. <bean id="u" class="com.northeasttycoon.dao.impl.UserDAOImpl"/>
  7. <bean id="userService" class="com.northeasttycoon.service.UserServiceImpl">
  8. <!-- 通过property元素 把U实例注册到userDAO中 -->
  9. <property name="userDAO">
  10. <ref bean="u"/>
  11. </property>
  12. <!-- 通过构造方法 把U实例注册到userDAO中 -->
  13. <!--<constructor-arg>
  14. <ref bean="u"/>
  15. </constructor-arg>-->
  16. </bean>
  17. </beans>

(8)、测试结果截图

Spring IOC(通过实例介绍,属性与构造方法注入)的更多相关文章

  1. spring原理案例-基本项目搭建 03 创建工程运行测试 spring ioc原理实例示例

    下面开始项目的搭建 使用 Java EE - Eclipse 新建一 Dynamic Web Project Target Runtime 选 Apache Tomcat 7.0(不要选 Apache ...

  2. Spring IOC源代码具体解释之容器依赖注入

    Spring IOC源代码具体解释之容器依赖注入 上一篇博客中介绍了IOC容器的初始化.通过源代码分析大致了解了IOC容器初始化的一些知识.先简单回想下上篇的内容 加载bean定义文件的过程.这个过程 ...

  3. Spring.Net 简单实例-02(属性注入)

    说明:接续Spring.Net 简单实例-01(IOC) 话不多说看操作 1:为UserInfo添加属性 2: 修改App.config中代码 <?xml version="1.0&q ...

  4. Spring IOC的核心机制:实例化与注入

    上文我们介绍了IOC和DI,IOC是一种设计模式,DI是它的具体实现,有很多的框架都有这样的实现,本文主要以spring框架的实现,来看具体的注入实现逻辑. spring是如何将对象加入容器的 spr ...

  5. 使用Spring IOC容器引用外部属性文件

    一.引用外部属性文件 1.编写属性文件,以键值对形式存储,并放置在类路径(src)下 jdbc.jdbcUrl=jdbc:mysql://localhost:3306/BOOKSTORE?rewrit ...

  6. Spring.Net学习笔记(4)-属性及构造器注入

    一.开发环境 操作系统:Win10 编译器:VS2013 .Net版本:.net framework4.5 二.涉及程序集 Spring.Core.dll:1.3.1 Common.Logging.d ...

  7. 实现spring IOC的常见二种方法 setter注入与构造器注入

    案例: beans.xml配置 <?xml version="1.0" encoding="UTF-8"?><beansxmlns=" ...

  8. java的Spring学习1--spring引用及属性(setter,getter)注入

    1.目录结构 项目->src->main->java->com.test.ppmoney 设置java文件夹为代码  在Project Structure 里的 Modules ...

  9. Spring:源码解读Spring IOC原理

    Spring IOC设计原理解析:本文乃学习整理参考而来 一. 什么是Ioc/DI? 二. Spring IOC体系结构 (1) BeanFactory (2) BeanDefinition 三. I ...

随机推荐

  1. js中typeof的用法汇总

  2. Linux用ps命令查找进程PID再用kill命令终止进程的方法

    使用linux操作系统,难免遇到一些软件"卡壳"的问题,这时就需要使用linux下强大的kill命令来结束相关进程.这在linux系统下是极其容易的事情,你只需要kill xxx即 ...

  3. Linux Shell常用技巧

    转载自http://www.cnblogs.com/stephen-liu74/ 一.    特殊文件: /dev/null和/dev/tty Linux系统提供了两个对Shell编程非常有用的特殊文 ...

  4. dmz主机就是DNAT功能的体现

    端口映射和DMZ是提供内网和外网映射的,具体各自如下:DMZ:就相当于DNAT(Destination NAT),只对目的IP地址做地址转换.也就是说,收到目的IP为自己WAN口的包,统统转发给内网的 ...

  5. UVa 10192 - Vacation &amp; UVa 10066 The Twin Towers ( LCS 最长公共子串)

    链接:UVa 10192 题意:给定两个字符串.求最长公共子串的长度 思路:这个是最长公共子串的直接应用 #include<stdio.h> #include<string.h> ...

  6. navigationItem的设置和titleView的设置

    设置导航栏中间的标题 self.navigationItem.title = @"title"; 设置导航栏的主题颜色 self.navigationBar.barTintColo ...

  7. goruntine

    一.出让时间片 runtime.Gosched() 二.同步锁 Go语言包中的sync包提供了两种锁类型:sync.Mutex和sync.RWMutex.Mutex是最简单的一种锁类型,同时也比较暴力 ...

  8. vuex简单示例

    一.vuex是什么,解决了什么问题? 官方解释是:Vuex 是一个专为 Vue.js 应用程序开发的状态管理模式.它采用集中式存储管理应用的所有组件的状态,并以相应的规则保证状态以一种可预测的方式发生 ...

  9. Layer 初始

    Layer 初始 介绍:很不错的一个弹出框解决方案 丰富多样的Web弹出层组件,可轻松实现Alert/Confirm/Prompt/普通提示/页面区块/iframe/tips等等几乎所有的弹出交互.目 ...

  10. 分组password算法

    代换,S盒.扩散和混淆,这些概念构成了分组password学的基础. 假设明文和密文的分组长度都为n比特,则明文的每个分组都有2n个可能的取值; 代换: 为使加密运算可逆(即解密运算可行),明文的每个 ...