Spring知识点

1、spring作用是什么?

核心内容--DI 依赖注入

核心内容--AOP 面向切面编程

ssm整合开发  使用spring两大核心技术整合springmvcmybatis

2、如何理解DI?  IOC?

  1. DIDependency Injection  依赖注入

将组件的构建和使用分开。

如项目中Service实现类中需要Dao的对象,可以在service中声明dao接口类型,运行时由springservice中的dao属性注入实现类对象。

  1. IOCInversion of Control  控制反转

将组件对象的控制权从代码本身转移到外部容器(spring)。

之前对象的创建、属性赋值在代码段完成,现在spring容器帮助管理对象,完成创建对象,给属性赋值。

一般开发中 daoservice的实现类对象由spring管理。

3、如何理解AOP

AOPAspect Oriented Programming面向切面编程

AOP的目标:

让我们可以“专心做事”

AOP原理:

将复杂的需求分解出不同方面,将散布在系统中的公共功能集中解决

采用代理机制组装起来运行,在不改变原程序的基础上对代码段进行增强处理,增加新的功能

4、aop增强类型分类

  1. 前置增强 类实现MethodBeforeAdvice接口

       执行目标方法之前 植入

     重写了public void before(方法对象Method m, 方法参数列表Object[] arg1,方法所在类的对象 Object arg2) throws Throwable {}

  1. 后置增强  类实现AfterReturningAdvice接口

后置增强处理,在目标方法正常执行(不出现异常)后织入增强处理

           重写了public void afterReturning(返回值类型Object arg0, Method arg1, Object[] arg2, Object arg3) throws Throwable {}

  1. 最终增强 类实现AfterAdvice接口

最终增强处理,不论方法是否抛出异常,都会在目标方法最后织入增强处理

环绕增强  类实现MethodInterceptor接口

环绕增强处理,在目标方法的前后都可以织入增强处理

重写   public Object invoke(MethodInvocation arg0) throws Throwable {}

  MethodInvocationproceed();  执行目标方法 注意接收返回值

  proceed方法的返回值就是目标方法执行后的返回值

 

  proceed()方法之前的处理相当于前置增强

  proceed()方法之后的处理相当于后置增强

 

  注意 invoke方法的返回值要设置为proceed方法的返回值

  1. 异常增强  实现ThrowsAdvice 接口

异常增强处理,在目标方法抛出异常后织入增强处理

void afterThrowing ( [Method method, Object[] arguments, Object target,] Throwable ex )

方法名必须是afterThrowing

方法的入参只有最后一个是必须的,前三个入参是可选的,但是前三个参数要么都提供,要么一个也不提供。

     

5、applicationContext.xml配置文件中的

  Bean节点 id、name 属性的区别

      id(值唯一) name(值可以重复)

  

6、spring依赖注入的两种方式

setter方法注入

       <bean name="sql" class="com.entity.Book">

            <property name="属性名bid" value="2"></property>

            <property name="bname" value="sql基础"></property>

      </bean>

构造方法注入

     <bean name="html" class="com.entity.Book">

            <constructor-arg value=" html基础" index="1"></constructor-arg>

            <constructor-arg value="3" index="0"></constructor-arg>

      </bean>         

7、spring容器默认创建的对象默认是单例的

  默认<bean scope="singleton"/>

  如果想修改对象是多实例的 如何设置?

 Scope = “prototype”

8、spring提供了哪些注解实现配置aop

@Aspect --增强类

@Before("植入点语法") 前置增强方法   

@After 最终增强

@AfterReturning 后置增强

@AfterReturning(pointcut=" execution(public * com.pb.service.*.*(..))",returning="方法参数名returnVal")

@AfterThrowing    异常增强

@Around  环绕增强

 

9、ssm整合步骤及每个配置文件中配置的内容

 ssm整合最终版本步骤:

  1. 导入jar
  2. web.xml中配置

  springmvc的前端控制器、过滤器

  spring监听器、配置文件

  1. 三个框架的核心配置文件

 spring-servlet.xml

 MyBatis-Configuration.xml  null值处理、实体类的别名

 appliactionContext.xml

   数据源、sqlSessionFactory(注入数据源、加载mybatis核心配置文件、加载实体类映射文件)、事务管理器(注入数据源)

   启动事务注解配置(注入事务管理器)

   service实现类的包名

   启动dao省略实现类 配置dao接口和mapper文件所在的包

  

  1. 建包 实体类 dao接口
  • 实体类映射文件

              注意四个一致

            service接口 service实现类

  • @Service   业务类;@Transactional   事务处理

                dao接口作为属性  @Autowired

            控制器  service接口类型作为属性  使用@Autowired 自动装配属性

            页面

10、都学过哪些框架?每个框架的特点是什么?

  • SpringMvc:
  1. 是一个基于mvc设置模式的控制层框架
  2. 核心控制器(前端控制器)是一个Servlet类(DispatcherServlet
  3. 控制器类单实例的(不要随便设置属性)
  4. 采用注解简化配置
  5. 请求参数、servlet api等数据 通过入参数的方式
  6. 支持拦截器
  • Mybatis:
  1. 是一个实现数据持久化、基于orm映射的数据层框架
  2. 基于jdbc,对jdbc实现了封装
  3. 动态的sql(提供了很多的节点实现动态拼接sql语句)
  4. 自己定义sql语句,非常灵活
  5. 简单易学

  • Spring:
  1. 核心内容--DI 依赖注入
  2. 核心内容--AOP 面向切面编程
  3. ssm整合开发  使用spring两大核心技术整合springmvcmybatis
  • Ssm:

使用注解配置

11、BeanFactory与ApplicationContext的区别

BeanFactory  spring框架中最核心的一个API接口  初始化bean、管理bean的生命周期

ApplicationContext  BeanFactory的子接口

  具备BeanFactory接口的功能同时具备一些配置文件的支持、国际化等操作的支持。

12、@Resource与@Autowired的区别

@Autowired   属于Spring的注解               

org.springframework.beans.factory.annotation.Autowired

      @Autowired  默认按类型装配

@Resource   不属于Spring的注解,JDK1.6支持的注解   

      javax.annotation.Resource

@Resource  默认按名称进行装配,通过name属性进行指定

      @Resource(name="userDao")

    private UserDao userDao;

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值