springboot注解总结

   接触springboot快一年了,对微服务的概念越来越熟悉。而自己也慢慢萌生了探索一下源码的想法,写此博客,只为记录一下自己的学习过程。这也是我第一次尝试写系列博客。

   我觉得学习springboot,首先需要了解的就是springboot丰富的注解。

常用注解:

1、@SpringBootApplication 申明让spring boot自动给程序进行必要的配置,
等价于以默认属性使用@Configuration,@EnableAutoConfiguration和@ComponentScan

2、@Configuration 等同于spring的XML配置文件;使用Java代码可以检查类型安全。

3、@EnableAutoConfiguration使spring获取约定的配置进行自动配置。(默认从文件META-INF/spring.factories获取自动配置类)

4、@ComponentScan 表示将该类自动发现(扫描)并注册为Bean,可以自动收集所有的Spring组件,
包括@Configuration类。我们经常使用@ComponentScan注解搜索beans,并结合@Autowired注解导入。
如果没有配置的话,Spring Boot会扫描启动类所在包下以及子包下的使用了@Service,@Repository等注解的类

5、@EnableScheduling 在 Spring Boot 的配置类中,标注上这个注解,就可以对项目中的方法某些方法使用@Schedule注解,将其变为定时自动执行。
但只有两种注解共同使用时,才能达到本注解应有的作用。(我的项目已经配置了quarz,禁止用这种方式。。。)

6、@Autowired 自动导入依赖的bean,这个注解大家都用过。。

7、@Qualifier 限定描述符除了能根据名字进行注入,但能进行更细粒度的控制如何选择候选者

8、@ImportResource 用来加载xml配置文件,如果你想用xml完全可以的

9、@RestController 返回json字符串的数据,是@Controller和@ResponseBody的合集,直接可以编写RESTFul的接口,返回规则也可配,这里就不多写了

10、@ServletComponentScan spring能够扫描到自己编写的servlet和filter,
SpringBootApplication 上使用@ServletComponentScan注解后,Servlet、Filter、Listener,
可以直接通过 @WebServlet、@WebFilter、@WebListener 注解自动注册,无需其他代码

11、@Import({DynamicDataSourceRegister.class}) 注册动态多数据源(很少用)

12、@PropertySource(value = “classpath:spring/config.properties”)
通过@PropertySource注解将properties配置文件中的值存储到Spring的 Environment中,Environment接口提供方法去读取配置文件中的值,
参数是properties文件中定义的key值。上面是读取一个配置文件,如果你想要读取多个配置文件,请看下面代码片段
@PropertySource(value = {“classpath:spring/config.properties”,”classpath:spring/news.properties”})  (很少用)

13、@EnableWebSocketMessageBroker 表示开启使用STOMP协议来传输基于代理的消息,Broker就是代理的意思(很少用)

14、@Repository、@Service、@Controller,它们分别对应存储层 Bean,业务层 Bean,和展示层 Bean,将类标识为 Bean;
分别用于软件系统的不同层次:
@Component 是一个泛化的概念,仅仅表示一个组件 (Bean) ,可以作用在任何层次。
@Service 通常作用在业务层,但是目前该功能与 @Component 相同。
@Constroller 通常作用在控制层,但是目前该功能与 @Component 相同。
通过在类上使用 @Repository、@Component、@Service 和 @Constroller 注解,Spring会自动创建相应的 BeanDefinition 对象,
并注册到 ApplicationContext 中。这些类就成了 Spring 受管组件。这三个注解除了作用于不同软件层次的类,
其使用方式与 @Repository 是完全相同的。

15、@Value(“${spring.datasource.url}”) 获取 application 配置文件中的变量

16、@ConfigurationProperties 读取application属性配置文件中的属性

17、@ControllerAdvice 全局异常处理类,以将对于控制器的全局配置放在同一个位置。

  • 注解了@Controller的类的方法可以使用@ExceptionHandler、@InitBinder、@ModelAttribute注解到方法上。
  • ControllerAdvice注解将作用在所有注解了@RequestMapping的控制器的方法上
  • ExceptionHandler:用于全局处理控制器里的异常。
  • InitBinder:用来设置WebDataBinder,用于自动绑定前台请求参数到Model中。
  • ModelAttribute:本来作用是绑定键值对到Model中,此处让全局的@RequestMapping都能获得在此处设置的键值对。

18、@WebFilter 将一个实现了javax.servlet.Filter接口的类定义为过滤器

  • 属性filterName声明过滤器的名称,可选
  • 属性urlPatterns指定要过滤的URL模式,也可使用属性value来声明.(指定要过滤的URL模式是必选属性)

19、@Scope(“prototype”) Spring默认产生的bean是单例的,”prototype” 表示原型即每次都会new一个新的出来

20、@Bean标注在方法上(返回某个实例的方法),作用为注册bean对象

  • @Bean注解在返回实例的方法上,如果未通过@Bean指定bean的名称,则默认与标注的方法名相同;
  • @Bean注解默认作用域为单例singleton作用域,可通过@Scope(“prototype”)设置为原型作用域;
  • 既然@Bean的作用是注册bean对象,那么完全可以使用@Component、@Controller、@Service、@Ripository等
    注解注册bean,当然需要配置@ComponentScan注解进行自动扫描

21、@EnableAspectJAutoProxy表示开启AOP代理自动配置,如果配@EnableAspectJAutoProxy表示使用cglib进行代理对象的生成;设置@EnableAspectJAutoProxy(exposeProxy=true)表示通过aop框架暴露该代理对象,aopContext能够访问.

 

Controller层常用注解:

1、@PathVariable 当使用@RequestMapping URI template 样式映射时,即 someUrl/{paramId},
这时的paramId可通过 @Pathvariable注解绑定它传过来的值到方法的参数上

2、@RequestHeader 可以把Request请求header部分的值绑定到方法的参数上如(@RequestHeader("Accept-Encoding") String encoding){}

3、@CookieValue 可以把Request header中关于cookie的值绑定到方法的参数上如(@CookieValue("JSESSIONID") String cookie){}

4、@RequestParam

  • 常用来处理简单类型的绑定,通过 Request.getParameter() 获取的String可直接转换为简单类型的情况
    ( String–> 简单类型的转换操作由ConversionService配置的转换器来完成);
    因为使用request.getParameter()方式获取参数,所 以可以处理get 方式中queryString的值,也可以处理post方式中 body data的值;
  • 用来处理Content-Type: 为 application/x-www-form-urlencoded编码的内容,提交方式GET、POST;
  • 该注解有两个属性: value、required; value用来指定要传入值的id名称,required用来指示参数是否必须绑定;

5、@RequestBody 通过使用HandlerAdapter默认配置的HttpMessageConverters来解析Request请求的Body部分数据并将相应的数据绑定到Controller中方法的参数上,其常用来处理Content-Type不是application/x-www-form-urlencoded编码的内容,例如application/json, application/xml等。

  • 它是通过使用HandlerAdapter 配置的HttpMessageConverters来解析post data body,然后绑定到相应的bean上的。
  • 因为配置有FormHttpMessageConverter,所以也可以用来处理 application/x-www-form-urlencoded的内容,处理完的结果放在一个MultiValueMap<String, String>里,这种情况在某些特殊需求下使用。

6、@SessionAttributes 用来绑定HttpSession中的attribute对象的值,便于在方法中的参数里使用。
该注解有value、types两个属性,可以通过名字和类型指定要使用的attribute 对象

7、@ModelAttribute 该注解有两个用法,一个是用于方法上,一个是用于参数上:

  • 用于方法上时: 通常用来在处理@RequestMapping之前,为请求绑定需要从后台查询的model;
  • 用于参数上时: 用来通过名称对应,把相应名称的值绑定到注解的参数bean上;要绑定的值来源于:
    • @SessionAttributes 启用的attribute 对象上;
    • @ModelAttribute 用于方法上时指定的model对象;
    • 上述两种情况都没有时,new一个需要绑定的bean对象,然后把request中按名称对应的方式把值绑定到bean中,
      这种方式实际的效果就是在调用@RequestMapping的方法之前,为request对象的model里put(“account”, Account)

 

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
提供的源码资源涵盖了安卓应用、小程序、Python应用和Java应用等多个领域,每个领域都包含了丰富的实例和项目。这些源码都是基于各自平台的最新技术和标准编写,确保了在对应环境下能够无缝运行。同时,源码中配备了详细的注释和文档,帮助用户快速理解代码结构和实现逻辑。 适用人群: 这些源码资源特别适合大学生群体。无论你是计算机相关专业的学生,还是对其他领域编程感兴趣的学生,这些资源都能为你提供宝贵的学习和实践机会。通过学习和运行这些源码,你可以掌握各平台开发的基础知识,提升编程能力和项目实战经验。 使用场景及目标: 在学习阶段,你可以利用这些源码资源进行课程实践、课外项目或毕业设计。通过分析和运行源码,你将深入了解各平台开发的技术细节和最佳实践,逐步培养起自己的项目开发和问题解决能力。此外,在求职或创业过程中,具备跨平台开发能力的大学生将更具竞争力。 其他说明: 为了确保源码资源的可运行性和易用性,特别注意了以下几点:首先,每份源码都提供了详细的运行环境和依赖说明,确保用户能够轻松搭建起开发环境;其次,源码中的注释和文档都非常完善,方便用户快速上手和理解代码;最后,我会定期更新这些源码资源,以适应各平台技术的最新发展和市场需求。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值