什么是spring framework
spring framework是一个轻量级的基于IOC和AOP的面向j2ee系统的框架
- 它是轻量级的松耦合的框架
- 可以集合各种框架,比如mybatis和springMVC等,是框架的框架
- 具有分层结构,允许用户自主选择组件
容器
Core Container
Spring的核心基础模块,提供IOC、DI、资源加载、事件支持等等。
spring core
spring bean
该容器的主要组件是BeanFactory,是工厂模式的实现,使用控制反转将程序的配置和规范和实际的应用程序代码分开
Spring Context
spring上下文是一个配置文件,提供上下文的服务
SpEL
spring表达语言,可以用来配置Bean定义
Data Access/Integration
JDBC
是java访问数据库的一套标准API,简化JDBC操作处理事务和异常
ORM
实体映射框架,如mybatis
Transations
Spring本身是没有事务一说的,数据库对事务的支持才是Spring事务的本质。
Web
Servlet
Servlet(Server Applet)是Java Servlet的简称,称为小服务程序或服务连接器,用Java编写的服务器端程序,具有独立于平台和协议的特性,主要功能在于交互式地浏览和生成数据,生成动态Web内容。
WebSocket
Spring 4.0 的一个最大更新是增加了对 Websocket 的支持。
Websocket 提供了一个在 Web 应用中实现高效、双向通讯,需考虑客户端(浏览器)和服务端之间高频和低延时消息交换的机制。
一般的应用场景有:在线交易、网页聊天、游戏、协作、数据可视化等。
spring-aop
分离横切关注点,将核心业务逻辑与其他公共逻辑解耦。
spring用到的设计模式
工厂模式
Spring使用工厂模式可以通过 BeanFactory 或 ApplicationContext 创建 bean 对象。
单例模式
spring用工厂创建的Bean也是单例的
代理模式
Spring AOP就是基于动态代理的,如果要代理的对象实现了某个接口,那么Spring AOP会使用JDK Proxy,去创建代理对象,而对于没有实现接口的对象,Spring AOP会使用Cglib,这时候Spring AOP会使用Cglib生成一个被代理对象的子类来作为代理
模板方法
Spring 中 jdbcTemplate、hibernateTemplate 等以 Template 结尾的对数据库操作的类,它们就使用到了模板模式。还有 RestTemplate、JmsTemplate。
观察者模式
Spring 事件驱动模型就是观察者模式很经典的一个应用。
适配器模式
我们知道 Spring AOP 的实现是基于代理模式,但是 Spring AOP 的增强或通知(Advice)使用到了适配器模式,与之相关的接口是AdvisorAdapter 。
spring IOC
https://blog.csdn.net/yujing1314/article/details/106903177
spring 有哪些配置方式
- XML 配置文件。
Bean所需的服务和依赖都配置在xml中
<bean id="studentBean" class="org.edureka.firstSpring.StudentBean">
<property name="name" value="Edureka"></property>
</bean>
- 注解配置。
spring默认没有开启注解配置,需要先开启
<beans>
<context:annotation-config/>
<!-- bean definitions go here -->
</beans>
- Java Config 配置。
Spring 的 Java 配置是通过使用 @Bean 和 @Configuration 来实现。
//该注解表示这个类为javaConfig类
@Configuration
public class MyConfig {
//该注解表示:向容器中注册一个叫做cycle的对象
@Bean("cycle")
public Car getCycle() {
return new Car("二八大杠","2");
}
在xml增加包扫描
<context:component-scan base-package="com.lzl.spring" />
测试
//读取配置文件
ApplicationContext ctx=new ClassPathXmlApplicationContext("spring-config.xml");
Cycle cycle= ctx.getBean("cycle", Cycle.class);
System.out.println(cycle);
就可以获取cycle的对象信息了
spring Bean的生命周期
实例化 -> 属性赋值 -> 初始化 -> 销毁
什么是 Spring 装配?
当 Bean 在 Spring 容器中组合在一起时,它被称为装配或 Bean 装配