关于Spring的笔试题(一)

1.Spring框架优点?(面试题)

首先说一下为什么要使用Spring框架:在传统的Java开发中具有高度的耦合性,一个项目中或者一个逻辑功能的实现时,往往一个对象需要依赖很多的对象来完成自己的操作,这样就造成了两个类的依赖关系太强,改一个地方,往往牵扯很多类牵扯大量的代码。 此时Spring就被开发出来, 它可以管理对象和对象之间的依赖关系,我们不需要自己建立对象,把这部分工作全部转交给容器完成,具有低耦合,对代码没有侵略性,对服务器没有依赖性特点的框架举个例子:我们在没有使用Spring之前,在service层引用Dao层的对象时,需要在servicenew一个Dao层的对象,这样曾与层之间的依赖性就很严重。而使用Spring框架之后,只需要在xml文件中配置就可以了,至于对象是怎么创建的,关系是怎么组合的都交给了spring框架去实现。

Spring框架优点:

方便解耦,简化开发:

Spring就是一个大工厂,可以将所有对象创建和依赖关系维护,交给Spring管理(代码没有入侵性)

AOP编程的支持:

Spring提供面向切面编程,可以方便的实现对程序进行权限拦截、运行监控等功能(便于功能扩展)

声明式事务的支持:

只需要通过配置就可以完成对事务的管理,而无需手动编程

方便程序的测试:

SpringJunit4支持,可以通过注解方便的测试Spring程序

方便集成各种优秀框架:

Spring不排斥各种优秀的开源框架,其内部提供了对各种优秀框架(如:StrutsHibernateMyBatisQuartz等)的直接支持

降低JavaEE API的使用难度:

Spring JavaEE开发中非常难用的一些APIJDBCJavaMail、远程调用等),都提供了封装,使这些API应用难度大大降低

--------笔记

2. IOCDI分别是什么?区别?(面试题)

IOC控制反转是把传统上由程序代码直接操控的对象的调用权交给容器,通过容器来实现对象组件的装配和管理。所谓的"控制反转"就是对组件对象控制权的转移,从程序代码本身转移到了外部容器,由容器来创建对象并管理对象之间的依赖关系。

DISpring通过控制反转(IOC)的技术促进了松耦合。当应用了IOC,一个对象依赖的其它对象会通过被动的方式传递进来,而不是这个对象自己创建或者查找依赖对象,是容器在对象初始化时不等对象请求就主动将依赖传递给它。

简单说就是:IoC(控制反转):本来需要你自己new对象,现在交给spring容器帮你new对象,权利从你手里反转到容器手里了

DI(依赖注入):(依赖)就是依赖spring提供的容器,(注入)类中属性的值通过容器注入进去,或者通过引用为属性注入值

通过IOC反转控制DI依赖注入完成各个层之间的注入,使得层与层之间实现完全脱耦,增加运行效率利于维护。

3.Bean的实例化方式?

1. 使用构造器实例化

这种实例化的方式可能在开发中用到的是最多的,因为在xml文件中配置简单并且也不需要额外的工厂类来实现。

要注意的是:要实例化的类中如果有构造器的话,一定要有一个无参构造器。

 

 

2. 使用静态工厂方法实例化

通过这种方式进行实例化就要具备两个条件:

(一)、要有工厂类及其工厂方法;(二)、工厂方法是静态的。

 

 

  id是实例化的对象的名称,class是工厂类,也就实现实例化类的静态方法所属的类,factory-method是实现实例化类的静态方法。

 

3. 使用实例化工厂方法实例化

这个方法和静态工厂方法不同之处在于使用该实例化方式工厂方法不需要是静态的,但是在spring的配置文件中需要将工厂进行配置,还需要配置bean

 

 

 这里需要配置两个bean,第一个bean使用的构造器方法实例化工厂类,第二个bean中的id是实例化对象的名称,factory-bean对应的被实例化的工厂类的对象名称,也就是第一个bean的id,factory-method是非静态工厂方法。

 

4.Bean的属性注入方式有哪些?

1. 构造方法注入

假设我有一个User4,如下:

 

User4中有一个变量叫做username,我希望通过构造方法给它注入值,那我在User4中提供相应的构造方法即可,然后在Spring的配置文件中做如下配置即可:

 

 

2. set方法注入

假设我有一个User5,如下:

 

通过set方法注入,那么在User5中我们首先要提供set方法,然后在Spring配置文件中做如下配置即可:

 

 

3. p名称空间注入

首先,我们需要在Spring配置的bean节点中添加p名称空间,如下:

 

现在假设我有一个User6,如下:

 

User6中有一个username属性,为属性提供set方法,在配置文件中通过p名称空间进行注入:

 

直接在bean节点中通过p:username执行相应的值即可。

  • 0
    点赞
  • 26
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
### 回答1: Spring Cloud是一个开源的微服务框架,它提供了一系列的工具和组件来协助构建和维护基于微服务的应用程序。它提供了一套解决分布式系统中常见问题的解决方案,包括配置管理、服务注册与发现、负载均衡、断路器等。 在实践中,Spring Cloud通常与Spring Boot框架配合使用,Spring Boot是一个快速开发Web应用程序的框架,它提供了一个默认配置,使得开发人员可以轻松地构建起一系列的Web应用程序。Spring Boot与Spring Cloud的结合可以让我们更便捷地构建微服务应用程序。 在实际项目中,我们通常需要多种微服务协同工作,比如通过网关来实现路由、通过注册中心来管理服务、通过配置中心来管理配置、通过熔断器来保持服务的高可用性等等,Spring Cloud可以为我们提供开箱即用的解决方案。 总之,Spring Cloud是一个非常优秀的微服务框架,它可以帮助我们快速构建出高可用的分布式应用程序。无论是小型团队还是大型企业,都可以使用Spring Cloud来减少复杂性和提高效率。 ### 回答2: Spring Cloud是一个开发企业级分布式应用程序的框架,它基于SpringBoot来构建分布式应用,提供了一系列的工具和组件来简化分布式系统开发和部署。Spring Cloud能够将分布式应用中的各个服务进行互相调用和管理,以此保证分布式应用的稳定性和可扩展性。 Spring Cloud提供了丰富的组件来构建分布式应用,其中最重要的是服务注册和发现、配置中心、负载均衡、断路器等。服务注册和发现是必须掌握的组件,它能够在分布式应用中实现服务的自动发现和管理。在使用Spring Cloud的注册中心时,我们需要创建一个Eureka服务器,它负责管理所有的服务实例并向客户端提供可用服务的列表。 配置中心是另一个必须掌握的组件,它能够将分布式应用中的配置信息统一管理。Spring Cloud Config提供了一个配置服务器,并通过Git存储来管理配置文件。 负载均衡能够确保服务请求被分摊到多个节点上,以此提高分布式应用的性能和可靠性。Spring Cloud Load Balancer是负载均衡组件,它能够根据负载均衡算法来选择服务实例。 断路器组件能够在某个服务故障的情况下,保护分布式应用系统不会完全崩溃。Spring Cloud Circuit Breaker提供了这个功能,它能够在服务出现故障时,自动切换到备用服务上以确保系统的可用性。 总之,Spring Cloud提供了丰富的组件来简化分布式应用的开发、管理和部署,是开发分布式应用的不二选择。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值