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

1、源码结构图

2、代码介绍

(1)、Dao接口 :UserDAO

(2)、Dao接口实现:UserDAOImpl

(3)、实体类:User

(4)、服务层接口:UserService

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

(6)、测试主类:UserServiceTest

3、源代码

(1)、Dao接口 :UserDAO

package com.northeasttycoon.dao;

import com.northeasttycoon.model.User;

/**
* @author tycoon
*/
public interface UserDAO { public void save(User user);
}

(2)、Dao接口实现:UserDAOImpl

package com.northeasttycoon.dao.impl;

import com.northeasttycoon.dao.UserDAO;
import com.northeasttycoon.model.User;
/**
* @author tycoon
*/
public class UserDAOImpl implements UserDAO { // 保存数据方法
public void save(User user) { System.out.println("username:"+user.getUsername() +" ,userpassword:"+user.getPassword()+ " ,saved in Oracle!");
System.out.println(user.getUsername() + " saved in DB2!");
}
}

(3)、实体类:User

package com.northeasttycoon.model;

/**
* 用户实体类
* @author tycoon
*
*/
public class User { private String username;
private String password; 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;
}
}

(4)、服务层接口:UserService

package com.northeasttycoon.service;

import com.northeasttycoon.model.User;

/**
* 服务层接口
* @author tycoon
*
*/
public interface UserService { //处理新增用户业务逻辑
public void add(User user);
}

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

package com.northeasttycoon.service;

import com.northeasttycoon.dao.UserDAO;
import com.northeasttycoon.model.User; /**
* 服务层接口实现类
* @author tycoon
*/
public class UserServiceImpl { // 属性注册方式实现方法注入
private UserDAO userDAO; public void add(User user) {
userDAO.save(user);
} public UserDAO getUserDAO() {
return userDAO;
} public void setUserDAO(UserDAO userDAO) {
this.userDAO = userDAO;
} // 构造方法注入
// public UserServiceImpl(UserDAO userDAO) {
// super();
// this.userDAO = userDAO;
// }
}

(6)、测试主类:UserServiceTest

package com.northeasttycoon.service.test;

import org.apache.log4j.Logger;
import org.junit.Test;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext; import com.northeasttycoon.model.User;
import com.northeasttycoon.service.UserServiceImpl; // 测试类
public class UserServiceTest { final static Logger logger = Logger.getLogger(UserServiceTest.class); @Test
public void testAdd() throws Exception {
logger.info("insert sucessful start! ");
// 创建容器
ApplicationContext ctx = new ClassPathXmlApplicationContext("beans.xml");
UserServiceImpl service = (UserServiceImpl) ctx.getBean("userService"); // 创建U实例
User u = new User();
u.setUsername("东北大亨");
u.setPassword("123456");
service.add(u);
logger.info("insert sucessful end! ");
}
}

(7)、配置文件

<?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 id="u" class="com.northeasttycoon.dao.impl.UserDAOImpl"/>
<bean id="userService" class="com.northeasttycoon.service.UserServiceImpl">
<!-- 通过property元素 把U实例注册到userDAO中 -->
<property name="userDAO">
<ref bean="u"/>
</property>
<!-- 通过构造方法 把U实例注册到userDAO中 -->
<!--<constructor-arg>
<ref bean="u"/>
</constructor-arg>-->
</bean>
</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. Python中将打印输出日志文件

    一. 利用sys.stdout将print行导向到你定义的日志文件中,例如: import sys # make a copy of original stdout route stdout_back ...

  2. 信号驱动IO

    [1]信号驱动IO 应用程序:1)应用程序要捕捉SIGIO信号           signal(SIGIO, handler); 2)应用程序要指定进程为文件的属主,设置当前的文件描述为当前的调用进 ...

  3. ES里关于数组的拓展

    一.静态方法 在ES6以前,创建数组的方式主要有两种,一种是调用Array构造函数,另一种是用数组字面量语法,这两种方法均需列举数组中的元素,功能非常受限.如果想将一个类数组对象(具有数值型索引和le ...

  4. xpath节点匹配简易教程

    2017-03-23 非本人原创,只是写爬虫时很有用,就留下了 <A id="a1"> <B id="b1"> <C id=&qu ...

  5. 2017.4.18 putty和fileZilla的使用

    putty:用来连接环境. fileZila:用来传递文件. (1)连接环境 centOS 7 点击putty.exe,输入地址.用户名.密码进行连接.端口输入22.用账号和密码登录. 进入到目录下, ...

  6. hibernate学习系列-----(2)hibernate核心接口和工作机制

    在上一篇文章hibernate学习系列-----(1)开发环境搭建中,大致总结了hibernate的开发环境的搭建步骤,今天,我们继续了解有关hibernate的知识,先说说这篇文章的主要内容吧: C ...

  7. 倍福TwinCAT(贝福Beckhoff)基础教程2.0 TwinCAT常用快捷键

    F5:运行程序 CTRL+F5:停止运行当前程序 F12:登出 F11:登录 CTRL+F7:强制写入数值     更多教学视频和资料下载,欢迎关注以下信息: 我的优酷空间: http://i.you ...

  8. JAVA Eclipse如何设置编程环境字体

    窗口-首选项-常规-外观-颜色和字体,文本字体  

  9. Linux下的非阻塞IO(一)

    非阻塞IO是相对于传统的阻塞IO而言的. 我们首先需要搞清楚,什么是阻塞IO.APUE指出,系统调用分为两类,低速系统调用和其他,其中低速系统调用是可能会使进程永远阻塞的一类系统调用.但是与磁盘IO有 ...

  10. JavaScript字符编解码

    示例代码: <!DOCTYPE html> <html lang="zh"> <head> <meta charset="UTF ...