spring知识点总结

1.spring是什么,有什么特点?

Spring是一个开源的容器性质的轻量级框架。

三大特点: IOC DI AOP

2.spring框架有哪些优点?

一、容器,Spring框架是一个容器,能够管理项目中的所有对象

二、IOC(控制反转),Spring框架将创建对象的方式反转了,从new一个对象变成了从容器中获取,或自动注入

三、AOP(面向切面编程),简而言之,将纵向重复的代码抽取出来,Spring为容器中管理的对象生成动态代理对象

 切面代码如下

@Aspect
@Component
public class CalculatorAspect {
    
    
    //声明该方法是一个前置通知:在目标方法开始之前执行
    @Before("execution(public int aop.impl.CalculatorImpl.add(int,int))")
    public void before(JoinPoint pt){
        String methodName = pt.getSignature().getName();
        List<Object> args  = Arrays.asList(pt.getArgs());
        System.out.println("之前的方法名字是"+methodName+"参数为:"+args);
    }

 3.IOC的作用

解耦合

4.什么是DI?

DI就是依赖注入,需要有IOC环境,在Spring框架生成bean对象时,动态的将依赖对象注入到bean对象中去,同时也能解耦合

5.Spring框架中BeanFactory 和ApplicationContext两种方式启动容器有什么差别?

     BeanFactory接口是最原始的接口,ApplicationContext是对BeanFactory的拓展,ApplicationContext会在加载配置文件时初始化Bean,而BeanFactory会等到使用某个bean时才会初始化相关bean

7.Spring中bean标签的属性及用途

name属性:bean的名称,在代码中获取手动获取bean时用到

class属性:bean的类路径 从包一级开始

id属性:bean的id,当其他bean引用该bean时用到   -ref

scope属性:常见的两个属性值:singleton(单例),prototype(多例),默认是单例,即每次获取的bean都是同一个bean

8.Spring通过配置<bean>标签来生成bean有哪三种方式?

一。空参构造方式

<bean id="shopDao" class="事务xml.ShopDaoImpl">
    <property name="jdbcTemplate" ref="jdbcTemplate"></property>
    </bean>

 

二。静态工厂方式

三。实例工厂方式

9.Spring中对bean的属性注入有哪些方式?

注入方式最常用的是set方法注入,还有构造函数注入,p命名空间注入、spel注入,还有其他复杂注入如

数组,List,map注入

list注入如下

<beans>
  <bean id="at" class="test.array.ArrayTest">
    <property name="names">
      <list>
        <value>aaa</value>
        <value>bbb</value>
      </list>
    </property>
  </bean>
</beans>

 

10.bean的生命周期

bean的生命周期包括,bean的定义,bean的初始化,bean的调用,bean的销毁。

在配置文件里面通过配置bean完成bean的定义,可以通过配置bean的 init-method方法设置bean的初始化方法

得到bean的实例对象就是bean 的调用,配置bean的destory-method属性来设置bean的销毁方法

11.如何开启Spring中的注解功能?

在Spring的主配置文件中通过<context:component-scan base-package="包名" />来开启

12.使用注解配置bean时有哪些注解方式,有什么区别?

@Component  最早期只有这一个注解

@Service @Controller @Repository ,功能上无区别,只用来区分bean所在的架构层

13.什么注解指定对象的作用范围

@Scope(scopeName="singleton")  指定bean为单例模式

14.如何用注解来为属性注入值?

@Value("值")   //直接对属性注入基本类型值

@Autowired //自动装备该类型的值,有时要用到@Qualifier()来区分

@Resource(name,type) //可以设置按名称或者按类型装配

15.Spring如何实现AOP

Spring  可以  为所有的Service层的类生成动态代理对象

@Aspect
@Component
public class CalculatorAspect {
    
    
    //声明该方法是一个前置通知:在目标方法开始之前执行
    @Before("execution(public int aop.impl.CalculatorImpl.*(int,int))") //为该类下的所有方法加入前置通知
    public void before(JoinPoint pt){
        String methodName = pt.getSignature().getName();
        List<Object> args  = Arrays.asList(pt.getArgs());
        System.out.println("之前的方法名字是"+methodName+"参数为:"+args);
    }

 16.SpringAOP有那5种类型的通知?

前置通知 @Before("execution(类的路径)")

后置通知 @After()   //不管方法是否有异常都调用

返回通知 @After-returning   //在方法无异常后调用通知

异常通知 @After-throwing    //在方法抛出异常时调用通知

环绕通知 @Around    //在方法执行之前   和之后都调用通知

 17.AOP名词理解

Target   被代理的对象

Advice  增强的代码(一个或多个方法)

Proxy    将Advice植入Target后生成的代理对象,代理方式:jdk动态代理,cglib代理

Joinpoint  连接点,目标对象中,所有可以增强的方法(单个方法)

Pointcut 切入点,对哪些连接点进行增强的断言 ,这是把Advice和对象方法连接的关键,execution

Aspect 切面,包含多个Advice的类,可以横切一个或多个Target对象

 

posted @ 2020-03-26 14:04  java奇才  阅读(231)  评论(2编辑  收藏  举报