论坛
潜水/灌水快乐,沉淀知识,认识更多同行。
ToB圈子
加入IT圈,遇到更多同好之人。
朋友圈
看朋友圈动态,了解ToB世界。
ToB门户
了解全球最新的ToB事件
博客
Blog
排行榜
Ranklist
文库
业界最专业的IT文库,上传资料也可以赚钱
下载
分享
Share
导读
Guide
相册
Album
记录
Doing
搜索
本版
文章
帖子
ToB圈子
用户
免费入驻
产品入驻
解决方案入驻
公司入驻
案例入驻
登录
·
注册
只需一步,快速开始
账号登录
立即注册
找回密码
用户名
Email
自动登录
找回密码
密码
登录
立即注册
首页
找靠谱产品
找解决方案
找靠谱公司
找案例
找对的人
专家智库
悬赏任务
圈子
SAAS
ToB企服应用市场:ToB评测及商务社交产业平台
»
论坛
›
软件与程序人生
›
后端开发
›
.Net
›
Spring简介-IOC
Spring简介-IOC
王海鱼
金牌会员
|
2023-3-9 21:42:05
|
显示全部楼层
|
阅读模式
楼主
主题
905
|
帖子
905
|
积分
2715
目录
1、Spring
1.1、简介
1.2、优点
1.3、组成
1.4、扩展
2、IOC理论推导
1、Spring
1.1、简介
Spring:春天----------->给软件行业带来了春天!
2002,首次推出了Spring框架的雏形:interf21框架!
Spring框架即以interface21框架为基础,经过重新设计,并不断丰富其内涵,于2004年3月24日发布了1.0正式版。
Rod Johnson ,Spring Framework创始人,悉尼大学音乐学博士,计算机学位
Spring理念:使现有的技术更加容易使用,本身就是一个大杂烩,整合了现有的技术框架!
SSH: Struct2+Spring +Hibernate!
SSM: SpringMvc+Spring+Mybatis!
官网:
Spring Framework
官网下载地址:
repo.spring.io
GitHub:
GitHub - spring-projects/spring-framework: Spring Framework
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-webmvc</artifactId>
<version>5.2.0.RELEASE</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-jdbc</artifactId>
<version>5.2.0.RELEASE</version>
</dependency>
ctrl+shift+o 导入
复制代码
1.2、优点
Spring使一个开源的免费的框架(容器)!
Spring使一个轻量级的、非入侵式的框架!
控制反转(IOC),面向切面编程(AOP)!
支持事务的处理,对框架整合的支持!
总结一句话:Springjiushi+一个轻量级的控制反转(IOC)和面向切面编程的框架!
1.3、组成
1.4、扩展
在Spring的官网有这个介绍:现代化的java开发!说白就是基于Spring的开发!
Spring Boot
一个快速开发的脚手架
基于SpingBoot可以快速的开发单个微服务
约定大于配置!
Spring Cloud
SpringCloud式基于SpringBoot实现的
因为现在大多数公司都在使用SpringBoot进行快速开发,学习SpringBoot的前提,需要完全掌握Spring以及SpringMVC!承上启下的作用!
弊端:发展了太久之后,违背了原来的理念!配置十分繁琐,人称“ 配置地狱!”
2、IOC理论推导
UserDao接口
package com.jan.dao;
public interface UserDao {
void getUser();
}
复制代码
UserDaoImpl实现类
package com.jan.dao;
public class UserDaoImpl implements UserDao{
public void getUser() {
System.out.println("默认获取用户的数据!");
}
}
复制代码
UserService 业务接口
package com.jan.dao.service;
public interface UserService {
void getUser();
}
复制代码
UserService Impl 业务实现类
package com.jan.dao.service;
import com.jan.dao.UserDao;
import com.jan.dao.UserDaoImpl;
import com.jan.dao.UserDaoMysqlImpl;
import com.jan.dao.UserDaoOracleImpl;
public class UserServiceImpl implements UserService{
//增加了 UserDaoMysqlImpl 类,就必须来改变 UserServiceImpl 类 里面的源代码,
//如是很多类不得累死?解决的办法?
//private UserDao userDao = new UserDaoImpl();//对象写死了
// private UserDao userDao = new UserDaoMysqlImpl();//对象写死了
// private UserDao userDao = new UserDaoOracleImpl();//对象写死了
private UserDao userDao;
//利用set动态实现值的注入!!
public void setUserDao(UserDao userDao) {
this.userDao = userDao;
}
public void getUser() {
userDao.getUser();
}
}
复制代码
若是有其他新增加的Impl类
package com.jan.dao;
public class UserDaoMysqlImpl implements UserDao{
public void getUser() {
System.out.println("Mysql获取用户数据!");
}
}
复制代码
MyTest的实现
import com.jan.dao.UserDaoSqlserverImpl;
import com.jan.dao.service.UserService;
import com.jan.dao.service.UserServiceImpl;
public class MyTest {
public static void main(String[] args) {
//用户实际调用的是业务层,dao层它们不需要接触!
UserService userService = new UserServiceImpl();
((UserServiceImpl) userService).setUserDao(new UserDaoSqlserverImpl());
userService.getUser();
}
}
复制代码
在我们之前的业务中,用户的需求可能会影响我们原来的代码,我们需要根据用户的需求去修改原代码!如果程序代码量十分大,修改一次的成本代价十分昂贵!
我们使用了一个Set接口实现,已经发生了革命性的变化!
private UserDao userDao;
//利用set动态实现值的注入!!
public void setUserDao(UserDao userDao) {
this.userDao = userDao;
}
复制代码
之前,程序是主动创建对象!控制权在程序猿手上!
private UserDao userDao = new 8UserDaoMysqlImpl();//对象写死了
复制代码
使用set注入后,程序不再具有主动性,而是成了被动的接受对象!
这种思想,从本质上解决了问题,我们程序猿不用再去管理对象的创建了。系统的耦合性大大降低了,可以更加专注的在业务的实现上!这是IOC的原型!
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!
本帖子中包含更多资源
您需要
登录
才可以下载或查看,没有账号?
立即注册
x
回复
使用道具
举报
0 个回复
倒序浏览
返回列表
快速回复
高级模式
B
Color
Image
Link
Quote
Code
Smilies
您需要登录后才可以回帖
登录
or
立即注册
本版积分规则
发表回复
回帖并转播
回帖后跳转到最后一页
发新帖
回复
王海鱼
金牌会员
这个人很懒什么都没写!
楼主热帖
在Winform开发中,使用Async-Awati异步 ...
Vue 和 Django 前后端分离实践 (注册 ...
如何在 Vue 3 中使用<script lang=“t ...
一条SQL的执行原理
C#依赖注入(直白明了)讲解 一看就会系 ...
go中 for循环的坑
教务管理系统——数据库课程设计mysql+ ...
三篇学会MySQL数据库【查询详解】 ...
2023大数据面试总结
银河麒麟V10安装达梦数据库DM8 ...
标签云
存储
挺好的
服务器
快速回复
返回顶部
返回列表