Spring注解(基础常用所以不全)

Spring注解

常用注解

  • @Autowired : 自动装配

  • @Resource : java自带的自动装配注解

  • @Qualifier : 配合@Autowired使用,@Qualifier(value=" ")指定唯一的bean对象注入

  • @Nullable : 字段标注该注解表示该字段可以为空

    xml*

    <?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
            https://www.springframework.org/schema/beans/spring-beans.xsd
            http://www.springframework.org/schema/context
            https://www.springframework.org/schema/context/spring-context.xsd">
    
        <context:annotation-config/>
        <bean id="cat1" class="com.wang.entity.Cat"/>
        <bean id="cat2" class="com.wang.entity.Cat"/>
        <bean id="dog1" class="com.wang.entity.Dog"/>
        <bean id="dog2" class="com.wang.entity.Dog"/>
        <bean id="people" class="com.wang.entity.People"/>
    </beans>
    

    实体类

    public class People {
        @Autowired
        @Qualifier(value="cat1")
        private Cat cat;
        @Autowired
        @Qualifier(value="dog1")
        private Dog dog;
        private String name;
    

    测试类

    public class MyTest {
        @Test
        public void test(){
            ApplicationContext context = new ClassPathXmlApplicationContext("beans.xml");
            People people = context.getBean("people", People.class);
            people.getDog().shout();
            people.getCat().shout();
        }
    }
    
  • @Component : 组件,放在类上说明该类被spring管理了,就是bean!

  • @Component的衍生注解(三层架构中) : Dao层:@Reposit service层:@Service Controller层:@Controller (说明:这四个注解都是一样的,都是代表将某个类注入到Spring中装配到bean中,只是为了更好的区分不同的层)

  • @value : 写在属性上,实现属性的注入

  • @Scope : 规定bean的作用域,prototype为原型模式,singleton为单例模式

  • @Configuration : 代表这个类是配置类,相当于xml文件

  • @ComponentScan : 扫描组件, 相当于<context:component-scan base-package=“com.wang.entity”/>

    Config类

    @Configuration
    @ComponentScan("com.wang.entity")
    public class MyConfig {
        //.xml文件中:<bean id="Student" class="com.wang.entity.User">
        //注解@Bean就相当于我们写的Bean标签
        //方法名就相当于id的属性
        //返回值相当于class属性
        @Bean
        public User user() {
            return new User();
        }
    }
    

    实体类

    @Component
    public class User {
        @Value("滴滴")
        public String name;
    
        public String getName() {
            return name;
        }
    
        public void setName(String name) {
            this.name = name;
        }
    }
    

    测试类

    public class MyTest {
        @Test
        public void test(){
            ApplicationContext context = new AnnotationConfigApplicationContext(MyConfig.class);
            User user = (User) context.getBean("user");
            System.out.println(user.getName());
        }
    }
    

AOP注解

再xml文件中开启注解支持:

<!--    开启注解支持-->
    <aop:aspectj-autoproxy/>
  • @Aspect : 将当前类标识为一个切面供容器读取

  • @Before : 标识一个前置增强方法

  • @After : final增强,不管是抛出异常或者正常退出都会执行

    @Aspect
    public class AnnonationPointCut {
        @Before("execution(* com.wang.service.UserserviceImpl.*(..))")
        public void before() {
            System.out.println("方法执行前");
        }
    
        @After("execution(* com.wang.service.UserserviceImpl.*(..))")
        public void after() {
            System.out.println("方法执行后");
        }
    }
    
  • @Around : 环绕增强

  • @AfterReturning : 后置增强,方法正常退出执行

  • @AfterThrowing : 异常抛出增强

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

MaErJing

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值