Spring


什么是Spring

Spring是一个轻量级的IOC/DI和AOP容器框架,他可以帮我们简化很多代码的编写,提高开发效率

Spring有哪些重要模块

Spring Core, Spring Web, Spring AOP,Spring Test,Spring JDBC等

Spring框架有哪些优点

Spring框架有很多优点,比如说他提供了测试功能,还有就是他提供了很多API,这些API帮我们简化了很多代码复杂的功能,比如JDBC,还有就是他可以帮我们解耦

@RestController vs @Controller

@RestController和@Controller都是贴在表现层类或者方法的头顶上的,他们最大的区别就是@RestController方法返回的是一个Json对象,而@Controller是返回字符串,如果我们使用@Controller注解,又想返回JSON对象的话,就需要再贴一个叫@ResponseBody注解,也就是说@RestController=@Controller+@ResponseBody

什么是IOC

IOC是控制反转,他是一种思想,IOC容器实际是一个Map,这个Map存放了很多对象。当我们要创建对象的时候,只需要在配置文件或者使用注解的方式,IOC就会帮我们创建对象并交给容器管理,我们不需要关心对象是怎么创建出来的

依赖注入的方式?他们之间有什么区别?

依赖注入有两种方式:
①一种是构造器依赖注入,也就是通过容器调用构造器来实现,构造器中有一些属性,每一个参数代表着对其他类的一个依赖
②setter方法注入,也就是通过调用无参构造器或者无static工厂方法来创建bean实例,bean实例创建完之后调用setter方法来给实例注入依赖

区别:构造器注入没有部分注入,不会覆盖setter方法,任意修改时不会创建对象,比较适合用于属性比较多的setter方法注入有部分注入,会覆盖setter方法,任意修改时会创建一个新的对象,比较适合用于属性比较少的

什么是AOP

AOP是面向切面编程,是基于动态代理的,他可以将一些与业务无关,但是要被业务模块所调用的一些东西(如:权限控制,事务,日志管理)给封装起来,这样子可以减少我们代码的重复性,降低模块之间的耦合性,有利于我们后期的拓展和维护

Spring AOP 和 AspectJ AOP 有什么区别?

①SpringAOP是运行时增强,AspectJ是编译时增强
②SpringAOP是基于代理,AspectJ是基于字节码操作的
③SpringAOP里面已经集成了AspectJ,AspectJ的功能比SpringAOP要强大很多,但是使用起来的话SpringAOP更为简单,如果切面少的情况下,两者没有区别,如果是切面多的情况下,

Spring中的bean的作用域有哪些?

①singleton:创建唯一bean实例,spring中默认的就是单例对象
②prototype:每一次都会创建一个新的实例
③request:当发出Http请求的时候都会创建一个新的bean实例,这个实例只在当前Http request中有效
④session:当发起Http请求的时候都会创建一个新的bean实例,这个实例只在当前Http session中有效
⑤global-session:全局session作用域

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

我们很少在系统中使用多线程,所以单例bean的线程安全很容易被我们忽略。但是单例bean是存在线程安全的问题的,当多线程操作同一个对象时,该对象的非静态可变变量会存在一个线程安全的问题。我们解决线程安全的问题有两种方式:第一种是避免bean对象中非静态资源的定义,但是这种方法是不现实的第二种是定义一个ThreadLocal,我们使用这个ThreadLocal来存储对象中的可变变量,这种方法是比较推荐的。

@Component 和 @Bean 的区别是什么?

@Component和@Bean都是注册bean到Spring容器中。但是他们也有很大的区别
①首先,他们作用对象是不同的,@Component是作用在类上,而@Bean是作用在方法上
②其次,@Component是通过类的路径来自动监测和自动装配到Spring容器中,而@Bean是通过贴有该注解的方法创建出bean实例,@Bean注解会告诉Spring这是某个类的实例,但我们需要使用的时候,Spring就会将实例还给我们使用
③最后,@Bean的自定义性比@Component的自定义性要高,而且很多地方都只能使用@Bean注解来注册bean,比如我们要使用第三方类交给Spring容器管理的时候,就只能使用@Bean

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

我们一般都是使用@Autowire注解自动装配bean的,如果类要被@Autowire的话,我们需要在类的头顶上贴上以下几个注解:@Component:该注解贴在不确定类类型的时候,如果他不属于控制层,业务层,持久层,那么就可以使用该注解@Repository: 该注解是贴在持久层上的,持久层是用来和数据库打交道的@Service: 这个注解是贴在业务层的,业务层主要是用来处理一些复杂的逻辑问题@Controller: 这个注解是贴在控制层上的,主要是接收请求并调用Service层,将数据结果返回给前端页面

Spring中bean的生命周期

首先会创建实例化bean对象,然后给对象设置属性值,接着检查Aware相关接口是否有继承,有的话就调用相关方法,接着如果有和bean相关联的BeanPostProcessors对象,就会进行前置处理,检查是否是InitializingBean来决定是否调用afterPropertiesSet()方法,然后会检查是否配置有自定义的init-method属性,有的话就执行指定的方法,接着到BeanPostProcessor中进行后置处理,当Bean要销毁时,是否实现DisposableBean接口,执行destroy()方法,如果配置文件中定义了destroy-method属性,就执行指定的方法

SpringMVC的执行流程

用户发送请求的时候会到前端控制器中,前端控制器到处理器映射器中查找处理器,并返回一个处理器执行链到前端控制器,接着到处理器适配器中去根据xml配置文件查找对应的Controller,然后Controller中对应的方法并返回一个ModelAndView对象到处理器适配器中,处理器适配器再将这个对象返回到前端控制器,前端控制器将这个对象传到视图解析器中进行解析并返回一个View对象,前端控制器根据Model对View进行试图渲染,将渲染结果响应给用户

SpringMVC的优点

他是一款基于Spring为基础的框架,避免了我们手动创建对象,其次,他的可拓展性很高,代码可重用性也高,而且他可以支持各种视图技术,不仅仅是jsp

请求转发和重定向的区别

①请求转发页面的地址栏会发生改变,而且可以进行数据共享,也可以访问WEB_INF下的资源②重定向页面的地址栏是不会发生改变的,而且数据不会共享,也就是我们在执行请求之后不需要进行数据展示在页面的时候可以使用重定向,但是他不能访问WEB-INF下的资源

Spring框架中用到的设计模式

工厂模式(BeanFactory创建bean实例),代理模式(AOP),单例模式(单例bean),模板方法模式(template),观察者模式,适配器模式等

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

Spring管理事务有两种方式:一种是编程式事务,也就是在编写硬编码,另一种是声明式事务,也就是通过配置文件来配置,而声明式事务又分为注解声明式事务和xml声明式事务

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 204,684评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 87,143评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 151,214评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,788评论 1 277
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,796评论 5 368
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,665评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,027评论 3 399
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,679评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 41,346评论 1 299
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,664评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,766评论 1 331
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,412评论 4 321
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,015评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,974评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,203评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,073评论 2 350
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,501评论 2 343

推荐阅读更多精彩内容