常见注解基本装配 @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 /> <!-- 切面配置的注解生效 -->