📅  最后修改于: 2020-12-06 03:47:30             🧑  作者: Mango
Spring面试问题和答案经常被问到,因为它现在已广泛用于在Java中开发企业应用程序的框架。列出了Spring面试中最常见的40个问题。
它是一个轻量级的,松散耦合的集成框架,用于用Java开发企业应用程序。
IOC(控制反转)和DI(依赖注入)是一种提供松散耦合的设计模式。它从程序中删除依赖项。
让我们在不遵循IOC和DI的情况下编写代码。
public class Employee{
Address address;
Employee(){
address=new Address();//creating instance
}
}
现在,Employee和Address之间存在依赖关系,因为Employee被迫使用相同的地址实例。
让我们编写IOC或DI代码。
public class Employee{
Address address;
Employee(Address address){
this.address=address;//not creating instance
}
}
现在,由于没有强迫Employee使用相同的地址实例,因此Employee和Address之间不再存在依赖关系。它可以使用任何地址实例。
IOC容器负责:
Spring框架中有两种类型的IOC容器。
BeanFactory是基本容器,而ApplicationContext是高级容器。 ApplicationContext扩展了BeanFactory接口。与BeanFactory相比,ApplicationContext提供了更多功能,例如与spring AOP集成,用于i18n的消息资源处理等。
No. | Constructor Injection | Setter Injection |
---|---|---|
1) | No Partial Injection | Partial Injection |
2) | Desn’t override the setter property | Overrides the constructor property if both are defined. |
3) | Creates new instance if any modification occurs | Doesn’t create new instance if you change the property value |
4) | Better for too many properties | Better for few properties. |
自动装配使程序员能够自动注入Bean。我们不需要编写显式的注入逻辑。
让我们看看使用依赖注入来注入bean的代码。
自动装配模式如下:
No. | Mode | Description |
---|---|---|
1) | no | this is the default mode, it means autowiring is not enabled. |
2) | byName | injects the bean based on the property name. It uses setter method. |
3) | byType | injects the bean based on the property type. It uses setter method. |
4) | constructor | It injects the bean using constructor |
从弹簧3开始,不建议使用“自动检测”模式。
Spring框架中有5个bean作用域。
No. | Scope | Description |
---|---|---|
1) | singleton | The bean instance will be only once and same instance will be returned by the IOC container. It is the default scope. |
2) | prototype | The bean instance will be created each time when requested. |
3) | request | The bean instance will be created per HTTP request. |
4) | session | The bean instance will be created per HTTP session. |
5) | globalsession | The bean instance will be created per HTTP global session. It can be used in portlet context only. |
Singleton范围应与EJB无状态会话Bean一起使用,原型范围应与EJB有状态会话Bean一起使用。
Spring框架提供了两种类型的事务管理支持:
更少的代码:通过使用JdbcTemplate类,您无需创建连接,语句,启动事务,提交事务和关闭连接即可执行不同的查询。您可以直接执行查询。
您可以通过JdbcTemplate的查询方法从数据库中获取记录。有两个接口可以做到这一点:
NamedParameterJdbcTemplate类用于将值传递给命名参数。命名参数胜于? (PreparedStatement的问号)。
最好记住。
SimpleJdbcTemplate支持var-args和自动装箱功能。
AOP是面向方面编程的首字母缩写。它是一种将程序逻辑分为多个部分或部分或方法的方法。
它增加了模块化,关键单元是Aspect。
AOP使您能够在业务逻辑之前或之后动态添加或删除关注点。它是可插拔的,易于维护。
AOP术语或概念如下:
JoinPoint是程序中的任意点,例如字段访问,方法执行,异常处理等。
不,spring框架仅支持方法执行连接点。
咨询代表按方面采取的行动。
SpringAOP中有5种建议。
切入点是Spring AOP的表达语言。
Aspect是Spring AOP中的一类,包含建议和连接点。
简介表示对类型的新字段和方法的介绍。
目标对象是一个或多个方面建议的代理对象。
拦截器是类似类的方面,仅包含一个建议。
编织是将方面与其他应用程序链接的过程。
不,spring框架在运行时执行编织。
有3个AOP实现。
DispatcherServlet类在Spring MVC中充当前端控制器。
@Controller批注将该类标记为控制器类。它应用于班级。
@RequestMapping批注将请求与方法映射。它应用于该方法。
View Resolver类解析要为请求调用的视图组件。它定义了前缀和后缀属性来解析视图组件。
org.springframework.web.servlet.view.InternalResourceViewResolver类被广泛使用。
是。