Spring入门,理论推导
概述
- 解决企业应用开发的复杂性
- 使现有的技术更加容易使用
- 开源免费框架
- 轻量级,非入侵式的框架
- 控制反转(IOC),面向切面编程(AOP)
- 支持事务处理
- 整合其他框架
依赖
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-webmvc</artifactId>
<version>5.3.6</version>
</dependency>
组成
拓展
Spring-->Spring MVC-->SpringBoot-->SpringCloud
- Spring Boot
- 快速开发的脚手架
- 基于SpringBoot可以快速开发单个微服务
- 约定大于配置
- Spring Cloud
- 基于SpringBoot
IOC理论推导
-
UserDao
-
UserDaoImpl
-
UserService
-
UserServiceImpl
在我们之前业务中,用户的需求可能会影响我们原来的代码,要根据用户需求修改代码,代价大
利用set注入
//2.利用set进行动态实现值的注入
private UserDao userDao;
public void setUserDao(UserDao userDao) {
this.userDao = userDao;
}
- 之前,程序主动创建对象!控制权在程序员手上
- 使用set注入,程序不在具有主动性,而是变成了 被动的接收对象
这种思想,从本质上解决了问题,程序员不用再去管对象的创建了,系统耦合性大大降低,可以更加专注于业务的实现上!这是IOC原型,控制反转
IOC本质
对象由Spring创建,管理,装配
控制反转IOC(Inversion of Control),是一种设计思想,DI(依赖注入)是实现IOC的一种方法,也有人认为DI只是IOC的另一种说法。没有IOC的程序中 , 我们使用面向对象编程 , 对象的创建与对象间的依赖关系完全硬编码在程序中,对象的创建由程序自己控制,控制反转后将对象的创建转移给第三方,个人认为所谓控制反转就是:获得依赖对象的方式反转了。
控制反转是一种通过描述(XML或注解)并通过第三方去生产或获取特定对象的方式
配置
<?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">
<!--使用spring创建对象,这些对象称为Bean-->
<!--
java代码中:
类型 变量名 = new 类型();
Hello hello = new Hello();
spring中
id:变量名
class:类型
property:属相设置
-->
<bean id="hello" class="com.moral.pojo.Hello">
<property name="str" value="spring"/>
</bean>
</beans>
hello对象由spring创建,依赖注入就是用set来 进行注入
HelloSpring
-
beans.xml
<?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"> <bean id="userDaoMysqlImpl" class="com.morl.dao.UserDaoMysqlImpl"/> <bean id="userDaoOracleImpl" class="com.morl.dao.UserDaoOracleImpl"/> <!--ref:引用spring创建好的对象-- <bean id="userServiceImpl" class="com.morl.service.UserServiceImpl"> <property name="userDao" ref="userDaoMysqlImpl"/> </bean> </beans>
-
test
ApplicationContext context = new ClassPathXmlApplicationContext("beans.xml"); UserServiceImpl userServiceImpl = (UserServiceImpl) context.getBean("userServiceImpl"); userServiceImpl.getUser();
以后根据需求,只修改xmL配置文件即可
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY