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 ...
随机推荐
- 3.eclipse中 maven打包web工程几种方式
1.右键项目-export 选择war file导出即可 2.第二种:右键项目-RUN AS -maven build..goals填入:clean package 第三种方式:右键项目.选择Debu ...
- Java随机数技巧-新手篇
package 向家康; import java.util.concurrent.ThreadLocalRandom; public class 练习21 { public static void m ...
- javascript 函数初探 (五)--- 几种类型的函数
即时函数: 目前我们已经讨论了匿名函数在回调时的应用.接下来,我们来看看匿名函数的另一种应用实例 --- javascript即时函数: 比如: ( function(){ alert('her'); ...
- C#遇见的函数
1.类Stopwatch 提供一组方法和属性,可用于准确地测量运行时间. 命名空间: System.Diagnostics Stopwatch timePerParse = Stopwatc ...
- 分布式服务框架选型:面对Dubbo,阿里巴巴为什么选择了HSF?
转载:http://www.sohu.com/a/141490021_268033 阿里巴巴集团内部使用的分布式服务框架 HSF(High Speed Framework,也有人戏称“好舒服”)已经被 ...
- Codeforces Round #313 (Div. 2) ABC
A http://codeforces.com/contest/560/problem/A 推断给出的数能否组成全部自然数. 水题 int a[1010]; bool b[1000010]; int ...
- react 监听 移动端 手机键盘 enter 事件
处理方法: (1)html书写 form标签中去掉action参数,定义onSubmit方法,如下所示: /** * 搜索框 组件 */ import React,{PureComponent} fr ...
- APP公布到应用市场(苹果APP STORE+安卓各大应用市场)
注意事项 1.应用要签名,为了以后可以顺利更新应用.要保持每次的签名一致,所以要妥善保管好签名数据. 2.进行公布測试,最好有个检查表,每次公布的时候进行核查. 苹果APP STORE 一.证书的导出 ...
- Solaris Samba服务器与DNS服务
用于文件传输的协议,类似于ftp,ssh,只是它比其他两个好用. Samba协议 NetBIOS :一种编程接口. SMB:server message block .主要作为Microsoft网络通 ...
- Solaris服务管理
远程登录协议 telnet \ssh 等.当然我们可以查看谁登录过我的系统,以及可以利用ftp记录日志. 一.SMF: 服务管理工具 优点:自动恢复意外终止的服务,支持服务的依赖关系,一个服务可以有多 ...