java中级面试题及答案spring
时间: 2025-02-09 08:04:47 浏览: 54
### Java 中级面试题及答案:Spring框架
#### Spring MVC 和 Struts2 的主要区别在于拦截机制的不同
Struts2采用的是类级别的拦截方式,即一个类对应一个请求上下文;而SpringMVC则实现了更为灵活的方法级别拦截[^2]。
#### Spring 框架的核心特性之一是依赖注入(DI)
通过DI模式,对象不再负责创建自己的依赖项,而是由外部容器提供给它所需的资源。这种方式不仅简化了配置过程,还增强了组件之间的解耦合度。在实际开发中,开发者可以利用`@Autowired`注解来实现自动装配功能,从而减少样板代码的编写量[^1]。
#### 关于Bean的作用域
在Spring环境中,默认情况下所有的bean都是单例(Singleton)作用域内的实例。这意味着在整个应用生命周期内只会存在该类型的唯一实体。然而,也可以根据需求定义其他几种常见的scope类型,比如Prototype(原型),Request(request范围内有效), Session(session会话期间保持不变)。
#### AOP面向切面编程的应用场景
AOP允许程序员将横切关注点(如事务管理、日志记录等功能)从业务逻辑中分离出来,并集中处理这些方面的问题。借助Spring提供的强大支持,可以通过简单的XML或基于注解的方式轻松集成各种增强处理器(advice),进而提高系统的模块性和可维护性。
```xml
<!-- XML配置示例 -->
<aop:config>
<aop:pointcut id="serviceMethods" expression="execution(* com.example.service.*Service.*(..))"/>
<aop:advisor advice-ref="txAdvice" pointcut-ref="serviceMethods"/>
</aop:config>
<tx:advice id="txAdvice">
<tx:attributes>
<!-- 定义哪些方法需要开启事物控制 -->
<tx:method name="*" propagation="REQUIRED"/>
</tx:attributes>
</tx:advice>
```
```java
// 注解驱动的AOP配置
@Component
@Aspect
public class LoggingAspect {
@Before("execution(* com.example.service..*(..))")
public void logMethodCall() {
System.out.println("Logging method call...");
}
}
```
阅读全文
相关推荐



















