Spring IOC(通过实例介绍,属性与构造方法注入)
概括说明:下面通过实例介绍下属性方法注入、构造方法注入
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(通过实例介绍,属性与构造方法注入)的更多相关文章
- spring原理案例-基本项目搭建 03 创建工程运行测试 spring ioc原理实例示例
下面开始项目的搭建 使用 Java EE - Eclipse 新建一 Dynamic Web Project Target Runtime 选 Apache Tomcat 7.0(不要选 Apache ...
- Spring IOC源代码具体解释之容器依赖注入
Spring IOC源代码具体解释之容器依赖注入 上一篇博客中介绍了IOC容器的初始化.通过源代码分析大致了解了IOC容器初始化的一些知识.先简单回想下上篇的内容 加载bean定义文件的过程.这个过程 ...
- Spring.Net 简单实例-02(属性注入)
说明:接续Spring.Net 简单实例-01(IOC) 话不多说看操作 1:为UserInfo添加属性 2: 修改App.config中代码 <?xml version="1.0&q ...
- Spring IOC的核心机制:实例化与注入
上文我们介绍了IOC和DI,IOC是一种设计模式,DI是它的具体实现,有很多的框架都有这样的实现,本文主要以spring框架的实现,来看具体的注入实现逻辑. spring是如何将对象加入容器的 spr ...
- 使用Spring IOC容器引用外部属性文件
一.引用外部属性文件 1.编写属性文件,以键值对形式存储,并放置在类路径(src)下 jdbc.jdbcUrl=jdbc:mysql://localhost:3306/BOOKSTORE?rewrit ...
- Spring.Net学习笔记(4)-属性及构造器注入
一.开发环境 操作系统:Win10 编译器:VS2013 .Net版本:.net framework4.5 二.涉及程序集 Spring.Core.dll:1.3.1 Common.Logging.d ...
- 实现spring IOC的常见二种方法 setter注入与构造器注入
案例: beans.xml配置 <?xml version="1.0" encoding="UTF-8"?><beansxmlns=" ...
- java的Spring学习1--spring引用及属性(setter,getter)注入
1.目录结构 项目->src->main->java->com.test.ppmoney 设置java文件夹为代码 在Project Structure 里的 Modules ...
- Spring:源码解读Spring IOC原理
Spring IOC设计原理解析:本文乃学习整理参考而来 一. 什么是Ioc/DI? 二. Spring IOC体系结构 (1) BeanFactory (2) BeanDefinition 三. I ...
随机推荐
- apache 返回的状态码304
博客转载:http://baike.baidu.com/link?url=jhw62dpK66WD7EQFKWEhVQs_jPeFKIUegnA6 如果客户端发送了一个带条件的GET 请求且该请求已被 ...
- apache 启动脚本加入系统服务列表
第一步:cp /usr/local/apache2/bin/apachectl /etc/init.d/httpd第二步:vim /etc/init.d/httpd在第一行#!/bin/sh下增加两行 ...
- C源程序到可执行文件的四个过程
C源程序到可执行文件的四个过程 1.预处理:预编译器执行.譬如C中的宏定义就是由预编译器处理,注释等也是由预编译器处理的 gcc -E -hello.c -o hello.i 2.编译:编译器来执行. ...
- linux:ping不通www.baidu.com
如果某台Linux服务器ping不通域名, 如下提示: [root@localhost ~]# ping www.baidu.com ping: unknown host www.baidu.com ...
- 转: 使用 Velocity 模板引擎快速生成代码
from:https://www.ibm.com/developerworks/cn/java/j-lo-velocity1/ 评注: 1. velocity 的基本语法 2. 生成代码的用法.
- 命令行设置IE代理
IE代理可以在注册表中设置,所以用DOS修改注册表,可以达到目的.方法一:注册表文件:REGEDIT4[HKEY_CURRENT_USER\Software\Microsoft\Windows\Cur ...
- IDEA如何打包可运行jar的一个问题
转载:http://bglmmz.iteye.com/blog/2058785 背景: 有时候,我们会用IDEA来开发一些小工具,需要打成可运行的JAR包:或者某些项目不是WEB应用,纯粹是后台应用, ...
- [CSS3]移动Web开发系列之CSS3增强型选择器
css3是移动Web开发的主要技术之中的一个.当前.CSS3技术最适合在移动Web开发中使用的特性有增强的选择器.阴影.强大的背景设置 .圆角边框 接下来我们主要解说增强型的选择器.主要分两种,属性选 ...
- 使用ByteRef加速String类型DocValues的载入
眼下商户索引DocValues很大,warmup时花费70-80秒(在beta环境),有62秒在载入DocValues,发现当中有54秒时间在载入string docvalues,string doc ...
- JavaScript匿名函数与托付
<1> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <!-- C#匿名函数--& ...