Spring

1. spring MVC流程

Spring_第1张图片
https://www.cnblogs.com/HigginCui/p/5856780.html     

 2. 依赖注入三种方式

构造方法注入 ,setter方法注入,接口注入

3. Spring作用域

Singleton,Prototype,request,session,globlesession

4. Spring IoC容器配置Bean的方式?

基于XML文件进行配置, 基于注解进行配置,基于Java程序进行配置

5. 注解

可以用@Component、@Controller、@Service、@Repository注解来标注需要由Spring IoC容器进行对象托管的类。这几个注解没有本质区别,只不过@Controller通常用于控制器,@Service通常用于业务逻辑类,@Repository通常用于仓储类(例如我们的DAO实现类),普通的类用@Component来标注。

6. 阐述Spring框架中Bean的生命周期?

① Spring IoC容器找到关于Bean的定义并实例化该Bean。

② Spring IoC容器对Bean进行依赖注入。

③ 如果Bean实现了BeanNameAware接口,则将该Bean的id传给setBeanName方法。

④ 如果Bean实现了BeanFactoryAware接口,则将BeanFactory对象传给setBeanFactory方法。

⑤ 如果Bean实现了BeanPostProcessor接口,则调用其postProcessBeforeInitialization方法。

⑥ 如果Bean实现了InitializingBean接口,则调用其afterPropertySet方法。

⑦ 如果有和Bean关联的BeanPostProcessors对象,则这些对象的postProcessAfterInitialization方法被调

7. Spring中自动装配的方式有哪些?

- no:不进行自动装配,手动设置Bean的依赖关系。

- byName:根据Bean的名字进行自动装配。

- byType:根据Bean的类型进行自动装配。

- constructor:类似于byType,不过是应用于构造器的参数,如果正好有一个Bean与构造器的参数类型相同则可以自动装配,否则会导致错误。

- autodetect:如果有默认的构造器,则通过constructor的方式进行自动装配,否则使用byType的方式进行自动装配。

8. AOP一些概念

a. 连接点(Joinpoint):程序执行的某个特定位置(如:某个方法调用前、调用后,方法抛出异常后)。一个类或一段程序代码拥有一些具有边界性质的特定点,这些代码中的特定点就是连接点。Spring仅支持方法的连接点

b. 切点(Pointcut):如果连接点便相当于数据中的记录,那么切点相当于查询条件,一个切点可以匹配多个连接点。Spring AOP的规则解析引擎负责解析切点所设定的查询条件,找到对应的连接点。

c. 增强(Advice):增强是织入到目标类连接点上的一段程序代码。Spring提供的增强接口都是带方位名的,如:BeforeAdvice、AfterReturningAdvice、ThrowsAdvice等。很多资料上将增强译为“通知”,这明显是个词不达意的翻译,让很多程序员困惑了许久。

说明:Advice在国内的很多书面资料中都被翻译成”通知”,但是很显然这个翻译无法表达其本质,有少量的读物上将这个词翻译为”增强”,这个翻译是对Advice较为准确的诠释,我们通过AOP将横切关注功能加到原有的业务逻辑上,这就是对原有业务逻辑的一种增强,这种增强可以是前置增强、后置增强、返回后增强、抛异常时增强和包围型增强。

1) 前置增强 (org.springframework.aop.BeforeAdvice)   表示在目标方法执行前来实施增强

2) 后置增强 (org.springframework.aop.AfterReturningAdvice)   表示在目标方法执行后来实施增强

3) 环绕增强 (org.aopalliance.intercept.MethodInterceptor)   表示在目标方法执行前后同时实施增强

4) 异常抛出增强 (org.springframework.aop.ThrowsAdvice)   表示在目标方法抛出异常后来实施增强

5) 引介增强 (org.springframework.aop.introductioninterceptor)   表示在目标类中添加一些新的方法和属性

d. 引介(Introduction):引介是一种特殊的增强,它为类添加一些属性和方法。这样,即使一个业务类原本没有实现某个接口,通过引介功能,可以动态的未该业务类添加接口的实现逻辑,让业务类成为这个接口的实现类。

e. 织入(Weaving):织入是将增强添加到目标类具体连接点上的过程,AOP有三种织入方式:①编译期织入:需要特殊的Java编译期(例如AspectJ的ajc);②装载期织入:要求使用特殊的类加载器,在装载类的时候对类进行增强;③运行时织入:在运行时为目标类生成代理实现增强。Spring采用了动态代理的方式实现了运行时织入,而AspectJ采用了编译期织入和装载期织入的方式。

f. 切面(Aspect):切面是由切点和增强(引介)组成的,它包括了对横切关注功能的定义,也包括了对连接点的定义。

9.  AOP使用场景

权限,缓存,内容传递,错误处理,懒加载,调试,记录跟踪 优化 校准,性能优化,持久化,资源池,同步,事务

10.  Spring优缺点

1) 非侵入式:支持基于POJO的编程模式,不强制性的要求实现Spring框架中的接口或继承Spring框架中的类。

2)使用Spring的IOC容器,将对象之间的依赖关系交给Spring,降低组件之间的耦合性,让我们更专注于应用逻辑

3)AOP(面向切面编程):将所有的横切关注功能封装到切面(aspect)中,通过配置的方式将横切关注功能动态添加到目标代码上,进一步实现了业务逻辑和系统服务之间的分离。另一方面,有了AOP程序员可以省去很多自己写代理类的工作。

4)对主流的框架提供了很好的集成支持,如hibernate,Struts2,JPA等

5) Spring DI机制降低了业务对象替换的复杂性

6) Spring的高度可开放性,并不强制依赖于Spring,开发者可以自由选择Spring部分或全部

缺点:1)jsp中要写很多代码、控制器过于灵活,缺少一个公用控制器

2)Spring不支持分布式,这也是EJB仍然在用的原因之一。

http://www.importnew.com/22087.html

你可能感兴趣的:(Spring)