zoukankan      html  css  js  c++  java
  • 使用注解实现IOC与AOP的配置

    之前我们配置IOC(控制反转)都是在xml中配置,现在通过注解配置IOC会减少很多代码

      @Repository:用于标注DAO类

      @Service:用于标注业务类

      @Controller:用于标注控制器类

    例:  

    @Repository("userDao")
    public class IUserMapperImpl implements IUserMapper {
        @Resource(name="sqlSessionTemplate")
        private SqlSessionTemplate s;
        @Override
        public List<SMBMS_USER> QueryAll() {
            return s.getMapper(IUserMapper.class).QueryAll();
        }
    
    }

    这是DAO中的一个实现类,我们使用@Repository("别名")如果不写,默认是类名,首字母小写,将我们的IUserMapperImpl类注入到bean中

    同样当类的属性需要引用Bean时,通过@Resource(name=“bean中的id”)来实现引用

    在业务逻辑层我们需要引用IUserMapperImpl时:

      

    @Service("userService")
    public class IUserServiceImpl implements IUserService {
        @Resource(name="userDao")
        private IUserMapperImpl u;
        @Override
        public List<SMBMS_USER> QueryAll() {
            return u.QueryAll();
        }
    
    }

    通过@Service(“别名”)来讲业务逻辑层的类注入到bean,我们业务逻辑层引用IUserMapperImpl时通过@Resources(“bean的id”)来引用

    当然xml还是需要配置的:

    <context:component-scan base-package="cn.bdqn.*" />

    在配置文件中加入这一行代码就行了,表示扫描注解标注的类   属性:base-package:表示扫描的范围

    2.通过注解实现AOP配置,之前我们配置增强时除了编写增强类,还要在xml配置文件里通过<aop:config>等标签进行配置

    当用注解来实现是就简单多了

    //通过这两个标签进行注入
    @Aspect @Component("advice")
    public class ServiceAdvice { private Logger log=Logger.getLogger(ServiceAdvice.class); //定义切点 @Pointcut("execution(* cn.bdqn.service..*.*(..))") public void p1(){ } //前置增强 value后跟上切点名 @Before(value="p1()") public void before(JoinPoint j) { String methodName=j.getSignature().getName(); String className=j.getTarget().getClass().getName(); log.info(className+"===="+methodName); } //后置增强 @AfterReturning(pointcut="p1()") public void afterreturning(JoinPoint j){ String methodName=j.getSignature().getName(); String className=j.getTarget().getClass().getName(); log.info(className+"===="+methodName); } }

    编写完增强类后再配置文件上加上:

    <aop:aspectj-autoproxy/>表示启用对@Aspectj的支持
  • 相关阅读:
    python之enumerate
    Python中的集合set
    SGU 分类
    太空飞行计划 最大权闭合图
    1.飞行员配对 二分图匹配(输出方案)/最大流斩
    poj1149最大流经典构图神题
    hdu1569 方格取数 求最大点权独立集
    最大独立集 最小点覆盖 最小边覆盖 最小路径覆盖 最大团
    hdu3491最小割转最大流+拆点
    hdu3987,最小割时求最少割边数
  • 原文地址:https://www.cnblogs.com/MyQuen/p/9232638.html
Copyright © 2011-2022 走看看