Spring开发常用到注解集合

Spring开发常用到注解集合

早就想总结一下注解了,但都懒得搞,今天看到一个总结的,转载一下

注解

JDK注解

JDK注解的注解,就5个:

@Override :用来标识重写方法
@Deprecated标记就表明这个方法已经过时了,但我就要用,别提示我过期
@SuppressWarnings(“deprecation”) 忽略警告
@SafeVarargs jdk1.7出现,堆污染,不常用
@FunctionallInterface jdk1.8出现,配合函数式编程拉姆达表达式,不常用

元注解

用来描述注解的注解,就5个:


  
  
  1. @Target 注解用在哪里:类上、方法上、属性上等等
  2. @Retention 注解的生命周期:源文件中、字节码文件中、运行中
  3. @Inherited 允许子注解继承
  4. @Documented 生成javadoc时会包含注解,不常用
  5. @Repeatable注解为可重复类型注解,可以在同一个地方多次使用,不常用

@Target ElementType…

描述注解存在的位置:


  
  
  1. ElementType.TYPE 应用于类的元素
  2. ElementType.METHOD 应用于方法级
  3. ElementType.FIELD 应用于字段或属性(成员变量)
  4. ElementType.ANNOTATION_TYPE 应用于注释类型
  5. ElementType.CONSTRUCTOR 应用于构造函数
  6. ElementType.LOCAL_VARIABLE 应用于局部变量
  7. ElementType.PACKAGE 应用于包声明
  8. ElementType.PARAMETER 应用于方法的参数

@Retention RetentionPolicy…


  
  
  1. SOURCE 在源文件中有效(即源文件保留)
  2. CLASS class文件中有效(即class保留)
  3. RUNTIME 在运行时有效(即运行时保留)

自定义注解

其他的注解

@ResponseBody:他就不会走视图解析器,会直接返回一个字符串;【SpringMVC中出现的的】,是配合@Controller使用的。将服务器端的数据转化为JSON返回。

@Controller:控制器,表示被spring所托管,会走视图解析器

@RestController:标注该类的下面,所有方法只会返回字符串。会直接返回json字符串

@RestController注解相当于@ResponseBody + @Controller合在一起的作用

@Controller@RestController区别:

@RestController包含了@ResponseBody

@RequestMapping:访问路径映射,规定了浏览器的访问方式

@GetMapping :只允许接收get类型

@PathVariable:通过 @PathVariable 可以将 URL 中占位符参数绑定到控制器处理方法的入参中:URL 中的 {xxx} 占位符可以通过@PathVariable(“xxx”) 绑定到操作方法的入参中。

@Component:spring提供的,用来ioc,表示该类交给Spring管理装配了。

@value(“值”):使用注解注入属性


 
 
  1. <!-- 配置包扫描,
  2. base-package:给定一个包的路径
  3. 并注入spring容器中,key是类名小写,value是类的对象
  4. -->
  5. <context:component-scan base-package="cn.tedu"/>
  6. --------------------------------------------------------------------------
  7. <!--可以不用提供set方法,直接在直接名上添加@value(“值”)-->
  8. @Component("user")
  9. // 相当于配置文件中 <bean id="user" class="当前注解的类"/>
  10. public class User {
  11. @Value("名字")
  12. // 相当于配置文件中 <property name="name" value="名字"/>
  13. public String name;
  14. }
  15. <!--如果提供了set方法,在set方法上添加@value(“值”);-->
  16. @Component("user")
  17. public class User {
  18. public String name;
  19. @Value("名字"i
  20. public void setName(String name) {
  21. this.name = name;
  22. }
  23. }
  24. ----------------------------------------------------------------------------------
  25. 开启属性注解支持!
  26. <context:annotation-config/>

@Component三个衍生注解【功能一样】

【写上这些注解,就相当于将这个类交给Spring管理装配了!】

@Autowired:是按类型自动转配的,不支持id匹配。

  • 需要导入 spring-aop的包!
  • 依赖注入(DI)时使用,表示由spring把两个对象间的关系依赖注入。
    • 位置:pojo类的成员变量的上一行位置
    • 作用:想用那个类的功能,直接依赖注入。前提:先IOC
    • @Autowired(required=false) 说明: false,对象可以为null;true,对象必须存对象,不能为null。

@Qualifier

@Resource

  • @Resource如有指定的name属性,先按该属性进行byName方式查找装配;
  • 其次再进行默认的byName方式进行装配;
  • 如果以上都不成功,则按byType的方式自动装配。
  • 都不成功,则报异常。

@Autowired@Resource异同:

  1. @Autowired@Resource都可以用来装配bean。都可以写在字段上,或写在setter方法上。
  2. @Autowired默认按类型装配(属于spring规范),默认情况下必须要求依赖对象必须存在,如果要允许null 值,可以设置它的required属性为false,如:@Autowired(required=false) ,如果我们想使用名称装配可以结合@Qualifier注解进行使用
  3. @Resource(属于J2EE复返),默认按照名称进行装配,名称可以通过name属性进行指定。如果没有指定name属性,当注解写在字段上时,默认取字段名进行按照名称查找,如果注解写在setter方法上默认取属性名进行装配。 当找不到与名称匹配的bean时才按照类型进行装配。但是需要注意的是,如果name属性一旦指定,就只会按照名称进行装配。
  4. 它们的作用相同都是用注解方式注入对象,但执行顺序不同。@Autowired先byType,@Resource先byName。

常用AOP注解:

@Aspect:表示是一个切面类:由切点和通知组成

@Pointcut:表示是一个切点


 
 
  1. @Pointcut("execution( * cn.tedu.service..*.*(..))"):切点表达式

@Aspect:表示是一个前置通知

@Aspect:表示是一个切面类

@Before : 表示是一个前置通知
@After : 表示是一个后置通知
@Around: 表示是一个环绕通知

@CrossOrigin:放行js的请求—跨域的解决方案

springbootApplication中的注解

@ComponentScan:扫描当前主启动类同级的包的

@ConfigurationPropertiesScan:扫描包

@Configuration:表示这是一个配置类,被spring所接管配置


 
 
  1. @Configuration(proxyBeanMethods = false)】

@PropertySource :加载指定的配置文件;

@configurationProperties:默认从全局配置文件中获取值;

@configurationProperties(prefix=”xxx”):表述的是实体类与配置类的值进行绑定

@EnableConfigurationProperties:自动配置属性

springboot中自动配置的注解

  • @Configuration(proxyBeanMethods = false)
    表示这是一个配置类,和以前编写的配置文件一样,也可以给容器中添加组件
  • @EnableConfigurationProperties({ServerProperties.class})
    启动指定类的ConfigurationProperties功能;
    进入这个ServerProperties查看,将配置文件中对应的值和ServerProperties绑定起来;
    并把ServerProperties加入到ioc容器中
  • spring底层@Conditional注解
    根据不同的条件判断,如果满足指定的条件,整个配置类里面的配置就会生效;
  • @ConditionalOnWebApplication(type = Type.SERVLET)
    这里的意思就是判断当前应用是否是web应用,如果是,当前配置类生效
  • @ConditionalOnProperty(prefix = “server.servlet.encoding”, value = {“enabled”}, matchIfMissing = true)
    判断配置文件中是否存在某个配置:server.servlet.encoding.enabled;
    如果不存在,判断也是成立的
    即使我们配置文件中不配置server.servlet.encoding.enabled=true,也是默认生效的;

@Conditional作用是按照一定的条件进行判断,满足条件给容器注册bean。

@ConditionalOnMissingBean作用在@bean定义上

@RunWith(SpringRunner.class): 是一个测试启动器,表明Test测试类要使用注入的类,比如@Autowired注入的类,有了@RunWith(SpringRunner.class)这些类才能实例化到spring容器中,自动注入才能生效

@Entity表示使用该注解的实体类自动与数据库中对应的表【类名首字母小写就对应着表名】进行绑定

@GeneratedValue(strategy = GenerationType.IDENTITY设置主键自增。@Id设置主键为ID

spring could

@LoadBalanced

当使用RestTemplate进行远程服务调用时,假如需要负载均衡,可以在RestTemplate对象构建时,使用@LoadBalanced对构建RestTemplate的方法进行修饰,

@Value默认读取项目配置文件中配置的内容【 @Value(“${server.port:8080}”)】

@ConditionalOnMissingBean(DefaultCache.class) 这个注解表示没有指定的bean对象时,才会执行它描述的方法创建对象


原文连接:[https://www.kuangstudy.com/bbs/1443036187819253762](https://www.kuangstudy.com/bbs/1443036187819253762)
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值