【Java⾯试题总结7】Spring框架综合篇,java的基础编程规范注意事项return new Dog();
}
}
@Component(“jackma”)
public class User {
private String name;
private int age;
private Dog dog;
//get,set⽅法略
}
原来就是配置类啊,通过@Bean、@Component、getBean⽅式进⾏Bean的注册和发现。
九、请解释 Spring Bean 的⽣命周期?
1. 通过构造器或⼯⼚⽅法创建bean实例;
2. 为bean的属性赋值;
3. 调⽤bean的初始化⽅法;
4. 使⽤bean;
5. 当容器关闭时,调⽤bean的销毁⽅法;
⼗、Spring Bean 的作⽤域之间有什么区别?
Spring容器中的bean可以分为5个范围:
1. singleton:这种bean范围是默认的,这种范围确保不管接受多少请求,每个容器中只哟⼀个bean的实例,单例模式;
2. prototype:为每⼀个bean提供⼀个实例;
3. request:在请求bean范围内为每⼀个来⾃客户端的⽹络请求创建⼀个实例,在请求完毕后,bean会失效并被垃圾回收器回收;
4. session:为每个session创建⼀个实例,session过期后,bean会随之消失;
5. global-session:global-session和Portlet应⽤相关。当你的应⽤部署在Portlet容器中⼯作时,它包含很多portlet。如果你想要声
明让所有的portlet公⽤全局的存储变量的话,那么全局变量需要存储在global-session中。
⼗⼀、如何在 Spring Boot 中禁⽤ Actuator 端点安全性?
默认情况下,所有敏感的HTTP端点都是安全的,只有具有Actuator⾓⾊的⽤户才能访问它们。安全性是使⽤标准的HTTPServletRequest.isUserInRole⽅法实施的。我们可以使⽤able = false来禁⽤安全性。只有在执⾏机构端点在防⽕墙后访问时,才建议禁⽤安全性。
⼗⼆、什么是 Spring inner beans?
在Spring框架中,⽆论何时bean被使⽤时,当仅被调⽤⼀个属性。可以将这个bean声明为内部bean。
内部bean可以⽤setter注⼊“属性”和构造⽅法注⼊“构造参数”的⽅式来实现。⽐如,在我们的应⽤程序中,⼀个Customer类引⽤了⼀个Person类,我们要做的是创建⼀个Person实例,然后再Customer内部使⽤。
package com;
public class Customer {
private Person person;
}
class Person{
private int id;
private String name;
private int age;
}
⼗三、Spring 框架中的单例 Beans 是线程安全的么?
Spring框架并没有对单例bean进⾏任何多线程的封装处理。关于单例bean的线程安全和并发问题需要开发者⾃⾏去搞定。但实际上,⼤部分的Spring bean并没有可变的状态,所以在某种程度上说Spring的单例bean时线程安全的。如果你的bean有多种状态的话,⽐如view model,就需要⾃⾏保证线程安全啦。
最浅显的解决办法就是将多态bean的作⽤域由singleton变更为prototype。
⼗四、请解释 Spring Bean 的⾃动装配?
Spring⽀持IOC,⾃动装配不⽤类实例化,直接从bean容器中取。
1、配置在xml中
2、@Autowired⾃动装配
⼗五、如何开启基于注解的⾃动装配?
要使⽤ @Autowired,需要注册 AutowiredAnnotationBeanPostProcessor,可以有以下两种⽅式来实现:
引⼊配置⽂件中的<bean>下引⼊ <context:annotation-config>
<context:annotation-config />
在bean配置⽂件中直接引⼊AutowiredAnnotationBeanPostProcessor
⼗六、什么是 Spring Batch?
1、什么是spring batch?
spring batch是⼀个轻量级的、完善的批处理框架,它主要的⽬的在于帮助企业建⽴健壮、⾼效的批处理应⽤。
spring batch是Spring的⼀个⼦项⽬,它使⽤java语⾔并基于spring框架作为基础开发,使得已经使⽤Spring框架的开发者或者是企业可以更加容易访问和利⽤企业服务。
spring batch提供了⼤量可重⽤的组件,包括了⽇志、追踪、事务、任务作业统计、任务重启、跳过、重复、资源管理。
对⼤数据量和⾼性能的批处理任务,spring batch同样提供了⾼级功能和特性来⽀持。
例如:分区功能、远程功能。
总的来说,spring batch可以⽀持简单的、复杂的和⼤数据量的批处理作业。
2、spring b
《⼀线⼤⼚Java⾯试题解析+后端开发学习笔记+最新架构讲解视频+实战项⽬源码讲义》
【docs.qq/doc/DSmxTbFJ1cmN1R2dB】 完整内容开源分享
atch业务场景
周期性的提交批处理
把⼀个任务并⾏处理
消息驱动应⽤分级处理
⼤规模并⾏批处理
⼿⼯或调度使任务失败之后重新启动
有依赖步骤的顺序执⾏(使⽤⼯作流驱动扩展)
处理时跳过部分记录
成批事务:为⼩批量的或有的存储过程/脚本的场景使⽤
⼗七、spring mvc 和 struts 的区别是什么?
1、拦截机制的不同
spring ioc注解Struts2是类级别的拦截,每次请求就会创建⼀个Action,和Spring整合时Struts2的ActionBean注⼊作⽤域是原型模式prototype,然后通过setter,getter吧request数据注⼊到属性。Struts2中,⼀个Action对应⼀个request,response上下⽂,在接收参数时,可以通过属性接收,这说明属性参数是让多个⽅法共享的。Struts2中Action的⼀个⽅法可以对应⼀个url,⽽其类属性却被所有⽅法共享,这也就⽆法⽤注解或其他⽅式标识其所属⽅法了,只能设计为多例。
SpringMVC是⽅法级别的拦截,⼀个⽅法对应⼀个Request上下⽂,所以⽅法直接基本上是独⽴的,独享request,response数据。⽽每个⽅法同时⼜何⼀个url对应,参数的传递是直接注⼊到⽅法中的,是⽅法所独有的。处理结果通过ModeMap返回给框架。在Spring整合时,SpringMVC的Controller Bean默认单例模式Singleton,所以默认对所有的请求,只会创建⼀个Controller,有应为没有共享的
属性,所以是线程安全的,如果要改变默认的作⽤域,需要添加@Scope注解修改。
Struts2有⾃⼰的拦截Interceptor机制,SpringMVC这是⽤的是独⽴的Aop⽅式,这样导致Struts2的配置⽂件量还是⽐SpringMVC ⼤。
2、底层框架的不同
Struts2采⽤Filter(StrutsPrepareAndExecuteFilter)实现,SpringMVC(DispatcherServlet)则采⽤Servlet实现。Filter在容器启动之后即初始化;服务停⽌以后坠毁,晚于Servlet。Servlet在是在调⽤时初始化,先于Filter调⽤,服务停⽌后销毁。
3、性能⽅⾯
Struts2是类级别的拦截,每次请求对应实例⼀个新的Action,需要加载所有的属性值注⼊,SpringMVC实现了零配置,由于SpringMVC基于⽅法的拦截,有加载⼀次单例模式bean注⼊。所以,SpringMVC开发效率和性能⾼于Struts2。
4、配置⽅⾯
spring MVC和Spring是⽆缝的。从这个项⽬的管理和安全上也⽐Struts2⾼。
⼗⼋、请举例解释@Required 注解?
@Required注解应⽤于bean属性的setter⽅法,它表明影响的bean属性在配置时必须放在XML配置⽂件中。
⼗九、请举例说明@Qualifier 注解?
如果在xml中定义了⼀种类型的多个bean,同时在java注解中⼜想把其中⼀个bean对象作为属性,那么此时可以使⽤@Qualifier加@Autowired来达到这⼀⽬的,若不加@Qualifier这个注解,在运⾏时会出现“ No qualifying bean of type
[com.tutorialspoint.Student] is defined: expected single matching bean but found 2: student1,student2”这个异常。⼆⼗、Spring常⽤注解
⼆⼗⼀、项⽬中是如何实现权限验证的,权限验证需要⼏张表
通过了解,现在最普遍的权限管理模型就是RBAC(Role-Based Access Control)。
1、权限控制分类
1. 菜单功能
2. url控制(控制访问不同的控制器)
2、RBAC的优缺点
(1)优点
简化了⽤户和权限的关系
易扩展、易维护
(2)缺点
RBAC模型没有提供操作顺序的控制机制,这⼀缺陷使得RBAC模型很难适应哪些对操作次序有严格要求的系统。
3、RBAC⽀持的安全原则
(1)最⼩权限原则
RBAC可以将⾓⾊配置成其完成任务所需的最⼩权限集合。
(2)责任分离原则
可以通过调⽤相互独⽴互斥的⾓⾊来共同完成敏感的任务,例如要求⼀个记账员和财务管理员共同参与统⼀过账操作。
(3)数据抽象原则
可以通过权限的抽象来体现,例如财务操作⽤借款、存款等抽象权限,⽽不是使⽤典型的读写权限。
4、远古时代的权限控制
当时还没有RBAC,也没有这个概念,就是⼀堆程序员在那⿎捣,觉得登录这块该做点什么。
1、新建⼀个⽤户,对这个⽤户进⾏赋予权限。
2、但是⼀旦⽤户多了,权限复杂了,这⼯作量也是蛮⼤的。
5、RBAC
RBAC 1.0

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。