首页 > 程序开发 > 软件开发 > 其他 >

Spring框架标签

2017-02-10

Spring框架标签:1 开启Spring组件自动扫描机制,该自动扫描机制由spring容器自动提供,扫描定义在base-package包下面的所有java文件,并且还会扫描子包或者说子包中所有使用了以下注解的JAVA类。

Spring框架标签:1.开启Spring组件自动扫描机制,该自动扫描机制由spring容器自动提供,扫描定义在base-package包下面的所有java文件,并且还会扫描子包或者说子包中所有使用了以下注解的JAVA类。

@Controller表现层组件

@Service业务层组件

@Respository需要被spring容器管理的持久层组件

@Component将没有在以上几个层的Java类纳入到容器管理

以下两个都可以放在set方法上方或者属性上方

@Autowrited自动装配(byType),也可以称之为:模糊装配,放在构造的上方

@Qualifier(value=”类名(首字母小写)”),精确装配(byName),放在构造参数前面

@Resource(name=” ”)可以用name属性指定具体装配组件

如果指定装配的具体的哪一个组件的话,那么装配方式就是byName,如果不指定具体的装配的话,那么先按照属性的名称来装配,如果装配名称没有找到,将退回到byType的方式来进行装配

@PostConstruct容器创建对象时执行的方法

@PreDestory容器销毁对象时执行的方法

@Scope作用域(value=” ”)

2.Aop面向切面编程

1.JDKProxy

public static Object getProxyObject(finalObject c){

returnProxy.newProxyInstance(c.getClass().getClassLoader(), c.getClass().getInterfaces(),

newInvocationHandler() {

@Override

publicObject invoke(Object proxy, Method method, Object[] args)

throwsThrowable {

//TODO Auto-generated method stub

returnmethod.invoke(c, args);

}

});

}

2.使用@Aspect将该JAVA类标记为一个切面,一个切面对应着一个交叉业务

3.@Before前置通知执行在目标方法执行之前(aspectj包)(value=“exeaction(public *(*代表返回类型)com.lovo.service.*.*(..))”)

该通知可以做一些目标方法执行之前的初识设置

User*表示以user开头的

*service表示以service结尾的

..表示多参数

JoinPoint连接点(jp)

4.配置文件中加

Object obj = jp.getTarget()目标对象获取

Jp.getSignature().getName()目标方法名字获取

Jp.getArgs()返回数组,目标方法参数

Class c = obj.getClass()得到对象所对应的类

Method m = c.getMethod(“setName”,String.class)

m.invoke(obj,”xiaoming”)

5.@AfterReturning后置返回通知,参数(JoinPointjp,Object ret返回对象)

执行在目标方法正常完成之后

(returning = “ret”,pointcut=“ex….同上”)

6.@AfterThrowing(throwing=”tx”,pointcut=“ex….同上”),参数(jp,Throwable tx)后置异常通知,执行在目标方法抛出异常之后,不会与@AfterReturning同时出现

7.@After(“同上”)后置通知,无论目标方法是否抛出异常都会执行在以上两个@after前面

8.@Around(“同上”)环绕通知,可以修改对象,能用before+after解决的,就不要用这个方法,这是唯一一个可以修改方法和参数返回的通知标签

相关文章
最新文章
热点推荐