首页
找靠谱产品
找解决方案
找靠谱公司
找案例
找对的人
专家智库
悬赏任务
SAAS
ToB门户
了解全球最新的ToB事件
论坛
潜水/灌水快乐,沉淀知识,认识更多同行。
ToB圈子
加入IT圈,遇到更多同好之人。
微博
Follow
记录
Doing
博客
Blog
文库
业界最专业的IT文库,上传资料也可以赚钱
下载
分享
Share
排行榜
Ranklist
相册
Album
应用中心
qidao123.com技术社区-IT企服评测·应用市场
»
论坛
›
软件与程序人生
›
后端开发
›
.Net
›
Spring简介-IOC
返回列表
发新帖
Spring简介-IOC
[复制链接]
发表于 2023-3-9 21:40:42
|
显示全部楼层
|
阅读模式
目录
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的原型!
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!
继续阅读请点击广告
本帖子中包含更多资源
您需要
登录
才可以下载或查看,没有账号?
立即注册
×
回复
使用道具
举报
返回列表
杀鸡焉用牛刀
+ 我要发帖
×
登录参与点评抽奖,加入IT实名职场社区
去登录
微信订阅号
微信服务号
微信客服(加群)
H5
小程序
快速回复
返回顶部
返回列表