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的更多相关文章

  1. Spring框架[一]——spring概念和ioc入门(ioc操作xml配置文件)

    Spring概念 spring是开源的轻量级框架(即不需要依赖其他东西,可用直接使用) spring核心主要两部分 aop:面向切面编程,扩展功能不是修改源代码来实现: ioc:控制反转,比如:有一个 ...

  2. Spring入门1. IoC入门实例

    Spring入门1. IoC入门实例 Reference:Java EE轻量级解决方案——S2SH 前言: 之前学习过关于Spring的一点知识,曾经因为配置出现问题,而总是被迫放弃学习这些框架技术, ...

  3. 【Spring】---【IOC入门案例】

    第一步:导入Jar包 第二步:创建类,在类里面创建方法 public class User { public void add(){ System.out.println("-------- ...

  4. 二 Spring的IOC入门,环境搭建,Spring测试类

    IOC:inversion of Control  控制反转,Spring框架的核心.削减计算机程序的耦合问题,把对象(例如JDBC)的创建权交给Spring. IOC的两种类型: 依赖注入: 依赖查 ...

  5. 1、Spring简介及IOC入门案例

    一.Spring框架介绍 1.介绍 Spring框架是由于软件开发的复杂性而创建的.Spring使用的是基本的JavaBean来完成以前只可能由EJB完成的事情.然而,Spring的用途不仅仅限于服务 ...

  6. IOC入门

    Spring六大模块 1.SpringCore  spring的核心功能:IOC容器,解决对象的创建及依赖关系 2.SpringWeb   spring对Web模块的支持 3.SpringDAO  s ...

  7. Spring IoC入门

    ------------------siwuxie095                                 Spring IoC 环境搭建         1.先下载相关库文件,下载链接 ...

  8. Spring初识及其IOC入门

    一.框架 框架是一些类和接口的集合,它一个半成品,已经对基础的代码进行了封装并提供相应的API,开发者在使用框架时直接调用封装好的api可以省去很多代码编写,从而提高工作效率和开发速度. 二.Spri ...

  9. Spring.Net的IOC入门

    1.构造器注入 namespace Spring.Net { class Program { //构造器注入 static void Main(string[] args) { IApplicatio ...

随机推荐

  1. Oracle PL/SQL块 多表查询(emp员工表、dept部门表、salgrade工资等级表)

    范例: 查询每个员工的编号,姓名,职位,工资,工资等级,部门名称 ●确定要使用的数据表 |- emp表:员工的编号.姓名.职位.工资 |- salgrade表:工资等级 |- dept表:部门名称 ● ...

  2. 好用的Python IDLE Sublime Text 3推荐

    Sublime Text 3 下载地址为 LINK, Sublime Text 3 is currently in beta. The latest build is 3114. 参考的激活方式为输入 ...

  3. FastDFS 使用经验分享

    原文:http://www.ttlsa.com/fastdfs/fastdfs-experience-sharing/ 应用背景 文件被上传到FastDFS后Storage服务端将返回的文件索引(FI ...

  4. Docker实战(一):基础命令

    # 在ubuntu中安装docker $ sudo apt-get install docker.io # 查看docker的版本信息 $ docker version # 查看安装docker的信息 ...

  5. gvim的常用编辑快捷键

    gvim的快捷键很多,很难记全,但是入门初期应该找过几种基本的命令 下面结合自己常用到的介绍下 光标跳转: 0:行首 $:行尾 e:下一个单词的结尾 w:下一个单词的开头 b:上一个单词 H:当前页面 ...

  6. treeList获取目录下的所有文件

    /// <summary>/// treeList获取目录下的所有文件/// </summary>public static void InitTreeListGetFiles ...

  7. fastjson中Map与JSONObject互换,List与JOSNArray互换的实现

    1.//将map转换成jsonObject JSONObject itemJSONObj = JSONObject.parseObject(JSON.toJSONString(itemMap)); 将 ...

  8. tcp ip协议笔记(1)——简单介绍

    前言 本人记性不佳,看书健忘,以此笔记来记录看书后自己所知所想,已达到加深对tcp ip的理解.本笔记不过我看完书后自己所写的总结,权当是书后复习. 一.为什么会有tcp ip协议        ...

  9. jquery的一点点认识

    概述 JQuery是继prototype之后又一个优秀的Javascript库.它是轻量级的js库 .它兼容CSS3,还兼容各种浏览器(IE 6.0+, FF 1.5+, Safari 2.0+, O ...

  10. cocosStudio中使用PageView,ListView和ScrollView

    晚上吃东西好像吃坏肚子了,.但是技术还要继续研究.最近工作中要使用CocosStudio做界面,好吧,不管对他有什么偏见,学习一下吧.这里主要记录一下三个控件的使用和说明.就是ScrollView,L ...