一、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的配置文件通常为XML格式,如`applicationContext.xml`,它包含了bean的定义、属性值以及依赖关系等。这些数据在未加密状态下可能存在安全风险。 加密Spring...
Spring框架是Java开发中广泛应用的轻量级框架,它的...Spring的这些配置文件使得我们可以模块化、解耦合地管理应用组件,提高了代码的可维护性和复用性。理解并熟练运用这些配置,是成为专业Java开发人员的必备技能。
注意,过度依赖自动配置可能导致配置难以理解和维护,因此需要权衡自动和手动配置的平衡。 三、组件扫描 @ComponentScan注解用于扫描指定包及其子包下的所有@Component(包括@Service、@Repository和@Controller)...
一、Spring配置概述 Spring的配置方式主要有两种:XML配置和Java配置。早期,XML配置是主流,而现在,随着Spring Boot的兴起,Java配置逐渐成为首选,因为它更加简洁和直观。不过,理解XML配置对于学习Spring的基础...
《Spring配置文件模板详解》 ...深入理解和熟练掌握`applicationContext.xml`的编写和使用,是成为Spring开发高手的必经之路。同时,结合源码阅读和高效工具的运用,能进一步提升我们的开发效率和代码质量。
在微服务架构中,Spring Cloud Config 是一个强大的分布式配置中心,它允许开发人员将应用程序的配置存储...通过理解其核心概念、配置方式以及如何实现高可用性,我们可以更好地利用它来构建可扩展和灵活的微服务架构。
在Spring配置文件中,你需要定义`JbpmConfiguration`和`JbpmRuntimeManagerFactoryBean`,它们负责创建jbpm的工作空间和获取运行时管理器。 4. **注册任务监听器和服务**:jbpm允许你注册监听器来处理流程事件,如...
Spring配置文件的详细理解和灵活运用是每个Spring开发者的基础技能。它们提供了对应用程序结构的清晰控制,使得代码更加易于维护和测试。通过深入学习和实践,你将能够更好地驾驭Spring框架,实现高效的企业级开发。
理解并熟练掌握Spring的配置方式和核心概念,对于提升开发效率和代码质量至关重要。 总结来说,Spring框架是一个强大的工具,通过合理配置和使用其提供的jar包,可以有效地管理项目中的依赖,实现灵活的事务管理,...
Spring框架在企业级Java应用中广泛用于实现...总的来说,Spring配置JTA事务管理是一项关键任务,它确保了在分布式环境下的数据一致性。理解并正确配置JTA事务管理,能够让你的应用程序更加健壮,适应复杂的企业级需求。
### Spring配置文件:整理与总结Spring中XML配置的最佳实践 #### 概述 Spring框架作为一个强大的Java应用框架,在企业级应用开发中占据了重要的地位。它为普通的Java对象(Plain Old Java Objects, POJOs)提供了...
Spring框架是Java开发中不可或缺的一部分,它以其强大的依赖注入...正确理解和使用这些组件,能够显著提升开发效率和代码质量。在实际项目中,还需要结合具体需求选择和集成相应的Spring模块,以实现最佳的开发效果。
在Spring配置文件中,通过`<mybatis:scan>`标签扫描Mapper接口,并使用`<bean>`标签定义SqlSessionTemplate或SqlSessionDaoSupport来连接Mapper和SqlSessionFactory。 在Spring中,你可以利用@Autowired注解来注入...
spring配置文件详解,交你如何理解spring,熟练运用spring
Spring框架是Java开发中广泛应用的一个轻量级框架,它提供了依赖注入(Dependency Injection,DI)和面向切面编程(Aspect-Oriented ...理解并熟练掌握Spring框架的配置,将对你的Java开发工作带来极大的便利。
首先,我们需要理解Spring配置文件的作用。在早期的Spring版本中,所有的bean定义、依赖注入以及其他配置都存储在如`bsappConfig.xml`, `spring-config.xml`, `webapp-config.xml`等这样的XML文件中。这些文件通常...
SpringCloud Config 是一个分布式系统配置管理工具,它允许在分布式系统的不同组件之间集中管理和动态更新配置。本项目是一个个人实现的 SpringCloud Config 的演示示例,旨在帮助理解其工作原理和使用方法。以下是...
加载jar包中的Spring配置文件需要对Spring的类路径加载机制有深入理解。通过`ClassPathResource`,我们可以定位并加载jar包内的配置,然后应用到`ApplicationContext`。在SSM整合的项目中,正确地加载这些配置文件...
在Java开发中,Spring框架是应用最广泛的IoC(Inversion of Control,控制反转)和AOP(Aspect Oriented Programming,面向切面编程)框架之...正确理解和使用这些技术,能帮助开发者构建可扩展且易于维护的Java应用。
《详细的Spring配置和Spring Boot》 在上一章中,我们深入探讨了控制反转(IoC)的概念及其在Spring框架中的应用。然而,这只是触及了Spring核心功能的表面。Spring提供了一系列服务,这些服务补充并扩展了其基本的...