Spring注释表

本文详细介绍了Spring框架中的核心注解,包括@Configuration、@Component、@Bean、@Scope、@Lazy等,以及它们在实际开发中的应用场景。此外,还涉及到Spring MVC的@Controller、@Service和@Repository注解,以及依赖注入、事务管理和AOP的相关注解。通过这些注解,开发者可以更加便捷地管理对象、实现分层架构和自动化配置。
摘要由CSDN通过智能技术生成

 常用注解(更新中):

  1. @Configuration 标识当前类是配置类

  2. @ComponentScan 包扫描注解 扫描注解

  3. @Bean 标识该方法的返回值交给Spring容器管理

  4. @Scope 控制多例和单例

  5. @Lazy 懒加载

  6. @PostConstruct 初始化方法

  7. @PreDestroy 销毁方法

  8. @Component 将当前类未来的对象交给容器管理

  9. @Autowired 按照类型进行注入

  10. @Qualifier 按照名称进行注入

  11. @Repository 标识持久层注解

  12. @Service 标识Service层

  13. @Controller 标识Controller层

  14. @Value 为属性赋值 @Value("${key}")

  15. @PropertySource 加载指定路径的配置文件properties

  16. @Aspect 标识当前类是一个切面类

  17. @Pointcut 用于定义切入点表达式 表达式写法4种

  18. @EnableAspectJAutoProxy 让AOP的注解有效果

  19. @Before AOP-前置通知

  20. @AfterReturning AOP-后置通知

  21. @AfterThrowing AOP-异常通知

  22. @After AOP-最终通知

  23. @Around AOP-环绕通知

  24. @Order(1) //可以利用order关键字 实现AOP的排序 数字越小越先执行.

  25. @ResponseBody 将返回的数据转化为JSON串, 如果是字符串本身 原数据返回

  26. @RequestMapping("/hello") 实现浏览器的请求路径与方法的映射

  27. @PathVariable restFul结构,接收参数的注解.

  28. @GetMapping("") 只能接收GET请求类型

  29. @DeleteMapping("") 只能接收DELETE请求类型

  30. @PostMapping("") 只能接收POST请求类型

  31. @PutMapping("") 只能接收PUT请求类型

  32. @RestController 表示Controller类,同时要求返回值为JSON

  33. @CrossOrigin 允许跨域访问

  34. @RequestBody 参数接收时,将JSON串转化为java对象 json中的key与对象的属性一致.

  35. @Data lombok动态生成get/set/toString/equals/hashcode等方法

  36. @Accessors 控制是否开启链式加载结构

  37. @NoArgsConstructor 生成无参构造方法

  38. @AllArgsConstructor 生成全参构造方法

  39. @Mapper mybatis将当前的接口交给Spring容器管理. Map<类名小写,JDK动态代理对象>

  40. @SpringBootTest 该注解的作用在进行代码测试时启动spring容器,之后动态的获取对象 注意包路径 主启动类的同包及子包中.

  41. @Param Mybatis中将参数封装为Map集合. @Param(“maxAge”) int maxAge

  42. @Alias Mybatis中定义对象的别名 @Alias(“User”)

  43. @MapperScan Mybatis中扫描指定包路径的接口 为其创建代理对象.

  44. @Insert Mybatis 新增操作注解

  45. @Update Mybatis 修改操作注解

  46. @Delete Mybatis 删除操作注解

  47. @Select Mybatis 查询操作注解

  48. @Transactional Spring中用来控制事务

@Configuration

用于定义配置类,可替换xml配置文件,被注解的类内部包含有一个或多个被@Bean注解的方法,这些方法将会被AnnotationConfigApplicationContext或AnnotationConfigWebApplicationContext类进行扫描,并用于构建bean定义,初始化Spring容器。

注意:@Configuration注解的配置类有如下要求:

  1. @Configuration不可以是final类型;
  2. @Configuration不可以是匿名类;
  3. 嵌套的configuration必须是静态类。

一、用@Configuration加载spring
1.1、@Configuration配置spring并启动spring容器
1.2、@Configuration启动容器+@Bean注册Bean
1.3、@Configuration启动容器+@Component注册Bean
1.4、使用 AnnotationConfigApplicationContext 注册 AppContext 类的两种方法
1.5、配置Web应用程序(web.xml中配置AnnotationConfigApplicationContext) 


 @Bean

在 Spring 中,构成应用程序主干并由Spring IoC容器管理的对象称为bean。bean是一个由Spring IoC容器实例化、组装和管理的对象。

   特点:  1.bean是对象,一个或者多个不限定
                2.bean由Spring中一个叫IoC的东西管理
                3.我们的应用程序由一个个bean构成


@Component

@component是spring中的一个注解,它的作用就是实现bean的注入,在探究@component前先了解一下注解?何为注解?注解本质上就是一个类,开发中我们可以使用注解 取代 xml配置文件。

web开发,提供3个@Component注解衍生注解(功能一样)取代
@Repository(“名称”):dao层
@Service(“名称”):service层
@Controller(“名称”):web层

@Autowired:自动根据类型注入
@Qualifier(“名称”):指定自动注入的id名称 

@Resource(“名称”)
@ PostConstruct 自定义初始化
@ PreDestroy 自定义销毁 


@ComponentScan

定义:与ComponentScan注解相对应的XML配置就是<context:component-scan/>, 根据指定的配置自动扫描package,将符合条件的组件加入到Spring容器中

ComponentScan做的事情就是告诉Spring从哪里找到bean


 @Scope

 @Scope注解是springIoc容器中的一个作用域,在 Spring IoC 容器中具有以下几种作用域:基本作用域singleton(单例)prototype(多例),Web 作用域(reqeust、session、globalsession),自定义作用域

@Scope("singleton")

默认值,单例(即使不加单例,默认值为单例)
@Scope("prototype")

默认值,多例对象


 @Lazy 

懒加载 (用的时候才创建)

只有一个参数,默认是true,也就是说只要加了这个注解就会延迟加载。
@Lazy注解则必须在第一次调用的时候才会加载。
@Lazy注解注解的作用主要是减少springIOC容器启动的加载时间。

 


 Spring注解中三个层

持久层、业务层和控制层分别采用 @Repository、@Service 和 @Controller 对分层中的类进行注释


 @Repository//持久层

@Repository和@Controller、@Service、@Component的作用差不多,都是把对象交给spring管理。

@Repository用在持久层的接口上,这个注解是将接口的一个实现类交给spring管理

1、spring配置文件中配置了MapperScannerConfigurer这个bean,它会扫描持久层接口创建实现类并交给spring管理。

2、接口上使用了@Mapper注解或者springboot中主类上使用了@MapperScan注解,和MapperScannerConfigurer作用一样。


  @Service//业务层

 @Service注解用于类上,标记当前类是一个service类,加上该注解会将当前类自动注入到spring容器中,不需要再在applicationContext.xml文件定义bean了。

 @Service层是业务逻辑层注解,这个注解只是标注该类处于业务逻辑层。 


 @Controller//控制层

@Controller层是spring-mvc的注解,具有将请求进行转发,重定向的功能。 

 @Controller 用于标记一个类,使他标记的类就是一个SpingMVC Controller 对象,即是一个控制器。Sping使用扫描机制查找程序中所有基于注解的控制器类。分发处理器会扫描使用注解的类的方法,并检测该方法是否使用了@RequestMapping注解,而使用@RequestMapping 注解的方法才是正真处理请求的处理器。

总结:

@Component@Service@Controller@Repository是spring注解,注解后可以被spring框架所扫描并注入到spring容器来进行管理 
@Component是通用注解,其他三个注解是这个注解的拓展,并且具有了特定的功能 
@Repository注解在持久层中,具有将数据库操作抛出的原生异常翻译转化为spring的持久层异常的功能。 
@Controller层是spring-mvc的注解,具有将请求进行转发,重定向的功能。 
@Service层是业务逻辑层注解,这个注解只是标注该类处于业务逻辑层。 
用这些注解对应用进行分层之后,就能将请求处理,义务逻辑处理,数据库操作处理分离出来,为代码解耦,也方便了以后项目的维护和开发。


@Retention(RetentionPolicy.RUNTIME)//注解运行期有效

@Target(ElementType.METHOD)     //注解运用方法时有效

定义方法注释需要用的到


拓展

@PostConstruct

@PreDestroy

@PostConstruct 和 @PreDestroy 标注不属于 Spring,它是在J2EE库- common-annotations.jar。

Java EE5 引入了@PostConstruct和@PreDestroy这两个作用于Servlet生命周期的注解,实现Bean初始化之前和销毁之前的自定义操作。


  @Autowired 

可以对Bean类成员变量、方法及构造函数进行标注,完成依赖注入的自动装配工作。使用@Autowired可以省略Bean类的待依赖注入对象的set方法,@Autowired默认情况下按照依赖注入对象的类型自动进行匹配。加入@Autowired注解的方式是在Bean类依赖注入对象的前面加上@Autowired语句。


@EnableAspectJAutoProxy

@EnableAspectJAutoProxy标记在主配置类上,表示开启基于注解的aop模式;@EnableAspectJAutoProxy通过@import导入AspectJAutoProxyRegistrar,AspectJAutoProxyRegistrar又继承ImportBeanDefinitionRegistrar导入AnnotationAwareAspectJAutoProxyCreator的定义信息;

原理

  •  @Import(AspectJAutoProxyRegistrar.class), 给容器里导入AspectJAutoProxyRegistrar

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值