一、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框架知识探讨。 1. **依赖注入(Dependency Injection, DI)**:Spring的核心特性之一,通过DI,对象之间的依赖关系被反转,使得应用程序的组件...
Spring个人总结,基于Annotation注解的方式开发,配置
Spring框架是Java开发中最常用的轻量级开源框架之一,它以其强大的依赖注入(Dependency Injection,DI)和面向切面编程(Aspect-Oriented Programming,AOP)能力而著名。本篇将深入探讨Spring的核心概念、主要模块...
要搭建 Eureka 服务注册中心,需要创建一个 Spring Boot 项目,并在 pom.xml 文件中引入相关依赖项,包括 `spring-cloud-starter` 和 `spring-cloud-starter-eureka-server`。然后,使用 `@EnableEurekaServer` 注解...
“知识点总结.xls”可能是一个整理好的Spring框架关键知识点的表格,可能包含了Spring的主要模块(如Core Container、Data Access/Integration、Web、AOP、Test等)、关键概念(如Bean、ApplicationContext、IoC容器...
### Spring Security核心概念与实践详解 #### Spring Security概述 在深入了解Spring Security之前,我们先回顾一下没有Spring Security的权限管理场景。在传统架构中,权限验证逻辑往往与业务逻辑紧密交织,导致...
spring适用于扩展的详细笔记,针对《spring 3.x 企业应用开发实战》写的 详细总结,涵盖自己的心得体会
包含Spring简介,AOP,SpringMVC,集成JDBC,事务,ORM框架,Spring集成知识点总结,以思维导图的形式展示,xmind文件。
课程学习时候的笔记总结,这里面没有代码部分,全是知识点的总结,方便大家去面试回答
总结,SpringSecurity是一个功能强大的安全框架,它为开发者提供了安全Web应用的全套解决方案。通过理解并熟练运用其核心概念和组件,我们可以构建出安全、健壮的应用程序。在学习过程中,分析提供的源代码和示例将...
Spring框架基础总结 一、Spring框架概述 Spring框架是一个开源的控制反转(IoC)和面向切面(AOP)的容器框架,旨在简化企业级Java应用的开发工作。Spring框架的核心价值在于其分层架构设计,使得开发者可以根据...
SpringCloud子项目各种使用和配置方式,Spring Cloud Ribbon、Spring Cloud Feign。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。...
个人的maven和Spring的总结,里面含有Spring实现时候的一些细节
搭建Spring环境首先需要引入必要的依赖库,例如:aopalliance、commons-logging、spring-aop、spring-beans、spring-context、spring-core和spring-expression等。这些库构成了Spring框架的基础,并且可以通过Maven...
以下是对Spring4各个功能的jar包的详细总结: 1. **spring-core.jar**:这是Spring框架的基础,包含了IoC(Inversion of Control,控制反转)和DI(Dependency Injection,依赖注入)的核心实现。它提供了Bean工厂...
文章链接提到的博客(https://fengshen-xia.iteye.com/blog/293799)可能提供了一些关于Spring Security的学习资料。除此之外,官方文档、GitHub仓库、Stack Overflow和各种在线课程都是深入学习Spring Security的好...
在本文中,我们将对Spring MVC的架构和DispatcherServlet的配置进行总结。 Spring MVC架构 Spring MVC的架构可以分为以下几个部分: 1. DispatcherServlet:作为Spring MVC的核心组件,负责处理所有的HTTP请求。 ...