加载中...
加载中...
Spring面试总结

1. 简介一下Spring框架。

答:Spring框架是一个开源的容器性质的轻量级框架。主要有三大特点:容器、IOC(控制反转)、AOP(面向切面编程)。


2. Spring框架有哪些优点?谈谈你的看法。

答:

Sping 框架的核心就是IOC控制反转和DI依赖注入,并通过这两方面实现松耦合。


Spring框架主要有三大优点:
(1) 容器。Spring框架是一个容器,能够管理项目中的所有对象。

(2) IOC(控制反转)。Spring将创建对象的方式反转了,从程序员自己创建反转给了程序创建。

(3) AOP(面向切面)。面向切面编程,就是将纵向重复的代码横向抽取出来。Spring框架应用了面向切面的思想,主要体现在为容器中管理的对象生成动态代理对象。


3. 什么是IOC?

答:IOC:控制反转,指得是将对象的创建权反转给Spring。作用是实现了程序的解耦合。、


4. 什么是DI?

答:DI:依赖注入,需要有IOC环境,在Spring创建Bean对象时,动态的将依赖对象注入到Bean对象中去。依赖注入最大的好处就是解耦合。

5. Spring框架中属性注入有哪几种方式:

答:Spring中的输入注入方式包括set方法注入、构造函数注入、p名称空间注入、spel注入,除此之外,还包括复杂方式注入,如数组、List、Map、Properties等属性的注入。



使用属性的setter方法注入 ,这是最常用的方式;
使用构造器注入;
注解注入

接口注入


 属性注入即通过setXxx()方法注入Bean的属性值或依赖对象,由于属性注入方式具有可选择性和灵活性高的优点,因此属性注入是实际应用中最常采用的注入方式。

依赖注入的本质就是装配——自动装配:spring可以使用xml和注解来进行自动装配。自动装配就是开发人员不必知道具体要装配哪个bean的引用,这个识别的工作会由spring来完成,自动装配就是为了将依赖注入“自动化”的一个简化配置的操作


setter 方法注入

public class Student{

       public String name;

       public List scource;

getset器。。。

}

 

Public class Teacher{

       Private Student student;

       //添加studentset方法

        Public setStudent(Student student){

              This.student=student;

}

public static void main(String [] arg){

    System.out.println(student);

}

}

 

Xml配置

<!—就将student注入到teacher的属性里了-->

<bean id=”student” class=”…”/>

<bean id=”theacher” class=”…”>

       <property  name=”student”  ref=”student”/>

</bean>

 

构造器注入

public class Student{

       public String name;

       public List scource;

getset器。。。

}

 

Public class Teacher{

       Private Student student;

   //这里不需要studentset

   //需要Teacher构造器

   Public void Teacher(Sudent student){

    This.student=student;

}

public static void main(String [] arg){

    System.out.println(student);

}

}

 

Xml配置

<bean id=”student” class=”…”/>

<bean id=”teacher” class=”…”>

<constructor-arg index=”0” ref=”student”/>

</bean>

 

注解注入

@resource(“”) 按类型/@Autowrited按名称寻找

Xml配置

<context:annotation-config/>

<context:component-scan base-package=””/>


@Autowired注解是byType类型的

@Resouce注解, 这个注解也是java ee的,是byName类型的,  


常用注解

@Component :标准一个普通的spring Bean类。
@Repository:标注一个DAO组件类。
@Service:标注一个业务逻辑组件类。
@Controller:标注一个控制器组件类。

这些都是注解在平时的开发过程中出镜率极高,@Component、@Repository、@Service、@Controller实质上属于同一类注解,用法相同,功能相同,区别在于标识组件的类型。@Component可以代替@Repository、@Service、@Controller,因为这三个注解是被@Component标注的。


@RequestMapping 既可以作用在类级别,也可以作用在方法级别。当它定义在类级别时,标明该控制器处理所有的请求都被映射到路径下。
@RequestMapping中可以使用 method 属性标记其所接受的方法类型,如果不指定方法类型的话,可以使用 HTTP GET/POST 方法请求数据,但是一旦指定方法类型,就只能使用该类型获取数据。


@RequestParam :将请求的参数绑定到方法中的参数上,有required参数,默认情况下,required=true,也就是改参数必须要传。如果改参数可以传可不传,可以配置required=false。


@PathVariable中的参数可以是任意的简单类型,如int, long, Date等等。


@RequestBody : @RequestBody是指方法参数应该被绑定到HTTP请求Body上。@RequestBody主要用来接收前端传递给后端的json字符串中的数据的(请求体中的数据的);GET方式无请求体,所以使用@RequestBody接收数据时,前端不能使用GET方式提交数据,而是用POST方式进行提交。

@ResponseBody : @ResponseBody与@RequestBody类似,它的作用是将返回类型直接输入到HTTP response body中。 

https://blog.csdn.net/justry_deng/article/details/80972817 

 

@RestController :控制器实现了REST的API,只为服务于JSON,XML或其它自定义的类型内容,@RestController用来创建REST类型的控制器,与@Controller类型。@RestController就是这样一种类型,它避免了你重复的写@ResponseBody。




servlet三大作用域:request,session,application

request < session < application

1. request
request是表示一个请求,只要发出一个请求就会创建一个request,它的作用域:仅在当前请求中有效。

用处:常用于服务器间同一请求不同页面之间的参数传递,常应用于表单的控件值传递。

方法:request.setAttribute(); request.getAttribute(); request.removeAttribute(); request.getParameter().

2. session
服务器会为每个会话创建一个session对象,所以session中的数据可供当前会话中所有servlet共享。

会话:用户打开浏览器会话开始,直到关闭浏览器会话才会结束。一次会话期间只会创建一个session对象。

用处:常用于web开发中的登陆验证界面(当用户登录成功后浏览器分配其一个session键值对)。

方法:session.setAttribute(); session.getAttribute(); session.removeAttribute();

3. Application(ServletContext)
作用范围:所有的用户都可以取得此信息,此信息在整个服务器上被保留。Application属性范围值,只要设置一次,则所有的网页窗口都可以取得数据。ServletContext在服务器启动时创建,在服务器关闭时销毁,一个JavaWeb应用只创建一个ServletContext对象,所有的客户端在访问服务器时都共享同一个ServletContext对象;ServletContext对象一般用于在多个客户端间共享数据时使用;






架构 Spring   
没有更多推荐了 [去首页]
image
文章
357
原创
284
转载
73
翻译
0
访问量
199057
喜欢
47
粉丝
6
码龄
5年
资源
0

文章目录

加载中...
0
0