`
0kd07
  • 浏览: 20268 次
  • 性别: Icon_minigender_1
  • 来自: 廊坊
社区版块
存档分类
最新评论

Spring的一些总结

    博客分类:
  • Java
阅读更多
一、1.spring依赖库
   *SPRING_HOME/dist/spring.jar
   *SPRING_HOME/lib/jakarta-commons/commons-logging.jar
   *SPRING_HOME/lib/log4j/log4j-1.2.14.jar
    2.拷贝spring配置文件到src下(samples\jpetstore\war\WEB-INF\applicationContext.xml留住beans)
    3.拷贝log4j配置文件到src下(同上目录)

  *加提示:windows-Preferences-MyEclipse-Files and Editors-XML-XML Catalog-add-Key Type选中URI location选           中filesystem,找到dist\resources\spring-beans-2.0.xsd打开,Key Type改成Schema Location,Key后面           加上spring-beans-2.0.xsd

    4.在UserManager中提供构造函数或setter方法,spring将实例化好的UserDao实现注入给我们
    5.让spring管理我们的对象创建和依赖,必须在spring配置中进行定义
    6.编写客户端
spring Ioc容器的关键点:
       *必须将被管理的对象定义到spring配置文件中
       *必须定义构造函数或setter方法,让spring将对象注入过来


二、1.spring的普通属性注入
      参见:spring文档3.3章节

     什么是属性编辑器,作用?
         *自定义属性编辑器,spring配置文件中的字符串转换成相应的对象进行注入spring已经有内置的属性编辑器,我们可以根据需求自己定义属性编辑器
         *如何定义属性编辑器?
            *继承PropertyEditorSupport类,覆写setAsText()方法,参见:UtilDatePropertyEditor.java
            *将属性编辑器注册到spring中,参见:applicationContext-editor.xml
     
     依赖对象的注入方式,可以采用:
         *ref属性
         *<ref>标签
         *内部<bean>来定义

     如何将公共的注入定义描述出来?
         *通过<bean>标签定义公共的属性,指定abstract=true
         *具有相同属性的类在<bean>标签中指定parent属性

    2.spring Bean的作用域:
     
       scope可以取值:
            *singleton:每次调用getBean的时候返回相同的实例
            *prototype:每次调用getBean的时候返回不同的实例

    3.根据名称自动装配
      *default-autowire="byName"
      根据类型自动装配
      *default-autowire="byType"


三、spring对AOP的支持(采用Annotation的方式)

    1.spring依赖库
      *SPRING_HOME/dist/spring.jar
      *SPRING_HOME/lib/jakarta-commons/commons-logging.jar
      *SPRING_HOME/lib/log4j/log4j-1.2.14.jar
      ** SPRING_HOME/lib/aspectj/*.jar
    2.采用Aspect定义切面
    3.在Aspect定义Pointcut和Advice
    4.启用AspectJ对Annotation的支持并且将Aspect类和目标对象配置到Ioc容器中
   
      注意:在这种方法定义中,切入点的方法是不被执行的,它存在的目的仅仅是为了重用切入点,即Advice中通过方法名引用这个切入点

   AOP:
       *Cross cutting concern(横切性切入点)
       *Aspect(切面)
       *Advice(切入点的实现)
       *Pointcut(应用范围)
       *Joinpoint(执行的那个点,spring支持方法)
       *Weave(支入,advice应用的过程)
       *Target Object(目标对象)
       *Proxy(代理)
       *Introduction(增加方法)


    spring对AOP的支持(采用配置文件的方式)

    1.spring依赖库
      *SPRING_HOME/dist/spring.jar
      *SPRING_HOME/lib/jakarta-commons/commons-logging.jar
      *SPRING_HOME/lib/log4j/log4j-1.2.14.jar
      ** SPRING_HOME/lib/aspectj/*.jar
    2.配置如下:
      <aop:config>
           <aop:aspect id="security" ref="securityHandler">
                <aop:pointcut id="allAddMethod" expression="execution(* com.bjsxt.spring.UserManagerImpl.add*(..))"/>
                <aop:before method="checkSecurity" pointcut-ref="allAddMethod"/>
           </aop:aspect>
      </aop:config>


spring对AOP的支持

Aspect默认情况下不用实现接口,但对于目标对象(类),在默认情况下必须实现接口,如果没有实现接口必须引入CGLIB库

我们可以通过Advice中添加一个JoinPoint参数,这个值会由spring自动传入,从JoinPoint中可以取得参数值、方法名等等。


1.如果目标对象实现了接口,默认情况下会采用JDK的动态代理实现AOP
2.如果目标对象实现了接口,可以强制使用CGLIB实现AOP
3.如果目标对象没有实现接口,必须采用CGLIB库,spring会自动再JDK动态代理和CGLIB之间转换。


  如何强制使用CGLIB实现AOP?
       *添加CGLIB库,SPRING_HOME/cglib/*.jar
       *在spring配置文件中加入<aop:aspectj-autoproxy proxy-target-class="true"/>


JDK动态代理和CGLIB字节码生成的区别?
      *JDK动态代理只能实现了接口的类生成代理,而不能针对类
      *CGLIB是针对类实现代理,主要是对指定的类生成一个子类,覆盖其中的方法,因为是继承,所以该类或方法最好不要声明成final
分享到:
评论

相关推荐

    spring问题总结.zip

    这里,我们针对“spring问题总结.zip”文件中的主题进行详细的Spring框架知识探讨。 1. **依赖注入(Dependency Injection, DI)**:Spring的核心特性之一,通过DI,对象之间的依赖关系被反转,使得应用程序的组件...

    Spring总结(四)

    Spring个人总结,基于Annotation注解的方式开发,配置

    Spring学习笔记总结

    Spring学习笔记总结 Spring是一个基于Java的框架,它提供了一种简洁、灵活的方式来构建企业级应用程序。在这个笔记中,我们将总结Spring的主要概念和技术,包括IOC、AOP、MVC、Struts2和Hibernate的集成。 IOC...

    关于Spring学习总结

    Spring框架是Java开发中最常用的轻量级开源框架之一,它以其强大的依赖注入(Dependency Injection,DI)和面向切面编程(Aspect-Oriented Programming,AOP)能力而著名。本篇将深入探讨Spring的核心概念、主要模块...

    springCloud总结.docx

    要搭建 Eureka 服务注册中心,需要创建一个 Spring Boot 项目,并在 pom.xml 文件中引入相关依赖项,包括 `spring-cloud-starter` 和 `spring-cloud-starter-eureka-server`。然后,使用 `@EnableEurekaServer` 注解...

    spring知识点总结

    “知识点总结.xls”可能是一个整理好的Spring框架关键知识点的表格,可能包含了Spring的主要模块(如Core Container、Data Access/Integration、Web、AOP、Test等)、关键概念(如Bean、ApplicationContext、IoC容器...

    Spring Security学习总结一

    ### Spring Security核心概念与实践详解 #### Spring Security概述 在深入了解Spring Security之前,我们先回顾一下没有Spring Security的权限管理场景。在传统架构中,权限验证逻辑往往与业务逻辑紧密交织,导致...

    spring应用开发总结

    spring适用于扩展的详细笔记,针对《spring 3.x 企业应用开发实战》写的 详细总结,涵盖自己的心得体会

    Spring总结.xmind

    包含Spring简介,AOP,SpringMVC,集成JDBC,事务,ORM框架,Spring集成知识点总结,以思维导图的形式展示,xmind文件。

    Spring学习技术总结

    课程学习时候的笔记总结,这里面没有代码部分,全是知识点的总结,方便大家去面试回答

    SpringSecurity学习总结源代码

    总结,SpringSecurity是一个功能强大的安全框架,它为开发者提供了安全Web应用的全套解决方案。通过理解并熟练运用其核心概念和组件,我们可以构建出安全、健壮的应用程序。在学习过程中,分析提供的源代码和示例将...

    Spring框架基础总结

    Spring框架基础总结 一、Spring框架概述 Spring框架是一个开源的控制反转(IoC)和面向切面(AOP)的容器框架,旨在简化企业级Java应用的开发工作。Spring框架的核心价值在于其分层架构设计,使得开发者可以根据...

    SpringCloud使用总结

    SpringCloud子项目各种使用和配置方式,Spring Cloud Ribbon、Spring Cloud Feign。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。...

    maven和Spring的总结

    个人的maven和Spring的总结,里面含有Spring实现时候的一些细节

    Spring学习总结笔记

    搭建Spring环境首先需要引入必要的依赖库,例如:aopalliance、commons-logging、spring-aop、spring-beans、spring-context、spring-core和spring-expression等。这些库构成了Spring框架的基础,并且可以通过Maven...

    spring4各个功能的jar总结

    以下是对Spring4各个功能的jar包的详细总结: 1. **spring-core.jar**:这是Spring框架的基础,包含了IoC(Inversion of Control,控制反转)和DI(Dependency Injection,依赖注入)的核心实现。它提供了Bean工厂...

    Spring Security 学习总结1_3

    文章链接提到的博客(https://fengshen-xia.iteye.com/blog/293799)可能提供了一些关于Spring Security的学习资料。除此之外,官方文档、GitHub仓库、Stack Overflow和各种在线课程都是深入学习Spring Security的好...

    Spring MVC总结(一)

    在本文中,我们将对Spring MVC的架构和DispatcherServlet的配置进行总结。 Spring MVC架构 Spring MVC的架构可以分为以下几个部分: 1. DispatcherServlet:作为Spring MVC的核心组件,负责处理所有的HTTP请求。 ...

Global site tag (gtag.js) - Google Analytics