`
aa8945163
  • 浏览: 271565 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

spring 配置和理解

阅读更多
一、Spring应用环境的配置:
1. 在classpath中添加以下包:
    1) SPRING_HOME/dist/spring.jar、
    2) SPRING_HOME/lib/jakarta-commons/commons-logging.jar
    3) SPRING_HOME/lib/log4j/log4j-1.2.xx.jar
2.在classpath中添加Spring的配置文件:applicationContext.xml
    在SPRING_HOME/samples/jpetstore/war/WEB-INF目录下有样板文件。

二、IoC容器:
1. IoC概念:反向控制、控制反转。对象不需要主动去查找依赖类的实例。而是由其它应用给它注入。
    DI:依赖注入。
2. Spring对IoC的支持:Spring 提供了BeanFactory和ApplicationContext这两种IoC容器,来帮助你管理Bean、Bean之间的依赖关系以及Bean的生命周期。

三、Spring中IoC:
1. Bean装配:在Spring配置文件中用<bean>标记来装配一个Bean.
    <bean id="Bean在Spring容器中的唯一标识" class="Bean类的全限定名">...</bean>

2. 用setter方法注入它的依赖类:
    1) 在Bean中针对依赖类属性添加一个setter方法。
    2) 在Bean的配置中通过<bean>标记的子标记<property>来注入这个属性。注入的可以是值,也可是容器中另一个Bean的引用。
    <bean id="..." class="...">
       <property name="属性名" value="值" />
       <property name="属性名" ref="另一个bean的标识" />
    </bean>

3. 用构造器注入它的依赖类:

4. 自动装配:<bean>标记有一个autowire属性来指定自动装配的方式。建议少用。
   1) byName 2) byType 3) coustructor 4) autodetect

5. 指定bean的生存范围:<bean>标记有一个scope属性来指定:
   1) sigleton:一个Spring容器一个实例(默认值)
   2) prototype:使用一次就创建一个实例
   3) request、session、global-session :在Web ApplicationContext中才有效。

6. 指定Bean的初始化和销毁: 使用<bean>标记的以下两个属性:
  1) init-method
  2) destroy-method

7. 装配Bean的继承:使用<bean>标记的parent属性来指定它的父类Bean的标识。
    默认情况下,父类Bean的属性会使用父类Bean的装配。子类的属性使用子类的。可以在子类中对父类的属性进行重新装配。

四、AOP:面向切面编程
  1.AOP:把交叉功能模块化,把应用服务和业务逻辑完全分离。
  2.术语:
切面(Aspect):就是指你要实现的交叉功能。如:日志记录、事务管理、安全验证()。
连接点(Joinpoint):应用程序执行过程中可以插入切面的地点。如某方法调用时或者处理异常时。Spring只支持方法连接点
通知(Advice):在特定的连接点,AOP框架要执行的动作。 切面的功能被叫做通知。
  通知有各种类型,其中包括“around”、“before”和“after”等。
  如:向日志文件写日志、开启事务、提交事务。
切入点(Pointcut):定义了需要注入advice的位置。通常使用一些表达式来匹配连接点。
目标对象(Target Object):被一个或者多个切面所通知的对象。
代理对象(Proxy): 向目标对象应用通知之后被创建的对象。

织入(Weaving):把切面应用到目标对象来创建新的代理对象的过程。
Spring的切面是在程序运行的某个时刻被织入的。

  3.要使用Spring的完整AOP功能,需要添加:cglib包,AspectJ的包(2个)。
   
  4. 配置文件方式实现AOP
    1) 定义一个切面类。这个类中定义各个通知方法。声明到Spring的配置文件中:
       <bean id="logAspectBean" class="com.qiujy.aspect.LogAspect"/>
<aop:config>
<!-- 配置一个切面 -->
<aop:aspect id="logAspect" ref="logAspectBean">
  ...
</aop:aspect>
</aop:config>
    2) 定义切入点:通过一个AspectJ的切入点表达式来定义选择哪些类的哪些方法需要切入通知。
        <bean id="logAspectBean" class="com.qiujy.aspect.LogAspect"/>
<aop:config>
<!-- 配置一个切面 -->
<aop:aspect id="logAspect" ref="logAspectBean">
<!-- 定义切入点 -->
<aop:pointcut id="allMethod"
expression="execution(* com.qiujy.service.*.add*(..))"/>
...
</aop:aspect>
</aop:config>
    3) 声明通知:
  <bean id="logAspectBean" class="com.qiujy.aspect.LogAspect"/>
  <aop:config>
     <!-- 配置一个切面 -->
     <aop:aspect id="logAspect" ref="logAspectBean">
<!-- 定义切入点 -->
<aop:pointcut id="allMethod"
expression="execution(* com.qiujy.service.*.add*(..))"/>
<!-- 配置通知 -->
<aop:before method="start" pointcut-ref="allMethod" />
<aop:after-returning method="end" pointcut-ref="allMethod"/>
<aop:after method="back" pointcut-ref="allMethod"/>
<aop:after-throwing method="exception" pointcut-ref="allMethod"/>
      </aop:aspect>
  </aop:config>

  5. Annotation方式实现AOP
    1) 配置Spring对AspectJ注解的支持:<aop:aspectj-autoproxy/>
    2) 使用注解定义切面、切入点、通知:
@Aspect  //声明一个切面类
public class LogAspect {
private Log log = LogFactory.getLog(this.getClass());

//定义了一个切入点(使用表达式来选择连接点)
@Pointcut("execution(* com.qiujy.service.*.add*(..))")
private void bbb(){}

//声明前置通知
@Before("execution(* com.qiujy.service.*.add*(..))")
public void start(JoinPoint call) {

String className = call.getTarget().getClass().getName();
String methodName = call.getSignature().getName();

log.info(className + "类的" + methodName + "方法开始了");
}
//声明返回后通知
@AfterReturning("bbb()")
public void end() {
log.info("方法正常结束了");
}

//声明方法退出后通知
@After("bbb()")
public void back(){
log.info("方法返回了");
}

//声明异常抛出后通知
@AfterThrowing("bbb()")
public void exception() {
log.info("方法执行出异常了");
}
}
分享到:
评论

相关推荐

    spring配置文件详解,每一步都含有注释

    spring配置文件详解,交你如何理解spring,熟练运用spring

    spring配置参考+自己的理解1

    spring配置参考+自己的理解1

    spring 配置文件详解.txt

    spring 配置文件详解.txt 附加详细说明,易于理解,看了就知道,csdn 好东西!

    《深入理解Spring Cloud与微服务构建》学习笔记(二十)~配置中心Spring Cloud Config

    《深入理解Spring Cloud与微服务构建》学习笔记(二十)~配置中心Spring Cloud Config

    Spring攻略PDF版

    因为上传大小的限制,分为两部分上传,这是第二部分,第一部分会在评论中给出链接 绝对是spring攻略中文版第二版 ... 第18章 Spring对JMX、电子邮件和调度的支持   第19章 Spring中的脚本编程 

    《深入理解Spring Cloud与微服务构建》学习笔记(一二三)demo

    spring配置文件、配置文件读取、helloworld,自学一二三笔记demo,直接运行参考学习。

    高级开发spring面试题和答案.pdf

    谈谈Spring IOC的理解,原理与实现? bean的生命周期,详细看上面 SpringBoot自动装配的过程的原理: spring的缓存; spring是如何解决的循环依赖; BeanFactory和FactoryBean有什么区别; Spring中用到的设计模式; ...

    Spring攻略中文版PDF

    因为上传大小的限制,分为两部分上传,这是第一部分,第二部分会在评论中给出链接 绝对是spring攻略中文版第二版 ... 第18章 Spring对JMX、电子邮件和调度的支持   第19章 Spring中的脚本编程 

    Spring Boot应用开发框架项目旨在简化创建产品级的Spring应用和服务.rar

    我们将使用一个实际的示例,帮助你更好地理解和应用Spring Boot。 1. 什么是Spring Boot? Spring Boot是一个简化Spring应用程序开发的框架,它可以让开发者快速构建和部署生产级的Spring应用。Spring Boot的核心...

    深入理解Spring与Dubbo整合原理与源码分析:从启动类配置到注解解析

    首先,我们从应用启动类与配置入手,详细解析了@PropertySource和@EnableDubbo两个重要注解的作用和实现方式。然后,我们深入研究了@EnableDubboConfig和@DubboComponentScan两个核心注解,详细解读了它们在Spring...

    spring boot+spring cloud视频教学下载全套

    ├52 7.11 Spring Cloud Config配置属性刷新之自动刷新补充.avi ├53 7.12 Config Server的高可用.avi ├6 4.2Eureka简介与Eureka Server上.avi ├7 4.3将微服务注册到Eureka Server上.avi ├8 4.4 Ribbon-1 Ribbon...

    Spring攻略英文版(附带源码)

    Spring专家力作 理论与实践完美结合 问题描述→解决方案→实现方法 第一部分 核心概念  第1章 控制反转和容器  ... 第18章 Spring对JMX、电子邮件和调度的支持   第19章 Spring中的脚本编程 

    25个经典的Spring面试问答

    配置与注解:理解Spring的XML配置和注解配置,并能够在这两种配置方式中进行选择。 Spring AOP与AspectJ:理解Spring AOP的概念,以及如何使用AspectJ实现AOP。 Spring与其它技术集成:了解Spring与其它技术的集成,...

    SpringCloud第二季周阳老师脑图和代码

    首先在这里感谢阳哥,让我加深了对SpringCLoud的理解,写到吐的案例是真的让我不慌微服务的代码了。 该项目中有我按照视频的内容总结的思维导图,基本和阳哥的那个差不多,同样是mmap格式的。 与视频不同的是,我在...

    spring-boot中文教程

    Spring Boot中文文档提供了详细的中文翻译和说明,包括了基本概念、使用方法、配置参数、代码示例等,可以帮助用户快速上手和深入理解Spring Boot的使用。该文档还提供了丰富的链接和参考资料,方便用户深入学习和...

    Spring认证考试流程

    Spring Professional认证旨在测试和验证学生对 Spring 和 Spring Boot核心方面的理解和熟悉程度,例如:配置、组件扫描、AOP、数据访问和事务、REST、安全、自动配置、执行器、 Spring boot测试等。 认证对象: - ...

    Spring选择题(含答案).doc

    Spring 框架选择题解析 Spring 框架是一种流行的 Java 应用程序框架,提供了许多强大的功能,...本文涵盖了 Spring 框架的基本概念,例如依赖注入、面向切面编程等,旨在帮助读者更好地理解 Spring 框架的原理和应用。

    spring杂谈 作者zhang KaiTao

    1.18 不重复配置——利用Spring通用化配置 1.19 @Value注入Properties 错误的使用案例 1.20 @Value注入Properties 使用错误的案例 1.21 扩展SpringMVC以支持更精准的数据绑定 1.22 扩展SpringMVC以支持更精准的数据...

    Spring Boot 实战开发2022年

    │ 05 自动配置:如何正确理解 Spring Boot 自动配置实现原理?.mp4 │ 06 基础规范:如何理解 JDBC 关系型数据库访问规范?.mp4 │ 07 数据访问:如何使用 JdbcTemplate 访问关系型数据库?.mp4 │ 13 服务调用...

    Spring框架的简单实现

    我们从一个简单的容器开始,一步步的重构,最后实现一个基本的Spring框架的雏形,为了帮助我们更加深入的理解Spring的IoC的原理和源码。 详细内容见博文: 【SSH进阶之路】一步步重构容器实现Spring框架——从一个...

Global site tag (gtag.js) - Google Analytics