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解决的,就不要用这个方法,这是唯一一个可以修改方法和参数返回的通知标签