Java-SSM-Spring

Java-SSM-Spring,第1张

Java-SSM-Spring

1.什么是Spring

Spring是一个轻量级的IOC和AOP容器框架。常见的配置方式有三种:基于XML、基于注解、基于Java配置

核心技术:依赖注入DI,AOP,事件、资源、验证、数据绑定、类型转换测试:模拟对象,TestContext框架,SpringMVC测试,数据访问:事务、DAO支持、JDBC、ORM、编组XMLWeb支持:Spring MVC框架集成:远程处理,JMS,JCA,JMX,电子邮件,任务,调度,缓存语言:kotlin,Groovy,动态语言

2.Spring框架的七大模块

    Spring Core :Spring核心类库,提供IoC容器Spring Context:继承BeanFactory,提供框架式的Bean访问方式,提供上下文信息,拓展国际化功能。Spring DAO:提供了对JDBC的抽象,提供了声明式事务管理方法。Spring AOP:提供AOP功能Spring Web:提供了对基础的Web开发框架的继承Spring ORM:对现有的ORM框架Mybatis的整合Spring Web MVC :提供了Web应用的Model-View-Controller全功能的实现

3.@RestCntroller vs @Controller

Controller 返回一个页面

单独使用@Controller不加@ResponseBody的话一般使用在要返回一个视图的情况,这种情况属于比较传统的Spring MVC的应用,对应于前后端不分离的情况

@RestController 返回JSON或XML形式数据

@RestController 只返回对象,对象数据直接以JSON或XML形式写入HTTP响应Response

中,这是目前日常开发多接触的最常用的情况,前后端分离。

@Controller+@ResponseBody 返回JSON或XML形式数据

如果你需要在Spring4之前开发RESTful Web服务的话,你需要使用@Controller结合@ResponseBody注解,也就是说,@Controller+@ResponseBody= @RestController(Spring4之后新加的注解)。

@ResponseBody注解的作用是将Controller的方法返回的对象通过适当的转换器转换为指定的格式后,写入到HTTP响应(Response)对象的body中,通常用来返回JSON或者XML数据,返回JSON数据的情况比较多。

4.Spring IOC & AOP IOC

IOC(Inverse of Control:控制反转)是一种设计思想,就是将原先在程序中手动创建对象的控制权,交由Spring框架来管理。IOC容器时Spring用来实现IOC的载体,IoC容器实际上就是个Map(key,value),Map中存放的是各种对象。

IoC容器就像是一个工厂一样,当我们需要创建一个对象的时候,只需要配置好配置文件/注解即可,完全不用考虑对象是如何被创建出来的。

Spring IoC的初始化的过程

 AOP

AOP(Aspect-Oriented Programming:面向切面编程)能够将那些与业务无关,却为业务模块所共同调用的逻辑或责任(例如事务处理、日志管理、权限控制)封装起来,便于减少系统的重复代码,降低模块间的耦合度,并有利于未来的可拓展性和可维护性。

AOP的核心概念

    切面aspect:对横切关注点的抽象。横切关注点:对哪些方法进行拦截,拦截后怎样处理,这些关注点称为横切关注点连接点joinpoint:被拦截到的方法、字段、构造器切入点pointcut:对连接点进行拦截的定义通知advice:拦截之后执行的代码称为通知,分为前置、后置、异常、最终、环绕通知五类目标对象:代理的目标对象织入weave:将切面应用到目标对象并导致代理对象创建的过程引入introduction:在不改变代码的前提下,引入可以在运行期为类动态的添加方法或字段

AOP应用场景

记录日志监控性能权限控制事务管理线程池关闭 5.Spring Bean

Spring 中的bean的作用域有哪些

singleon:唯一bean实例,Spring中的bean默认是单例的peototype:每次请求都会创建一个新的bean实例request:每次HTTP请求都会产生一个新的bean,该bean仅在当前HTTP request内有效session:每次HTTP请求哦都会产生一个新的bean,该bean仅在当前HTTP session内有效global-session:全局session作用域,仅在基于portlet的Web应用中才有意义

Spring 中的单例bean的线程安全问题了解吗

主要是因为当多个线程 *** 作同一个对象的时候,对这个对象的非静态成员变量的写 *** 作会存在线程安全问题

常见的有两种解决办法

    在bean对象中尽量避免定义可变的成员变量。不太现实在类中定义一个ThreadLoal成员变量,将需要的可变成员变量保存在ThreadLocal中

@Component 和 @Bean 的区别是什么

    作用对象不同:@Component 注解作用于类,而@Bean 注解作用于方法@Component 通常是通过类路径扫描来自动侦测以及自动装配到Spring容器中。@Bean注解通常是我们在标有该注解的地方产生这个bean,@Bean告诉了Spring这是某个类的示例,当我需要它的时候还给我。@Bean注解比Component注解的自定义性更强,而且很多地方我们只能通过@Bean注解来注册bean。比如当我们引用第三方库中的类需要装配到Spring容器的时候,则只能通过@Bean实现

将一个类声明为Spring的bean的注解有哪些?

一般使用@Autowired注解自动装配bean,要想把类标识成@Autowired注解自动装配的bean的类,采用以下注解可实现。

@Component :通用的注解,可标注任意类为Spring组件。如果一个Bean不知道属于哪个层,可以使用@Component注解标注@Respository:对应持久层即Dao层,主要用于数据库的相关 *** 作@Service:对应服务层,主要涉及一些复杂的逻辑,需要用到Dao层@Controller:对应Spring MVC控制层,主要用户接受用户请求并调用Service层返回数据给前端页面。

Spring中Bean的生命周期

 Spring框架中用到了哪些设计模式

工厂设计模式:Spring使用工厂模式通过BeanFactory、ApplicationContext创建bean对象代理设计模式:Spring AOP功能的实现单例设计模式:Spring中的Bean默认是单例的包装设计模式:项目需要连接多个数据库,而且不同的客户在每次访问中根据需要会去访问不同的数据库。这种模式让我们可以根据客户的需求能够动态切换不同的数据源。观察者模式:Spring事件驱动模型就是观察者模式很经典的一个应用。常用的地方是listener的实现。Applicationlistener策略模式:Bean的实例化的时候采用何种初始化Bean实例。 6.Spring事务

Spring管理事务的方式有哪几种?

    编程式事务,在代码中硬编码声明式事务,在配置文件中配置

声明式事务又分为两种

    基于XML的声明式事务基于注解的声明式事务

事务的传播行为

当一个事务被另一个事务调用的时候,使用原来的事务还是开启一个新的事务

 事务的隔离级别

 @Transactional 注解

Exception分为运行时异常和非运行时异常。事务管理对于企业应用来说至关重要,即使出现异常情况,它也可以保持数据的一致性。

当@Transactional注解作用于类上时,该类的所有public方法都具有该类型的事务属性,同时我们也可以在方法级别使用该标注来覆盖级别的定义。

如果类或方法加了这个注解,那么这个类里面的方法抛出异常,就会回滚,数据库里面的数据也会回滚。

在@Transactional注解中如果不配置rollbackFor睡醒,那么事务只会在遇到RuntimeException的时候才会回滚,加上rollbackFor=Exception.class,也可以让事务遇到非运行时异常也回滚。

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/zaji/5709756.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-17
下一篇 2022-12-17

发表评论

登录后才能评论

评论列表(0条)

保存