springMVC面试集锦(一)

 1、对Spring的理解

Spring是一个轻量级的控制反转(IOC)和面向切面(AOP)的容器性框架。

面向切面编程:是指在程序运行期间将某段代码,动态的切入到某个指定方法的指定位置。

轻量级的框架:不依赖于其他东西直接使用的框架。什么是轻量级(它的入侵性非常的小,耦合性低。可以很轻易地替换掉它,而不需要太大的改变,他对别的组件依赖非常小)

2、IOC和DI的理解和区别

IOC(控制反转):在Spring之前,需要对象实例的时候我们自己new,Spring之后,把new对象的权利交给了Spring容器,所以叫控制反转。

DI(依赖是注入):我们拿bean的时候通过名字来拿,这一过程由容器来完成,我们依赖容器注入这个实例才能使用,所以叫依赖是注入。

 DI和IOC没有区别只是从不同的角度来解释spring。

3、面向切面编程AOP在工作中的体现

  解释:直白点说就是实现或者调用某个方法之前/之后,自动执行一系列的自定义语句。(例如:mybatic的日志包需要AOP)

  优点:利用Aop可以对业务逻辑各个部分进行分离,从而降低各个逻辑部分的耦合性,提高代码的可重用性,同时提高开发效率。

  五大通知:before(前置通知) after-returning(后置)after(最终)around(环绕) after-throwing(异常通知)springMVC面试集锦(一)_第1张图片springMVC面试集锦(一)_第2张图片


 

4、springMVC的工作流程

springMVC面试集锦(一)_第3张图片

1、用户发送请求到前端控制器(DispatcherServlet)

2、前端控制器(dispatcherServlet)接受发过来的请求到handleMapper

3、handelMapper处理器映射器根据请求找到相对应的handerAdapater处理器适配器(处理器适配器就是那些拦截器或controller)

4、handlerAdapter处理器适配器,处理请求,返回一个ModelAndView

5、ViewResolver视图解析器,先根据ModelAndView设计的view解析具体视图

6、然后再将model模型数据渲染到view上,jsp试图解析器默认使用jstl

5、SpringMvc的三大组件

处理器映射器、处理器适配器、视图解析器

需要用户开发的组件有:handler、view

6、java中springMvc的三种注入

构造器注入,setter注入、接口注入

7、beanFactory和ApplicationContext的区别

  BeanFactory采用的是延迟加载的形式注入Bean的,即只有在使用到某个Bean的时候才调用getBean(),才对改Bean进行实例化;二ApplicationContext则相反,

他是在容器启动时,一次性创建了Bean

8、以下是三种较常见的 ApplicationContext 实现方式:

1ClassPathXmlApplicationContext:从classpathXML配置文件中读取上下文,并生成上下文定义。应用程序上下文从程序环境变量中取得。

ApplicationContext context = new ClassPathXmlApplicationContext(“bean.xml”);

2FileSystemXmlApplicationContext :由文件系统中的XML配置文件读取上下文。

ApplicationContext context = new FileSystemXmlApplicationContext(“bean.xml”);

3XmlWebApplicationContext:由Web应用的XML文件读取上下文。

9、spring有几种配置

a:基于xml的配置

b:基于注解的配置

d:基于java的配置

10、如何用基于XML配置的方式配置Spring

Spring框架中,依赖和服务需要在专门的配置文件来实现,我常用的XML格式的配置文件。这些配置文件的格式通常用开头,然后一系列的bean定义和专门的应用配置选项组成。

SpringXML配置的主要目的时候是使所有的Spring组件都可以用xml文件的形式来进行配置。这意味着不会出现其他的Spring配置类型(比如声明的方式或基于Java Class的配置方式)

SpringXML配置方式是使用被Spring命名空间的所支持的一系列的XML标签来实现的。Spring有以下主要的命名空间:contextbeansjdbctxaopmvcaso

 

    

    

    

 

    

 

下面这个web.xml仅仅配置了DispatcherServlet这件最简单的配置便能满足应用程序配置运行时组件的需求。

  Archetype Created Web Application

 

  

        spring

            

                org.springframework.web.servlet.DispatcherServlet

            

        1

    

 

    

        spring

        /

    

 

11、如何用基于Java配置的方式配置Spring

SpringJava配置的支持是由@Configuration注解和@Bean注解来实现的。由@Bean注解的方法将会实例化、配置和初始化一个新对象,这个对象将由SpringIoC容器来管理。@Bean声明所起到的作用与 元素类似。被@Configuration所注解的类则表示这个类的主要目的是作为bean定义的资源。被@Configuration声明的类可以通过在同一个类的内部调用@bean方法来设置嵌入bean的依赖关系。

最简单的@Configuration 声明类请参考下面的代码:

@Configuration

public class AppConfig

{

    @Bean

    public MyService myService() {

        return new MyServiceImpl();

    }

}

对于上面的@Beans配置文件相同的XML配置文件如下:

    

上述配置方式的实例化方式如下:利用AnnotationConfigApplicationContext 类进行实例化

public static void main(String[] args) {

    ApplicationContext ctx = new AnnotationConfigApplicationContext(AppConfig.class);

    MyService myService = ctx.getBean(MyService.class);

    myService.doStuff();

}

要使用组件组建扫描,仅需用@Configuration进行注解即可:

@Configuration

@ComponentScan(basePackages = "com.howtodoinjava")

public class AppConfig  {

    ...

}

在上面的例子中,com.acme包首先会被扫到,然后再容器内查找被@Component 声明的类,找到后将这些类按照Sring bean定义进行注册。

如果你要在你的web应用开发中选用上述的配置的方式的话,需要用AnnotationConfigWebApplicationContext 类来读取配置文件,可以用来配置SpringServlet监听器ContrextLoaderListener或者Spring MVCDispatcherServlet

    

    

        contextClass

        

            org.springframework.web.context.support.AnnotationConfigWebApplicationContext

        

    

 

    

    

        contextConfigLocation

        com.howtodoinjava.AppConfig

    

 

    

    

        org.springframework.web.context.ContextLoaderListener

    

 

    

    

        dispatcher

        org.springframework.web.servlet.DispatcherServlet

        

        

            contextClass

            

                org.springframework.web.context.support.AnnotationConfigWebApplicationContext

            

        

        

        

            contextConfigLocation

            com.howtodoinjava.web.MvcConfig

        

    

 

    

    

        dispatcher

        /app/*

    

12、怎样用注解的方式配置Spring

Spring2.5版本以后开始支持用注解的方式来配置依赖注入。可以用注解的方式来替代XML方式的bean描述,可以将bean描述转移到组件类的内部,只需要在相关类上、方法上或者字段声明上使用注解即可。注解注入将会被容器在XML注入之前被处理,所以后者会覆盖掉前者对于同一个属性的处理结果。

注解装配在Spring中是默认关闭的。所以需要在Spring文件中配置一下才能使用基于注解的装配模式。如果你想要在你的应用程序中使用关于注解的方法的话,请参考如下的配置。

 

   

   

 

 标签配置完成以后,就可以用注解的方式在Spring中向属性、方法和构造方法中自动装配变量。

下面是几种比较重要的注解类型:

1. @Required该注解应用于设值方法。

2. @Autowired该注解应用于有值设值方法、非设值方法、构造方法和变量。

3. @Qualifier该注解和@Autowired注解搭配使用,用于消除特定bean自动装配的歧义。

4. JSR-250 AnnotationsSpring支持基于JSR-250 注解的以下注解,@Resource@PostConstruct @PreDestroy



你可能感兴趣的:(springMVC面试集锦(一))