Java面试大全(2020年版)121-130

121.在Spring AOP 中,关注点和横切关注的区别是什么?

  • 关注点是应用中一个模块的行为,一个关注点可能会被定义成一个我们想实现的一个功能。
  • 横切关注点是一个关注点,此关注点是整个应用都会使用的功能,并影响整个应用,比如日志,安全和数据传输,几乎应用的每个模块都需要的功能。因此这些都属于横切关注点。

122.什么是代理?

代理是通知目标对象后创建的对象。从客户端的角度看,代理对象和目标对象是一样的。

123.谈谈你对spring IOC和DI的理解

IoC Inverse of Control 反转控制的概念,就是将原本在程序中手动创建UserService对象的控制权,交由Spring框架管理,简单说,就是创建UserService对象控制权被反转到了Spring框架
DI:Dependency Injection 依赖注入,在Spring框架负责创建Bean对象时,动态的将依赖对象注入到Bean组件

124.BeanFactory接口和ApplicationContext接口有什区别?

  • ApplicationContext 接口继承BeanFactory接口,Spring核心工厂是BeanFactory ,BeanFactory采取延迟加载,第一次getBean时才会初始化Bean, ApplicationContext是会在加载配置文件时初始化Bean。
  • ApplicationContext是对BeanFactory扩展,它可以进行国际化处理、事件传递和bean自动装配以及各种不同应用层的Context实现 开发中基本都在使用ApplicationContext, web项目使用WebApplicationContext ,很少用到BeanFactory
    BeanFactory beanFactory = new XmlBeanFactory(new ClassPathResource(“applicationContext.xml”));
    IHelloService helloService = (IHelloService) beanFactory.getBean(“helloService”);
    helloService.sayHello();

125.Bean注入属性有哪几种方式?

  • spring支持构造器注入和setter方法注入
  • 构造器注入,通过 元素完成注入
  • setter方法注入, 通过 元素完成注入【开发中常用方式】

126.什么是AOP,AOP的作用是什么?

面向切面编程(AOP)提供另外一种角度来思考程序结构,通过这种方式弥补了面向对象编程(OOP)的不足,除了类(classes)以外,AOP提供了切面。切面对关注点进行模块化,例如横切多个类型和对象的事务管理
Spring的一个关键的组件就是AOP框架,可以自由选择是否使用AOP 提供声明式企业服务,特别是为了替代EJB声明式服务。最重要的服务是声明性事务管理,这个服务建立在Spring的抽象事物管理之上。允许用户实现自定义切面,用AOP来完善OOP的使用,可以把Spring AOP看作是对Spring的一种增强

127.Spring的核心类有哪些,各有什么作用

  • BeanFactory:产生一个新的实例,可以实现单例模式
  • BeanWrapper:提供统一的get及set方法
  • ApplicationContext:提供框架的实现,包括BeanFactory的所有功能

128.介绍一个spring的事物管理

事务就是对一系列的数据库操作(比如插入多条数据)进行统一的提交或回滚操作,如果插入成功,那么一起成功,如果中间有一条出现异常,那么回滚之前的所有操作。这样可以防止出现脏数据,防止数据库数据出现问题。
开发中为了避免这种情况一般都会进行事务管理。Spring中也有自己的事务管理机制,一般是使用TransactionMananger进行管 理,可以通过Spring的注入来完成此功能。spring提供了几个关于事务处理的类:
TransactionDefinition //事务属性定义
TranscationStatus //代表了当前的事务,可以提交,回滚。
PlatformTransactionManager这个是spring提供的用于管理事务的基础接口,其下有一个实现的抽象类 AbstractPlatformTransactionManager,我们使用的事务管理类例如 DataSourceTransactionManager等都是这个类的子类。

129.怎样用注解的方式配置spring?

  • Spring在2.5版本以后开始支持用注解的方式来配置依赖注入。可以用注解 的方式来替代XML方式的bean描述,可以将bean描述转移到组件类的内部,只需要在相关类上、方法上或者字段声明上使用注解即可。注解注入将会被容器在XML注入之前被处理,所以后者会覆盖掉前者对于同一个属性的处理结果。
  • 注解装配在Spring中是默认关闭的。所以需要在Spring文件中配置一下才能使用基于注解的装配模式。如果你想要在你的应用程序中使用关于注解的方法的话,请参考如下的配置。
  • <context:annotation-config/>标签配置完成以后,就可以用注解的方式在Spring中向属性、方法和构造方法中自动装配变量。
    下面是几种比较重要的注解类型:
    • @Required:该注解应用于设值方法。
    • @Autowired:该注解应用于有值设值方法、非设值方法、构造方法和变量。
    • @Qualifier:该注解和@Autowired注解搭配使用,用于消除特定bean自动装配的歧义。
    • JSR-250 Annotations:Spring支持基于JSR-250 注解的以下注解,@Resource、@PostConstruct 和 @PreDestroy。

130.简述一下spring框架的优点?

  • 方便解耦,简化开发 (高内聚低耦合)
    Spring就是一个大工厂(容器),可以将所有对象创建和依赖关系维护,交给Spring管理;Spring工厂是用于生成bean
  • AOP编程的支持
    Spring提供面向切面编程,可以方便的实现对程序进行权限拦截、运行监控等功能
    声明式事务的支持,
  • 只需要通过配置就可以完成对事务的管理,而无需手动编程
    方便程序的测试
  • Spring对Junit4支持,可以通过注解方便的测试Spring程序
    方便集成各种优秀框架
  • Spring不排斥各种优秀的开源框架,其内部提供了对各种优秀框架(如:Struts、Hibernate、MyBatis、Quartz等)的直接支持
原创文章 52 获赞 3 访问量 2438

猜你喜欢

转载自blog.csdn.net/m0_47572402/article/details/106127675