- 1、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
SSM面试题大全(含答案)
一、Spring核心问题
1.什么是SpringIOC?实际开发中怎么用?
答:IOC(控制反转)是Spring的核心,简单说就是“对象创建权反转”——以前我们自己用new创建对象,现在把这个工作交给Spring容器,我们只需要从容器里拿对象用。
实际开发里,比如做用户管理模块,先给UserService加@Service注解,告诉Spring这是个要管理的Bean;然后在UserController里用@Autowired注解,直接拿到UserService对象,不用自己newUserService()了。这样能减少代码耦合,后续改UserService实现也不用动Controller。
2.SpringBean的作用域有哪些?常用的是哪两个?
答:Bean的作用域分5种:
singleton(单例):容器里只存一个Bean实例,每次拿都是同一个,默认作用域,比如Service、Dao层常用这个,因为这些层不需要多实例。
prototype(多例):每次从容器拿都新建一个实例,比如Controller层或者封装请求参数的Bean(像UserForm)常用,避免多线程下数据混乱。
request:每次HTTP请求对应一个Bean,Web项目里用得少。
session:每个用户会话对应一个Bean,比如存用户登录信息,也不常用。
globalSession:基于Portlet的全局会话,几乎不用。
常用的就是singleton和prototype,90%以上的场景就用这俩。
3.什么是SpringAOP?实际开发中用它做什么?
答:AOP(面向切面编程)是对OOP的补充,能把那些重复的、通用的代码(比如日志、事务、权限校验)抽出来,单独写成“切面”,然后“织入”到业务方法里,不用在每个业务方法里重复写。
实际开发里最常用的场景:
事务管理:给Service的增删改方法加事务,不用手动写beginTransaction()、commit(),用@Transactional注解就行,底层就是AOP实现的。
日志记录:比如记录每个接口的请求参数、响应结果,写个切面类,拦截Controller的方法,自动打印日志,不用在每个接口里写System.out或者日志代码。
权限校验:比如某些接口需要登录才能访问,写个切面拦截这些接口,判断用户是否登录,没登录就抛异常,不用每个接口都写判断逻辑。
4.Spring事务传播行为有哪些?常用的是哪几个?
答:事务传播行为就是当一个有事务的方法调用另一个方法时,新方法的事务该怎么处理。常用的有5个:
REQUIRED(默认):如果当前有事务,就加入这个事务;如果没有,就新建一个。比如OrderService的createOrder()调用PaymentService的pay(),两者会在同一个事务里,要么一起成功,要么一起回滚。
REQUIRES_NEW:不管当前有没有事务,都新建一个事务,原来的事务暂停。比如logService的recordLog(),不管业务方法成功还是失败,日志都要记下来,就用这个,保证日志事务独立。
SUPPORTS:如果当前有事务就加入,没有就无事务执行。比如查询方法,有事务就跟着走,没事务也能单独执行。
NOT_SUPPORTED:以无事务方式执行,当前有事务就暂停。比如某些统计方法,不需要事务。
NEVER:必须在无事务环境下执行,有事务就抛异常。用得少。
5.Spring依赖注入(DI)有哪些方式?实际开发用哪种多?
答:DI是IOC的具体实现,就是给Bean的属性赋值,主要3种方式:
构造器注入:通过Bean的构造方法传参赋值,比如publicUserService(UserDaouserDao){this.userDao=userDao;}。好处是能保证Bean创建时属性就初始化,避免空指针。
Setter注入:通过Bean的set方法赋值,比如publicvoidsetUserDao(UserDaouserDao){this.userDao=userDao;},以前XML配置常用,现在注解里也能用@Autowired配合set方法。
注解注入:用@Autowired(按类型注入)或@Resource(按名称注入)直接在属性上标注,不用写构造器或set方法。实际开发里这个用得最多,比如Controller里注入Service,直接@AutowiredprivateUserServiceuserService;,代码简洁。
6.Spr
文档评论(0)