Spring框架面试精要:IOC、AOP及SSH整合

需积分: 9 3 下载量 49 浏览量 更新于2024-07-22 收藏 125KB DOC 举报
"spring面试题相关知识" Spring是一个备受开发者喜爱的轻量级Java应用程序框架,它以其非侵入性和强大的功能集成为企业级应用开发提供了坚实的基础。Spring的核心概念包括Inversion of Control (IoC) 和 Aspect-Oriented Programming (AOP),这两个概念对于理解和使用Spring至关重要。 1. IoC(Inversion of Control,控制反转)是一种设计模式,它将对象的创建和管理权交给容器,而不是由对象自身负责。Spring通过依赖注入(Dependency Injection, DI)实现了IoC。在Spring中,DI可以通过以下几种方式进行实现: - XML配置文件:在XML配置文件中定义Bean及其依赖关系。 - Java配置类:使用@Configuration和@Bean注解定义Bean及其依赖。 - 注解驱动的自动装配:通过@Component、@Service、@Repository和@Controller等注解定义Bean,并使用@Autowired自动注入依赖。 2. 面向接口编程是Spring所倡导的最佳实践。这样做可以降低代码间的耦合度,提高可测试性,因为接口定义了行为,而具体的实现则可以根据需求灵活替换。使用接口还有助于实现IoC,因为Spring可以更容易地管理实现这些接口的Bean。 3. Spring AOP(面向切面编程)用于处理横切关注点,如日志、事务管理等。AOP有三种织入方式: - 编译期织入:在源代码编译成字节码时完成,例如使用AspectJ的编译器。 - 类装载期织入:在类装载到JVM时完成,AspectWerkz提供了这样的功能。 - 运行期织入:在运行时通过动态代理实现,Spring默认使用这种方式,分为JDK动态代理和CGLIB动态代理。 4. Spring AOP的两种实现机制: - JDK动态代理:适用于目标对象实现了至少一个接口的情况,Spring会创建该接口的一个代理实现类,通过反射调用目标方法并插入切面逻辑。 - CGLIB代理:如果目标对象没有实现接口,Spring会使用CGLIB库生成目标类的一个子类,然后在子类中插入切面逻辑。 5. SSH(Struts + Spring + Hibernate)是经典的Java EE开发框架组合。关于SSH的面试题涉及了Hibernate的工作原理、Struts处理中文乱码的方法以及Hibernate中的并发控制和性能优化设置。例如: - Hibernate的工作原理包括配置解析、映射关系加载以及对象/关系映射的处理。 - 在Struts中,ActionForm和标签各有其用途,ActionForm用于处理请求参数,而标签则用于视图展示。 - Hibernate通过版本字段实现乐观并发控制,例如使用`<version>`标签。 - Hibernate.jdbc.fetch.size和Hibernate.jdbc.batch.size分别用于设置查询时的批处理大小,以优化数据库交互性能。 6. Spring的三种注入方式包括: - 接口注入:虽然不常用,但理论上可以通过接口定义服务,然后在容器中实现并注入。 - Getter/Setter注入:这是最常用的注入方式,通过setter方法将依赖注入到Bean中。 - 构造器注入:在Bean实例化时,通过构造函数传入依赖。 选择注入方式时,通常根据需求和设计原则来决定。构造器注入确保Bean在创建时就完整,有助于保证对象的正确状态;setter注入更灵活,适合在运行时动态调整;接口注入则较少使用,但在某些特定场景下可以提高灵活性。