1 Spring不但支持自己定义的@Autowired注解,还支持几个由JSR-250规范定义的注解,它们分别是@Resource、@PostConstruct以及@PreDestroy。
@Resource的作用相当于@Autowired,只不过@Autowired按byType自动注入,而@Resource默认按 byName自动注入罢了。
@Resource有两个属性是比较重要的,分是name和type,Spring将@Resource注解的name属性解析为bean的名字
(如果两个属性都没有指定,则默认把类名称第一个字母小写作为bean的id),
而type属性则解析为bean的类型。所以如果使用name属性,则使用byName的自动注入策略,而使用type属性时则使用byType自动注入策略。
如果既不指定name也不指定type属性,这时将通过反射机制使用byName自动注入策略。
@Resource装配顺序
1. 如果同时指定了name和type,则从Spring上下文中找到唯一匹配的bean进行装配,找不到则抛出异常
2. 如果指定了name,则从上下文中查找名称(id)匹配的bean进行装配,找不到则抛出异常
3. 如果指定了type,则从上下文中找到类型匹配的唯一bean进行装配,找不到或者找到多个,都会抛出异常
4. 如果既没有指定name,又没有指定type,则自动按照byName方式进行装配;如果没有匹配,则回退为一个原始类型进行匹配,如果匹配则自动装配;
2 web开发中用spring的上下文得到spring管理的类,用这个对象取得spring管理的对象
import org.springframework.beans.BeansException; import org.springframework.context.ApplicationContext; import org.springframework.context.ApplicationContextAware; public class SpringContext implements ApplicationContextAware { protected static ApplicationContext context; public void setApplicationContext(ApplicationContext applicationContext) throws BeansException { context = applicationContext; } public static ApplicationContext getContext() { return context; } public static void main(String[] args) { context.getBean( "userMng" ); } }
3 问题,在程序中整个模块既被第一个库用,又被第二个库用,这时候想使dao层公用
1 做一个切换按钮 ,更改session中保存的标志位
2 不同库,用不同的dao,实现同一个接口,在manager层做一个切面,然后用session中的标志位来控制具体用哪个dao
连接user模块中相应的Manager,然后执行切面方法
package com.wzt; import org.aopalliance.intercept.MethodInterceptor; import org.aopalliance.intercept.MethodInvocation; import com.wzt.SpringContext; import com.wzt.StrutsUtil; import com.wzt.UserImplDAO; import com.wzt.UserMng; public class UserAdvice implements MethodInterceptor { /** * 拦截要执行的目标方法 */ public Object invoke(MethodInvocation invocation) throws Throwable { String method = invocation.getMethod().getName() ; //根据不同的标志位siteId来控制切点用的是那个dao if(!"getUserDAO".equals( method ) && !"setUserDAO".equals( method ) ){ //siteId放到 Object siteId = StrutsUtil.getSession().get("siteId"); UserMng userMng = (UserMng) SpringContext.getContext().getBean("userMng"); if(siteId!=null && "5".equals(siteId )){ userMng.setUserDAO( (UserImplDAO)SpringContext.getContext().getBean("userDAO") ); } if( siteId!=null && "6".equals(siteId )){ userMng.setUserDAO( (UserImplDAO)SpringContext.getContext().getBean("userMed66DAO") ); } } Object result = invocation.proceed(); return result; } }
相关推荐
依赖注入是Spring框架的核心特性之一,它通过反转对象创建和管理的控制权,使得应用程序组件之间的耦合度降低。在Spring中,通常通过以下三种注解实现IoC: - `@Autowired`:自动装配,Spring会根据类型或名称找到...
Spring注解AOP(Aspect-Oriented ...以上就是关于Spring注解AOP的基本知识点,包括其核心概念、使用方法、示例以及实际应用场景。理解并熟练掌握这些内容,将有助于提升在开发过程中对系统行为的控制和维护能力。
Spring框架是Java开发中广泛应用的一个轻量级容器,它的核心特性是依赖注入(Dependency Injection,简称DI)和面向切面编程(Aspect Oriented Programming,简称AOP)。这两个特性极大地简化了Java应用程序的开发和...
1. **引入依赖**:在`pom.xml`或`build.gradle`文件中添加Spring AOP和AspectJ的依赖。对于Maven,添加以下依赖: ```xml <groupId>org.springframework.boot <artifactId>spring-boot-starter-aop ``` 2. ...
Spring 框架是Java开发中的核心框架,它主要由两个关键部分组成:IOC(Inversion of Control,控制反转)和AOP(Aspect Oriented Programming,面向切面编程)。这两个概念是Spring框架的核心特性,极大地简化了企业...
在Java开发领域,Spring框架是应用最广泛的轻量级框架之一,它主要提供了依赖注入(IoC)和面向切面编程(AOP)两大核心功能。本文将通过注解方式来模拟Spring的IoC和AOP,帮助你深入理解这两个概念的实现原理。 **...
Spring框架是Java开发中最常用的轻量级框架之一,它的核心特性包括依赖注入(Dependency Injection,简称DI)和面向切面编程(Aspect-Oriented Programming,简称AOP)。这两个概念是Spring框架的基石,极大地简化了...
Spring框架是Java开发中的一个核心工具,它通过提供依赖注入(Dependency Injection,DI)和面向切面编程(Aspect-Oriented Programming,AOP)等功能,极大地简化了企业级应用的开发工作。注解配置是Spring 2.5引入...
这可以通过Spring的`@Transactional`注解实现,而注解的解析和处理则依赖于Spring的AOP机制。 在提供的"springAopIoc"示例中,可能包含了以下内容: 1. **配置文件**:XML配置文件描述了bean的定义、依赖关系以及...
以上jar包是实现Spring 3.1中IOC和AOP功能所必需的,实践中,还需要根据具体的应用需求,添加其他如数据库连接池、ORM框架等相关的库。 总结来说,Spring 3.1的IOC和AOP特性大大简化了企业级应用的开发,通过合理的...
在IT领域,Spring框架是一个广泛使用的Java应用框架,它提供了许多功能,包括依赖注入、面向切面编程(AOP)等。"spring-aop-jar"这个主题涉及到Spring框架中的核心组件之一——Spring AOP。这里我们将深入探讨...
Spring AOP(面向切面编程)是Spring框架的核心特性之一,它允许开发者在不修改源代码的情况下,通过...这个例子提供了学习Spring AOP实际操作的宝贵资源,通过阅读源码和运行测试,你将对Spring AOP有更全面的认识。
在Spring框架中,IOC(Inversion of Control,控制反转)和AOP(Aspect-Oriented Programming,面向切面编程)是两个核心的...因此,理解并熟练应用Spring的IOC和AOP对于提升Java应用程序的质量和可维护性至关重要。
在Spring框架中,AOP(面向切面编程)是一种强大的工具,它允许我们在不修改原始代码的情况下,通过插入额外的功能来扩展或增强应用程序的行为。在本案例中,我们将探讨如何使用AspectJ注解来开发Spring AOP。 首先...
Spring框架是Java开发中不可...总结,Spring框架的IoC和AOP特性极大地简化了Java开发,通过依赖注入解耦了组件,通过面向切面编程解决了共性问题。理解并熟练掌握这些概念和机制,对于提升开发效率和代码质量至关重要。
Spring框架提供了强大的AOP支持,使得开发者可以通过注解轻松地定义和应用切面。 首先,我们需要了解Spring AOP中的几个核心概念: 1. 切面(Aspect):一个关注点的模块化,例如日志或事务管理。在Spring中,切面...
Spring AOP,全称Aspect-Oriented Programming(面向切面编程),是Spring框架的重要组成部分,它为Java应用程序提供了声明式的企业级服务,如事务管理、性能监控等。在Spring AOP中,我们可以通过定义切面(Aspect...
Spring框架是Java开发中不可或缺的一部分,它通过引入依赖注入(IOC)和面向切面编程(AOP)的概念,极大地简化了应用程序的构建和管理。在本文中,我们将深入探讨Spring的IOC容器和AOP的核心概念,以及如何进行相关...