美文网首页
Spring注解

Spring注解

作者: 蕊er | 来源:发表于2017-11-10 15:25 被阅读0次

    1)引入相关配置文件

    <?xml version="1.0" encoding="UTF-8"?>
    <beans xmlns="http://www.springframework.org/schema/beans"
           xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
           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/context
           http://www.springframework.org/schema/context/spring-context.xsd">
    
        <!--指定扫描base-package指定包名下的所有类中的注解,扫描时会扫描所有包下子孙类-->
        <context:component-scan base-package="sd2.entity"/>
    
        <bean id="zoo" class="com.bean.car" />
    </beans>
    

    2)常用注解

    • 将对象注册到容器(作用在类上)

      • @Component(value = "user")
      • @Service( )----业务层
      • @Controller()----web层
      • @Repository()----持久层
    • 对象的作用范围注解

      @Scope(scopeName = "prototype")----单例对象(默认值),标识为单例的对象在spring容器中只会被创建一次

      @Scope(scopeName = "singleton")----多例原型,被标识为多例的对象,每次获得时才会创建,每次创建时都是新的对象

    • 属性注入的注解

      • @Value

        //通过反射Field赋值,破坏对象封装性
        @Value("肉丝")
        private String name;
                或
        //通过set方法赋值
        @Value("肉丝")
        public void setName(String name) {
            this.name = name;
        }
        
      • @Autowired @Resource

        自动装配,默认按照类型进行匹配

        如果存在相同类型的多个实例,则需要按名称注解则使用以下方式

        @Autowired//自动装配
        @Qualifier(value = "car")
                或
        @Resource(name = "car")
        
      • 生命周期(应用于方法之上)

        @PostConstruct----在对象被创建之后调用

        @PreDestroy----在对象被创建之前调用

    3)junit与spring结合

    测试时创建容器并且指定创建容器的配置文件

    @RunWith(SpringJUnit4ClassRunner.class)
    @ContextConfiguration("classpath:applicationContext.xml")
    public class TestDemo1 {
        @Resource(name = "user")
        private User user;
    
        @Test
        public void func1() {
            System.out.println(user);
        }
    }
    

    4)注解配置AOP

    <!--配置目标对象-->
    <bean class="com.spring.learn3.entity.UserServiceImpl" name="target"/>
    <!--配置通知对象-->
    <bean class="com.spring.learn3.entity.MyAdvice" name="advice"/>
    <!--开启使用注解完成注入-->
    <aop:aspectj-autoproxy></aop:aspectj-autoproxy>
    
    //表示该类是一个通知类
    @Aspect
    public class MyAdvice {
        //配置方法1
        @Pointcut("execution(* com.spring.learn3.entity.*ServiceImpl.*(..))")
        public void advice(){}
        // 前置通知
        @Before("MyAdvice.advice()")
        public void before() {
            System.out.println("这是前置通知");
        }
        //配置方法2
        // 后置通知(如果出现异常不会通知)
        @AfterReturning("execution(* com.spring.learn3.entity.*ServiceImpl.*(..))")
        public void after() {
            System.out.println("这是后置通知,如果出现异常不会调用");
        }
    }
    

    相关文章

      网友评论

          本文标题:Spring注解

          本文链接:https://www.haomeiwen.com/subject/tpbbmxtx.html