常见注解基本装配
@Conponent 默认id就是类名
@Controller 表示层
@Service 业务逻辑层
@Repository 数据持久层
注入:
xml:手工注入(设值注入,构造注入)
自动注入
applicationContext:
ontext:component-scan base-package="dao"></context:component-scan>
作用:扫描配置了注解的对象 将他注册为Spring的bean放置在ioc容器中
在接口实现类的头部 写上:
@Repository("userdao")
注解注入:
1)@Autowired:按类型注入
2)@Autowired
@Qualifier(“id”):按照名称注入
3)Resources(name=“id”) 按名称注入
增强代码类(切面类)
@Component
@Aspect //切面类(切入点和增强代码)
public class MyAdvice {
//环绕增强直接拦截所有方法 需要手动调用方法
public void around(ProceedingJoinPoint joinpoint) {
try {
System.out.println("前置增强");
joinpoint.proceed();
System.out.println("后置增强");
} catch (Throwable e) {
// TODO Auto-generated catch block
e.printStackTrace();
System.out.println("异常增强");
}finally {
System.out.println("最终增强");
}
}
@Pointcut("execution(* service.impl.UserServiceImpl.*(..))")
public void pointcut() {}
@Before("pointcut()")
public void before() {
System.out.println("前置增强");
}
@AfterReturning("pointcut()")
public void afterreturning() {
System.out.println("后置增强");
}
@AfterThrowing("pointcut()")
public void afterthrowing() {
System.out.println("异常增强");
}
@After("pointcut()")
public void after() {
System.out.println("最终增强");
}
}
service对象声明类,委托类
@Service("userservice")
public class UserServiceImpl implements UserService{
@Override
public void addUser() {
// TODO Auto-generated method stub
System.out.println("添加");
}
@Override
public void deleteUser() {
// TODO Auto-generated method stub
System.out.println("删除");
}
}
xml文件中进行包的注解扫描和切面配置的注解生效
<context:component-scan base-package="myadvice,service"></context:component-scan>
<aop:aspectj-autoproxy /> <!-- 切面配置的注解生效 -->