zoukankan      html  css  js  c++  java
  • spring 标注

    1、添加支持标注的spring中的jar包:

    spring-context.jar

    spring-context-support.jar

    2、在xml中配置命名空间和schema

    <beans
         xmlns="http://www.springframework.org/schema/beans"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xmlns:aop="http://www.springframework.org/schema/aop"
         
         xmlns:context="http://www.springframework.org/schema/context"
         
         xsi:schemaLocation="http://www.springframework.org/schema/beans
         http://www.springframework.org/schema/beans/spring-beans.xsd
         http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop.xsd
         
         http://www.springframework.org/schema/context
         http://www.springframework.org/schema/context/spring-context.xsd">

    3、启用基于注解的bean管理和依赖注入DI

        <context:component-scan base-package="com.spring1" />

    表示,指定的基包以及子包都会纳入到spring的bean管理中。

    4、Bean的注解(以下几种均可)

    (1)dao里边的类一般用@Repository

    (2)service里边的类一般用@Service

    (3)其他的用@Component

    aa

    Spring mvc中的controller里边的类一般用@Controller

    @Repository("dao")
    @Scope("prototype")
    @Lazy(true)
    public class UserDao {
        
        public String showUser(){
                System.out.println("show");
                return "你好";
        }
    }

    加上了注解,就可以在bean中去掉了。

    5、JSR330的注解

    需要导入javax.inject.jar

    (1)@Named注解,只要加入Named就可以加入bean的管理了。

    6、IOC,DI的注解(一下三种选一种均可)

    (1)set注入用@AutoWired

        @Autowired
        public void setUserDao(UserDao dao){
            this.userDao = dao;
        }

     (2)将@AutoWired加到被注入的属性上边,可以将set方法去掉

    @Named
    public class UserService {
        
        @Autowired
        private UserDao userDao;
        
        public void show(){
            userDao.showUser();
        }
    
    }

    (3)jsr330中使用@Inject注入方法

    @Named
    public class UserService {
        
        @Inject
        private UserDao userDao;
        
        public void show(){
            userDao.showUser();
        }
    
    }

    (4)jsr250中使用@Resource注入方法

    @Named
    public class UserService {
        
        @Resource
        private UserDao userDao;
        
        public void show(){
            userDao.showUser();
        }
    
    }

    7、AOP注解

    首先在xml中加入以下内容,加入aspect切面支持。

    <aop:aspectj-autoproxy/>

    (1)在切面类上首先用@Named注解或者其他的加入Bean管理,再加上@Aspect注解表示切面类

    @Aspect
    @Named
    public class MyAspect {
        
    }

    (2)定义切入点表达式,并加入@Pointcut(.......),包,类,方法,参数

    @Aspect
    @Named
    public class MyAspect {
        
        @Pointcut("execution(* com.spring1.dao..*.*(..))")
        public void pointcut(){}
        
    }

     (3)定义通知

    @Named
    @Aspect
    public class MyAspect {
        
        @Pointcut("execution(* com.spring1.dao..*.*(..))")
        public void pointcut(){}
        
        @Before("pointcut()")
        public void beforeAdvise(){
            System.out.println("before");
        }
        @AfterReturning(pointcut="pointcut()",returning="o")
        public void afterReturningAdvise(Object o){
            System.out.println("after return");
        }
        
        @After("pointcut()")
        public void afterAdvise(){
            System.out.println("finally");
        }
        @AfterThrowing(pointcut="pointcut()",throwing="e")
        public void afterThrowningAdvise(Exception e){
            System.out.println("throwning");
        }
        
    }

    (3)仅定义环绕通知

    @Named
    @Aspect
    public class MyAspect {
        
        @Pointcut("execution(* com.spring1.dao..*.*(..))")
        public void pointcut(){}
        
        @Around("pointcut()")
        public void aroundAdvise(ProceedingJoinPoint pjp){
            try{
                System.out.println("after");
                Object object = pjp.proceed();
                System.out.println("after returning");
            }catch(Throwable e){
                System.out.println("after throwning");
            }finally{
                System.out.println("after");
            }
        }
    }
  • 相关阅读:
    memcached +mysql+php 例子
    PHP利用memcache缓存技术提高响应速度
    实现QQ第三方登录教程(php)
    php如何解决多线程同时读写一个文件的问题
    php数组函数常见的那些
    PHP 5种方式获取文件后缀名
    函数与方程
    函数图像习题
    高中数学中需要重点关注的函数和图像
    特殊分段函数的图像画法
  • 原文地址:https://www.cnblogs.com/hpustudent/p/4315891.html
Copyright © 2011-2022 走看看