IOC入门1
1.配置文件
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:context="http://www.springframework.org/schema/context"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.0.xsd
http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-2.5.xsd"> <!--bean的名字是u, id是名字为u的对象 -->
<bean id="u" class="com.test.spring.dao.UserDAOImpl" /> <!-- property中的userDAO参考的bean(u) -->
<bean id="userService" class="com.test.spring.service.UserServiceImpl">
<property name="userDAO" ref="u" />
</bean>
</beans>
2.bean实现
package com.test.spring.model;
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;
}
}
3.dao层接口实现
package com.test.spring.dao;
import com.test.spring.model.User;
public interface UserDAO {
public void save(User u);
public void delete();
}
4.dao层实现类实现
package com.test.spring.dao; import com.test.spring.model.User; /**
* 与数据库打交道,管理数据库,将数据屏蔽
* @author Administrator
*
*/
public class UserDAOImpl implements UserDAO
{ @Override
public void save(User u) {
System.out.println("saved!!!");
} @Override
public void delete() {
System.out.println("delete!!!");
} }
5.service层接口编写
package com.test.spring.service; import com.test.spring.dao.UserDAO;
import com.test.spring.model.User; /**
* 管理层,与Bean层打交道,和与数据库管理层DAO层打交道
* @author Administrator
*
*/
public interface UserService { public void add(User u);
}
6.service实现类实现
package com.test.spring.service; import com.test.spring.dao.UserDAO;
import com.test.spring.dao.UserDAOImpl;
import com.test.spring.model.User; /**
* 负责是的业务逻辑,而DAO层只负责数据库层
* @author Administrator
*
*/
public class UserServiceImpl implements UserService
{ //可以调用UserDAO将User存入到数据库中,所以要new一个UserDAOImpl的引用
private UserDAO userDAO = new UserDAOImpl(); public UserDAO getUserDAO() {
return userDAO;
} public void setUserDAO(UserDAO userDAO) {
this.userDAO = userDAO;
} public void add(User u) {
this.userDAO.save(u);
}
}
7json测试类编写
package test.test; import java.lang.reflect.Proxy; import org.junit.Test;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext; import com.test.spring.aop.LogInterceptor;
import com.test.spring.dao.UserDAO;
import com.test.spring.dao.UserDAOImpl;
import com.test.spring.model.User;
import com.test.spring.service.UserServiceImpl; public class UserServiceImplTest { /**
* @throws Exception
* @Test 叫注解
*/ public void testAdd() throws Exception { //ApplicationContext实现了生命周期
ApplicationContext factory = new ClassPathXmlApplicationContext("beans.xml"); UserServiceImpl service = (UserServiceImpl)factory.getBean("userService"); /**
* 这里体现了IOC(控制反转)的思想,控制的是它的接口(抽象),
* 而不是实现,容器里控制这它的实现
*/
UserDAO userDAO = (UserDAO)factory.getBean("u");
service.setUserDAO(userDAO);
User u = new User();
u.setPassword("zhangsan");
u.setUsername("zhangsan"); //这里体现了DI(依赖注入)的思想,将u中的容器中u的class注入到service这个bean中
service.add(u);
}
@Test
public void testProxy()
{
UserDAO userDAO = new UserDAOImpl();
LogInterceptor li = new LogInterceptor();
li.setTarget(userDAO); //li.setTarget(userDAO);
//newProxyInstance(代理的对象的class,产生被代理对象实现的接口,处理)
//由于它实现了UserDAO接口,所以强制转化成。。。
UserDAO userDAOProxy = (UserDAO)Proxy.newProxyInstance(userDAO.getClass().getClassLoader(), new Class[]{UserDAO.class},li);
//userDAOProxy.delete();
userDAOProxy.save(new User()); } }
所用的包

IOC入门1的更多相关文章
- Spring框架[一]——spring概念和ioc入门(ioc操作xml配置文件)
Spring概念 spring是开源的轻量级框架(即不需要依赖其他东西,可用直接使用) spring核心主要两部分 aop:面向切面编程,扩展功能不是修改源代码来实现: ioc:控制反转,比如:有一个 ...
- Spring入门1. IoC入门实例
Spring入门1. IoC入门实例 Reference:Java EE轻量级解决方案——S2SH 前言: 之前学习过关于Spring的一点知识,曾经因为配置出现问题,而总是被迫放弃学习这些框架技术, ...
- 【Spring】---【IOC入门案例】
第一步:导入Jar包 第二步:创建类,在类里面创建方法 public class User { public void add(){ System.out.println("-------- ...
- 二 Spring的IOC入门,环境搭建,Spring测试类
IOC:inversion of Control 控制反转,Spring框架的核心.削减计算机程序的耦合问题,把对象(例如JDBC)的创建权交给Spring. IOC的两种类型: 依赖注入: 依赖查 ...
- 1、Spring简介及IOC入门案例
一.Spring框架介绍 1.介绍 Spring框架是由于软件开发的复杂性而创建的.Spring使用的是基本的JavaBean来完成以前只可能由EJB完成的事情.然而,Spring的用途不仅仅限于服务 ...
- IOC入门
Spring六大模块 1.SpringCore spring的核心功能:IOC容器,解决对象的创建及依赖关系 2.SpringWeb spring对Web模块的支持 3.SpringDAO s ...
- Spring IoC入门
------------------siwuxie095 Spring IoC 环境搭建 1.先下载相关库文件,下载链接 ...
- Spring初识及其IOC入门
一.框架 框架是一些类和接口的集合,它一个半成品,已经对基础的代码进行了封装并提供相应的API,开发者在使用框架时直接调用封装好的api可以省去很多代码编写,从而提高工作效率和开发速度. 二.Spri ...
- Spring.Net的IOC入门
1.构造器注入 namespace Spring.Net { class Program { //构造器注入 static void Main(string[] args) { IApplicatio ...
随机推荐
- Java创建和解析Json数据方法(二)——org.json包的使用
(二)org.json包的使用 1.简介 工具包org.json.jar,是一个轻量级的,JAVA下的json构造和解析工具包,它还包含JSON与XML, HTTP headers, Cookie ...
- python中 urllib, urllib2, httplib, httplib2 几个库的区别
转载 摘要: 只用 python3, 只用 urllib 若只使用python3.X, 下面可以不看了, 记住有个urllib的库就行了 python2.X 有这些库名可用: urllib, urll ...
- VS"后生成事件" 菜单的使用
网上有很多的文章都在介绍怎样创建一个自己定义的dll文件,以及怎样使用一个dll文件,在此不在赘述.本文主要介绍怎样使用VS2008的"生成后事件"的命令行,将一个dll文件直接复 ...
- DAO 层实现
一.实验介绍 1.1 实验内容 本节课程主要利用 MyBatis 框架实现 DAO 层. 1.2 实验知识点 MyBatis 框架 MySQL 1.3 实验环境 JDK1.8 Eclipse Java ...
- 百科知识 tar文件如何打开
tar 是什么文件格式,是干什么用的,用什么打开 tarball压缩格式,源于Linux的一个指令,Windows上可以用WinRAR打开 Linux的实用程序tar最初是为了制作磁带存档而设计的(把 ...
- PS 基础知识 .atn文件如何使用
ANT文件就是Frames.atn类动作文件 具体安装步骤如下 : (以CS4 为例) 启动Photoshop 点击"窗口" 选"动作" 在弹出的动作面板里,点 ...
- NYOJ 353 3D dungeon 【bfs】
题意:给你一个高L长R宽C的图形.每个坐标都能够视为一个方格.你一次能够向上.下.左,右,前,后任一方向移动一个方格, 可是不能向有#标记的方格移动. 问:从S出发能不能到达E,假设能请输出最少的移动 ...
- hadoop安全之hftp
hftp默认是打开的,同意以浏览器的方式訪问和下载文件,以此方式下,能够读取全部文件,留下了安全隐患. 測试例如以下 /user/hive/warehouse/cdntest.db/selfreado ...
- bootstrap3分页
<%@ page language="java" import="java.util.*" pageEncoding="utf-8"% ...
- canvas转盘抽奖的实现(二)
本篇是<canvas转盘抽奖的实现(一)>的另一种实现方法,主要通过css3的transform以及transition过渡来实现. // ' + r + '等奖'; } draw ...