【Spring Boot】Spring基础 —— 组合注解与元注解

组合注解与元注解





1.概述

从Spring 2开始,为了响应JDK 1.5推出的注解功能,Spring开始大量加入注解来替代xml配置。Spring的注解主要用来配置注入Bean,切面相关配置(@Transactional)。随着注解的大量使用,尤其相同的多个注解用到各个类中,会相当啰嗦。这就是所谓的模板代码,是Spring设计原则中要消除的代码。

所谓元注解其实就是可以注解到别的注解上的注解,被注解的注解称之为组合注解、是可能有点拗口,体会含义最重要),组合注解具备元注解的功能。Spring的很多注解都可以作为元注解,而且Spring本身已经有很多组合注解,如@Configuration就是一个组合@Component注解,表明这个类其实也是一个Bean。

我们在前面曾大量使用@Configuration和@ComponentScan注解到配置类上,有时候也许会觉得有点麻烦。下面我给出一个将这两个元注解组成一个组合注解的示例,这样我们就只需写一个注解就可以表示两个注解。




2.新建包

首先我们在 “src/main/java/com/study/spring/” 下建立一个新的包"ch3.annotation",并在此包下新建3个类和一个接口,最终整个项目的结构如下图所示:
Alt



3.新建组合注解NewConfiguration

新建NewConfiguration接口,内容如下:

package com.study.spring.ch3.annotation;

import org.springframework.context.annotation.ComponentScan;
import org.springframework.context.annotation.Configuration;

import java.lang.annotation.*;

@Target(ElementType.TYPE)
@Retention(RetentionPolicy.RUNTIME)
@Documented
@Configuration      //组合@Configuration元注解
@ComponentScan      //组合@ComponentScan元注解
public @interface NewConfiguration {
    String[] value() default {};    //覆盖value参数(必不可缺)
}



4.测试Bean

定义用于演示服务的Bean,DemoService,内容如下:

package com.study.spring.ch3.annotation;

import org.springframework.stereotype.Service;

@Service
public class DemoService {
    public void outputResult(){
        System.out.println("从组合注解配置获得的Bean");
    }
}



5.定义配置类

配置类DemoConfig的内容如下:

package com.study.spring.ch3.annotation;

@NewConfiguration("com.study.spring.ch3.annotation")    //使用@NewConfiguration组合注解代替@Configuration和@ComponentScan
public class DemoConfig {
}



6.定义测试主类Main

测试主类Main的内容如下:

package com.study.spring.ch3.annotation;

import org.springframework.context.annotation.AnnotationConfigApplicationContext;

public class Main {
    public static void main(String[] args){
        AnnotationConfigApplicationContext context = new AnnotationConfigApplicationContext(DemoConfig.class);
        DemoService demoService = context.getBean(DemoService.class);
        demoService.outputResult();
    }
}



7.测试

选择刚刚建立的测试主类Main文件,右键,在弹出的窗体中选择"Run",效果如下:
Alt
可以看到,程序在使用@NewConfiguration注解时,等同于使用了@Configuration和@ComponentScan这两个注解。




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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

theSerein

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

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

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

打赏作者

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

抵扣说明:

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

余额充值