Spring学不会系列-Spring入门篇
程序员文章站
2022-04-16 16:01:34
Spring入门篇Spring概述什么是Spring?Spring是一个IOC和AOP的开源框架Spring为简化企业级应用开发而生,使用Spring可以使简单的JavaBean实现以前只有EJB才能实现的功能Spring是JavaSE/EE的一站式(FULL Stack)框架Web层:Spring MVC支持Service层:IOC Bean管理、事务管理支持Dao层:JDBC模板、ORM框架整合(Hibernate、Mybatis等等)支持方便解耦,简化开发Spring就是...
Spring入门篇
Spring概述
什么是Spring?
- Spring是一个IOC和AOP的开源框架
- Spring为简化企业级应用开发而生,使用Spring可以使简单的JavaBean实现以前只有EJB才能实现的功能
- Spring是JavaSE/EE的一站式(FULL Stack)框架
- Web层:Spring MVC支持
- Service层:IOC Bean管理、事务管理支持
- Dao层:JDBC模板、ORM框架整合(Hibernate、Mybatis等等)支持
- 方便解耦,简化开发
- Spring就是一个大工厂,可以将所有对象创建和依赖关系维护,交给Spring管理
- AOP编程的支持
- Spring提供面向切面编程,可以方便的实现对程序进行日记记录、权限拦截、运行监控等功能。
- 声明式事务的支持
- 只需要通过配置就可以完成对事务的管理,而无需手动编程
Spring的优点
- 方便程序的测试
- Spring对Junit4支持,可以通过注解方便的测试Spring程序
- 方便集成各种优秀框架
- Spring不排斥各种优秀的开源框架,其内部提供了对各种优秀框架(如:Struts、Hibernate、Mybatis等)的直接支持
- 降低JavaEE API的使用难度
- Spring对JavaEE开发中非常难用的一些API(JDBC、JavaMail、远程调用等),都提供了封装,使这些API应用难度大大降低
Spring的模块
- Core Container(Spring 4)
- Beans
- Core
- Context
- SpEL
- Core Container(Spring 5)
- Beans
- Core
- Context
- Expression(Spring Expression Language, SpEL)
- AOP
- Aspects
- Instrumentation
- Messaging
- Data Access/Integration
- JDBC
- ORM
- OXM
- JMS
- Transactions
- Web(Spring 4)
- WebSocket
- Servlet
- Web
- Portlet
- Web(Spring 5)
- WebSocket
- WebMVC
- Web
- WebFlux
- Test
Spring IOC
-
IOC(Inverse of Control)反转控制的概念,就是将原本在程序中手动创建对象的控制权,交由给Spring框架管理,由Spring框架管理其对象控制权,包括创建和销毁等一系列的生命周期。
-
DI(Dependency Injection)依赖注入,就是IOC的一种表现方式。利用Xml解析+Java反射机制技术,读取配置文件给对象赋值。
Spring IOC/DI案例演进
获取UserService类对象
-
传统方式(面向接口编程):
//1.通过new的方式构造对象 UserService userService = new UserServiceImpl();
-
工厂模式:
//创建一个工厂 class FactoryBean{ /* * 工厂提供获取UserService的方法 */ public static UserService getUserService(){ //通过new的方式构造对象 return new UserServiceImpl(); } } //通过获取UserService UserService userService = FactoryBean.getUserService();
-
open-close原则下改造:
- open-close原则:对程序扩展是open,对修改程序代码是close的。简单来说,就是尽量做到不修改程序的源码,实现对程序的扩展。
bean.xml配置文件 <bean id="userService" class="com.demo.service.UserServiceImpl"> <!--设置属性--> <property name="name" value="同桌小明"> </bean> //创建一个工厂 class FactoryBean{ /* * 工厂提供根据id获取对象的方法 */ public static Object getBean(String id){ ... 1.解析xml,获取id和class的关系 2.反射生成对象 } } //通过获取UserService UserService userService = FactoryBean.getBean("userService");
-
感受Spring的工厂模式:
bean.xml配置文件 <!-- 配置一个 bean --> <bean id="userService" class="com.demo.service.UserServiceImpl"/> //1.创建Spring的IOC容器,交给Spring的工厂管理 ApplicationContext applicationContext = new ClassPathXmlApplicationContext("bean.xml"); //2.从容器中获取Bean,通过工厂获得类(三级缓存) UserService userService = (UserService) applicationContext.getBean(“userService”);
本文地址:https://blog.csdn.net/weixin_35799945/article/details/107330013
推荐阅读
-
Spring Boot入门系列八(SpringBoot 整合Mybatis)
-
spring源码分析系列5:ApplicationContext的初始化与Bean生命周期
-
spring boot 学习笔记(入门篇)
-
spring-boot-2.0.3不一样系列之源码篇 - run方法(三)之createApplicationContext,绝对有值得你看的地方
-
详解Spring Data JPA系列之投影(Projection)的用法
-
Spring Cloud系列-Zuul网关集成JWT身份验证
-
Spring Boot2 系列教程(一) | 如何使用 IDEA 构建 Spring Boot 工程
-
Spring Boot2 系列教程 (二) | 第一个 SpringBoot 工程详解
-
实战SpringCloud响应式微服务系列教程(第九章)使用Spring WebFlux构建响应式RESTful服务
-
spring基础系列之JavaConfig配置详解