其他分享
首页 > 其他分享> > Sping进阶

Sping进阶

作者:互联网

目录

一、Sping复习

1、概述

Spring是一个轻量级Java开源工具,它是为了解决企业应用开发的复杂性而创建的,即简化Java开发。

2、如何搭建

  1. 创建spring配置文件,sping.xml文件
  2. 在sping.xml文件中配置,需要让sping管理的类,
  3. spring框架读取xml文件,解析xml
  4. 通过工厂模式 + 反射机制 创建对象 + 代理模式
  5. 在需要使用对象时,从spring容器注入对象即可

3.spring中常用的注解标签

@Component(value=“user”)
@Service
@Repository
以上注解都可以实现创建对象功能,只是为了后续扩展功能,在不同的层
使用不同的注解标记
@Scope(value=“prototype”) 原型
@Scope(value=“ singleton ”) 单例

4.spring+jdbc

jdbcTemplate 管理数据源(阿里巴巴Druid)事务管理
事务管理的最基本的原理是使用AOP,声明式事务和编程式事务,

  1. 事务传播行为,是spring 框架自身对事物进行功能上的增强,

5、spring 集成 mybatis

Spring 集成 Mybatis 其核心是将 SqlSessionFactory 交由 Spring 管理,并由
Spring 管理对 dao 接口的代理实现。

导入mybatis jar包
(1)Spring结合mybatis插件包

<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis-spring</artifactId>
<version>1.3.1</version>
</dependency

(2)配置sqlSessionFactory

<bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
<property name="dataSource" ref="dataSource"></property>
<property name="configLocation" value="mybatis-config.xml"></property>
<property name="mapperLocations" value="com/ff/*Mapper.xml">
</property>
</bean>

(3)指定生成接口代理

<bean id="mapperFactory"
class="org.mybatis.spring.mapper.MapperScannerConfigurer">
<property name="basePackage" value="com.ff.ssm.dao"></property>
<property name="sqlSessionFactoryBeanName" value="sqlSessionFactory">
</property>
</bean

(4)在service中注入Dao代理接口,此接口有Spring代理实现

@Autowired
DeptDao deptDao;

6、spingMVC

springMVC详细链接
在这里插入图片描述

二、sping进阶

1、BeanFactory 和 ApplicationContext

new User( )创建了一个User对象,把由sping框架创建的对象称为一个bean。
2. BeanFactory 接口是spring 框架中最基础的接口,定义了如何获取bean的方法。
3. ApplicationContext接口间接的继承了BeanFactory接口,在此基础之上扩展功能。

(1)BeanFactory 和ApplicationContext

  1. BeanFactory 是最基础的,面向spring框架本身的 。在使用对象时才去创建。
  2. ApplicationContext 是面向应用的,增加了功能(支持AOP事务),适合于web应用程序,在服务器启动时就创建。

2、SpringBean的生命周期

一个对象什么时候生(创建),什么时候销毁?

  1. 实例化 : 创建一个原始的对象,例如new对象,通过反射机制实现的(可以读到类名)
  2. 属性赋值 : UserService 注入UserDao userDao;为对象的属性进行赋值
  3. 初始化 :最早在Servlet 先创建一个对象,然后调用init()进行初始化,我们的bean如果实现来某些接口,就可以去执行这些方法,用来初始化我们的对象重点在于对类进行功能提升。
  4. 将 bean 对象放入到容器中,使用
  5. 销毁

3、Spring中的bean是线程安全的吗?

class UserController{
User user; //User 作为数据存储的对象,存储对象信息的,是有状态的,不安全的
UserService userService; //不存储数据,是无状态的,安全的
}

  1. 6.原型bean是线程安全的

4、Bean循环依赖

在这里插入图片描述
此情况只在spring中出现,因为spring创建对象时,可以为属性自动注入值,注入时就需要查找所依赖的对象。

  1. 在spring中提供一个3级缓存机制,每一个缓存可以理解为一个map容器(把不同的对象做一个临时存储)
  2. 一级缓存:存放创建,初始化完成的完整的bean
  3. 二级缓存:存储原始的对象
  4. 三级缓存:假如B类如果需要增强的功能,那么把这个半成品的B对象继续放在3级缓存中去增强功能。

5、Servlet的过滤器与Spring拦截器区别

(1)区别主要在底层实现方式有所不同:

标签:进阶,对象,spring,Sping,bean,线程,单例,Spring
来源: https://blog.csdn.net/qq_48019875/article/details/122472737