Spring入门之使用 spring 的 IOC 解决程序耦合(Spring环境搭建)(03-01)
3.1 案例的前期准备
1.使用的案例是:账户的业务层和持久层的依赖关系解决(就是有两个账户实现转账之类的事情,后期继续用这个案例)
2.准备环境:在开始 spring 的配置之前,我们要先准备一下环境。(由于这里是使用 spring 解决依赖关系,并不是真正的要做增删改查操作,所以此时没必要写实体类。并且在此处使用的是 java 工程,不是 java web 工程。)
3.1.1 准备 spring 的开发包
官网:http://spring.io/
下载地址:http://repo.springsource.org/libs-release-local/org/springframework/spring
解压:(Spring 目录结构:)
- docs :API 和开发规范.
- libs :jar 包和源码.
- schema :约束.
我们使用的版本是 spring5.0.2。
- 特别说明:
spring5 版本是用 jdk8 编写的,所以要求我们的 jdk 版本是 8 及以上。同时 tomcat 的版本要求 8.5 及以上。(maven项目)
3.1.2 创建业务层接口和实现类
/**
* 账户的业务层接口
*/
public interface IAccountService {
/**
* 保存账户(此处只是模拟,并不是真的要保存)
*/
void saveAccount();
}
/**
* 账户的业务层实现类
*/
public class AccountServiceImpl implements IAccountService {
private IAccountDao accountDao = new AccountDaoImpl();//此处的依赖关系有待解决
@Override
public void saveAccount() {
accountDao.saveAccount();
}
}
3.1.3 创建持久层接口和实现类
/**
* 账户的持久层接口
*/
public interface IAccountDao {
/**
* 保存账户
*/
void saveAccount();
}
/**
* 账户的持久层实现类
*/
public class AccountDaoImpl implements IAccountDao {
@Override
public void saveAccount() {
System.out.println("保存了账户");
}
}
3.2 基于 XML 的配置(入门案例)[掌握]
3.2.1 第一步:拷贝必备的 jar 包到工程的 lib 目录中

3.2.2 第二步:在类的根路径下创建一个任意名称的 xml 文件(不能是中文)

接着给配置文件导入约束:
/spring-framework-5.0.2.RELEASE/docs/spring-framework-reference/html5/core.html
(这个是xml配置文件开头约束网页,介意在浏览器添加书签收藏查的时候比较方便。进去网页后点击Core然后Ctrl+F搜索你要的相关约束。)
比如这个时候需要的:

<?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.xsd">
</beans>
3.2.3 第三步:让 spring 管理资源,在配置文件中配置 service 和 dao
(1)配置文件里的三个标签:
bean 标签:用于配置让 spring 创建对象,并且存入 ioc 容器之中
id 属性:对象的唯一标识。
class 属性:指定要创建对象的全限定类名
<!-- 配置 service -->
<bean id="accountService" class="com.itheima.service.impl.AccountServiceImpl">
</bean>
<!-- 配置 dao -->
<bean id="accountDao" class="com.itheima.dao.impl.AccountDaoImpl"></bean>
3.2.4 测试配置是否成功
(后期学MyBatis就用test注解来测试)
/**
* 模拟一个表现层
*/
public class Client {
/**
* 使用 main 方法获取容器测试执行
*/
public static void main(String[] args) {
//1.使用 ApplicationContext 接口,就是在获取 spring 容器
//后面会介绍ApplicationContext 接口
ApplicationContext ac = new ClassPathXmlApplicationContext("bean.xml");
//2.根据 bean 的 id 获取对象
IAccountService aService = (IAccountService) ac.getBean("accountService");
System.out.println(aService);
IAccountDao aDao = (IAccountDao) ac.getBean("accountDao");
System.out.println(aDao);
}
}
运行结果·:成功

Spring入门之使用 spring 的 IOC 解决程序耦合(Spring环境搭建)(03-01)的更多相关文章
- Spring(一)--作用、IOC容器细节、搭配环境、Spring实验
1.Spring作用: 1.生态体系庞大,全能型选手![springmvc是其一个子模块,jdbcTemplate能直接操作数据库!] 2.将其他组件粘合在一起 比如将S ...
- 《Node.js入门》CentOS 6.5下Node.js Web开发环境搭建笔记
近期想尝试一下英特尔的基于WebRTC协同通信开发套件,所以须要在本地搭建Node.js Web的开发測试环境. 这里讲的是CentOS 下的搭建方法.使用Windows的小伙伴请參考: <No ...
- Spring注解@Resource和@Autowired区别对比、spring扫描的默认bean的Id、程序获取spring容器对象
-------------------------注解扫面的bean的ID问题-------------------------- 0.前提需要明白注解扫描出来的bean的id默认是类名首字母小写,当 ...
- Ionic 入门与实战之第二章第二节:Ionic 环境搭建之 Ionic Lab 使用
原文发表于我的技术博客 本文是「Ionic 入门与实战」系列连载的第二章第二节,主要对 Ionic Lab 工具作了介绍,并讲解了其使用方法,这也是一个开发 Ionic 比较好的调试工具. 原文发表于 ...
- Ionic 入门与实战之第二章第一节:Ionic 环境搭建之开发环境配置
原文发表于我的技术博客 本文是「Ionic 入门与实战」系列连载的第二章第一节,主要对 Ionic 的开发环境配置做了简要的介绍,本文介绍的开发环境为 Mac 系统,Windows 系统基本类似,少许 ...
- 解决cocos2dx 打包lua环境搭建问题( ImportError: No module named Cheetah.Template)
将c++ 封装成lua调用时,显示一下错误: PYTHON_BIN not defined, use current python. generating userconf.ini... Genera ...
- spring 入门篇
spring 入门篇 相对于Hibernate(冬眠),Spring(春天),具有更多的诗意与希望的感觉,是为了解决传统J2EE开发效率过低.开发商之间不统一.没有真正实现“写一次到处 ...
- SSM(spring mvc+spring+mybatis)学习路径——1-1、spring入门篇
目录 1-1 Spring入门篇 专题一.IOC 接口及面向接口编程 什么是IOC Spring的Bean配置 Bean的初始化 Spring的常用注入方式 专题二.Bean Bean配置项 Bean ...
- Spring入门之生命周期
好几日没有读东西了,今天本来要读mybatis原理部分,但是看到作者讲,只是学会用不用学那么深,遂直接开干spring,工作中一直用springboot,框架都是领导搭好的,每天的任务就是增删改查,挺 ...
- 【Spring】Spring 入门
Spring 入门 文章源码 Spring 概述 Spring Spring 是分层的 Java SE/EE 应用全栈式轻量级开源框架,以 IOC(Inverse Of Control,反转控制)和 ...
随机推荐
- openssl命令学习笔记--第一周
开始学习openssl命令,目前处于啥也不懂的状态.因为不是所有命令都能找到详尽的使用方法(部分可能因为版本问题,甚至找不到对应功能).仅为我那可怜兮兮的7条命令做个学习记录. 一.在linux环境下 ...
- 个人css样式
<style> .div1{ width:200px; height:100px; border:1px solid #dddddd; transition:all 0.5s linear ...
- jQuery 中 remove删除了某个div 再添加回来
用下面的例子吧删除之前先保存dom<div id="div1"><div id="div2"></div></div& ...
- 国产电源芯片DP4054 软硬件兼容TP4054 规格书资料
DP4054 是一款完整的采用恒定电流/恒定电压单 节锂离子电池充电管理芯片.其SOT小封装和较少的外部元件数目使其成为便携式应用的理想器件,DP4054 可以适合USB 电源和适配器电源工作.跟进口 ...
- springcloud(四) - 服务治理Hystrix
功能介绍 调用下游服务,下游因为超时.异常等原因报错的时候.hystrix保证不会出现整体异常,避免雪崩.主要策略是服务的熔断.降级 应用场景 降级:异常.超时.熔断等情况发生后,不让客户端等待返 ...
- Linux系统时间的设定以及自带的timesync时间同步
1.三个阶段的系统时间设定 1.1 内核启动阶段 这里是在menuconfig文件配置RTC设定系统时间选项. CONFIG_RTC_HCTOSYS_DEVICE="rtc1&qu ...
- springboot thymeleaf常用标签
xmlns:th="http://www.w3.org/1999/xhtml" <tr th:each="user,i : ${list}" th:cla ...
- R语言Apriori关联规则、kmeans聚类、决策树挖掘研究京东商城网络购物用户行为数据可视化|附代码数据
全文链接:http://tecdat.cn/?p=30360 最近我们被客户要求撰写关于网络购物用户行为的研究报告,包括一些图形和统计输出. 随着网络的迅速发展,依托于网络的购物作为一种新型的消费方式 ...
- linux用户权限与组
less /etc/passwd 查看用户文件 passwd tom[用户名] 修改密码 useradd suguihua[用户名] 新增用户名 vim /etc/passwd 将xiaoqian ...
- form 表单中input 使用disable属性
记录一下今天踩得坑. 在使用form表单提交的时候,input用了disable属性,在查找了好久之后,找到原因,万万没想到是因为disable. 修改方法:disable改为readonly dis ...