SpringBoot学习笔记<二>注解

时间:2022-09-12 16:17:10

此篇为项目作结之笔记,关于注解。

项目启动入口
@SpringBootApplication[必选]

取消SpringBoot启动时默认检查的数据库连接配置

  @SpringBootApplication(exclude={DataSourceAutoConfiguration.class,HibernateJpaAutoConfiguration.class})

 @ServletComponentScan[可选]

  注解后: Servlet、Filter、Listener 可以直接通过 * @WebServlet、@WebFilter、@WebListener 注解自动注册,无需其他代码。

@RunWith(SpringRunner.class) //与@SpringBootTest测试时,搭配使用

@SpringBootTest

路由与网络
@Controller
@RestController

@ResponseBody //组合控制器[@Controller + @ResponseBody]
        // 返回结果直接写入HTTP response body中,响应输出json、非html格式输出时需要此注解
        //比如:异步获取json数据,加上@responsebody后,会直接返回json数据

@RequestMapping(value= {"/helloworld/{pathItem}", "/hw/{pathItem}"}, method = RequestMethod.GET) //改成POST时,此URL访问将失败
@GetMapping(value={"/duapc", "/duapc"})
@PostMapping(value="")

@PathVariable("id") //用于将请求URL中的模板变量映射到功能处理方法的参数上
  serviceName{@PathVariable("id") Integer ID)
    + 配置url和方法的一个关系@RequestMapping("servicePath/{pathItem}")【必须配合使用】
@RequestParam("param") //获取请求参数的值
  serviceName{@RequestParam("param") Integer Param)

@CrossOrigin 解决细粒度(到具体某个/某些action级)的配置跨域

数据持久层

【Hibernate】
@Entity
  说明这个class是实体类,并且使用默认的orm规则,即class名即数据库表中表名,class字段名即表中的字段名
  注意:实体类必须用 @javax.persistence.Entity 进行注解
  如果想改变这种默认的orm规则,就要使用:
@Table来改变class名与数据库中[表名]的映射规则;
@Column来改变class中字段名与db中表的[字段名]的映射规则
@Table(name="tb_boy")
  指定了Entity所要映射带数据库表,其中@Table.name()用来指定映射表的表名。
  如果缺省@Table注释,系统默认采用类名作为映射表的表名。
  实体Bean的每个实例代表数据表中的一行数据,行中的一列对应实例中的一个属性。
@Id
@GeneratedValue //定义了标识字段生成方式,默认自增
@Column(name="pk_boy_id")注释定义了将成员属性映射到关系表中的哪一列和该列的结构信息,属性如下:
  1)name:映射的列名。如:映射tbl_user表的name列,可以在name属性的上面或getName方法上面加入;
  2)unique:是否唯一;
  3)nullable:是否允许为空;
  4)length:对于字符型列,length属性指定列的最大字符长度;
  5)insertable:是否允许插入;
  6)updatetable:是否允许更新;
  7)columnDefinition:定义建表时创建此列的DDL;Eg:columnDefinition="varchar(30) comment '主键'"
  8)secondaryTable:从表名。如果此列不建在主表上(默认是主表),该属性定义该列所在从表的名字。
@OneToOne(fetch = FetchType.LAZY, cascade=CascadeType.ALL)//

@Where(clause = "is_delete=0")
@JoinColumn(name = "fk_boy_id", referencedColumnName = "pk_boy_id")
  //永远为主控端
  //boy中的fk_boy_id字段参考boy表中的pk_boy_id字段
@Temporal(value=TemporalType.TIME)
  指定java.util.Date或java.util.Calender属性与数据库类型date、time或timestamp中的那一种类型进行映射

@Transient //临时字段,映射时忽略

//其他

@JsonIgnore //在不需要的转化json的属性上面设置@JsonIgnore,避免出现无线循环

Spring IOC容器

特别注:如无特别配置,Spring IOC无法主动注入Bean到Filter或者拦截器

@Value("${cupSize}") // 绑定application.yml配置文件中的属性到Spring容器中

  不通过配置文件的注入属性的情况

  Eg:@Value("${object.name}") or @Value("hello world")

  通过@Value将外部的值动态注入到Bean中,使用的情况有:

  • 注入普通字符串
  • 注入操作系统属性
  • 注入表达式结果
  • 注入其他Bean属性:注入beanInject对象的属性another
  • 注入文件资源
  • 注入URL资源

@Autowired //从容器中取值,对类成员变量、方法及构造函数进行标注,完成自动装配的工作
      //从Spring容器取值使用【前提:Component生效】
@Component:
  将本Bean置入Spring容器中,形成绑定
  把普通pojo实例化到spring容器中,相当于配置文件中的<bean id="" class=""/>
  定义Spring管理Bean.

  @Component("beanName")//可附加指定Bean的名字

@Configuration

  @Configuration中所有带@Bean注解的方法都会被动态代理,调用该方法返回的都是同一个实例。

  @Configuration注解本质上还是@Component

@ConfigurationProperties(prefix="boy")
  使本Bean与application.yml配置文件中前缀为boy的实体的属性值形成属性与值一一映射
  即 将application.yml的属性值【通过本Bean形成实体规约】
@Component
@ConfigurationProperties(prefix="boy")
  public class BoyProperties { ... }

//@Configuration中所有带@Bean注解的方法都会被动态代理,调用该方法返回的都是同一个实例。
//@Configuration注解本质上还是@Componen入无特别配置,Spring IOC无法主动注入Bean到Filter或者拦截器
SpringBoot学习笔记<二>注解 
推荐文献
  [1] Spring Data JPA 之 一对一,一对多,多对多 关系映射 
  [2] [十]SpringBoot 之 普通类获取Spring容器中的bean
  [3] 从content-type设置看Spring MVC处理header的一个坑
  [4] 取消spring boot启动时连接数据库配置
  [5] spring boot 搭建web项目常见五种返回形式

SpringBoot学习笔记<二>注解的更多相关文章

  1. springMVC学习笔记&lpar;二&rpar;-----注解和非注解入门小程序

    最近一直在做一个电商的项目,周末加班,忙的都没有时间更新博客了.终于在上周五上线了,可以轻松几天了.闲话不扯淡了,继续谈谈springMvc的学习. 现在,用到SpringMvc的大部分使用全注解配置 ...

  2. spring学习笔记二 注解及AOP

    本节需要导入spring-aop包 注解 使用注解的目的是为了代替配置,在使用注解时,省略键时,则是为value赋值. 扫描某个包下的所有类中的注解 <?xml version="1. ...

  3. springboot 学习笔记(二)

    springboot 学习笔记(二) 快速创建一个springboot工程,并引入所需要的依赖 1.利用Spring initializr 来创建一个springboot项目,登陆http://sta ...

  4. Springboot学习笔记(六)-配置化注入

    前言 前面写过一个Springboot学习笔记(一)-线程池的简化及使用,发现有个缺陷,打个比方,我这个线程池写在一个公用服务中,各项参数都定死了,现在有两个服务要调用它,一个服务的线程数通常很多,而 ...

  5. SpringBoot学习笔记

    SpringBoot个人感觉比SpringMVC还要好用的一个框架,很多注解配置可以非常灵活的在代码中运用起来: springBoot学习笔记: .一.aop: 新建一个类HttpAspect,类上添 ...

  6. 学习笔记&lowbar;J2EE&lowbar;SpringMVC&lowbar;03&lowbar;注解配置&lowbar;&commat;RequestMapping用法

    @RequestMappingde的用法 摘要: 主要介绍注解@RequestMapping的用法 一.@RequestMapping 简介 在Spring MVC 中使用 @RequestMappi ...

  7. SpringBoot学习笔记(14):使用SpringBootAdmin管理监控你的应用

    SpringBoot学习笔记(14):使用SpringBootAdmin管理监控你的应用 Spring Boot Admin是一个管理和监控Spring Boot应用程序的应用程序.本文参考文档: 官 ...

  8. SpringBoot学习笔记(3):静态资源处理

    SpringBoot学习笔记(3):静态资源处理 在web开发中,静态资源的访问是必不可少的,如:Html.图片.js.css 等资源的访问. Spring Boot 对静态资源访问提供了很好的支持, ...

  9. SpringBoot学习笔记(2):引入Spring Security

    SpringBoot学习笔记(2):用Spring Security来保护你的应用 快速开始 本指南将引导您完成使用受Spring Security保护的资源创建简单Web应用程序的过程. 参考资料: ...

随机推荐

  1. 第一次尝试使用JAVA编写的ATM机程序

    package study; import java.util.Scanner; public class ATM { private static int[] users = { 111111, 2 ...

  2. Spark RCFile的那些&OpenCurlyDoubleQuote;坑”

    RCFile在平台的应用场景中多数用于存储需要“长期留存”的数据文件,在我们的实践过程中,RCFile的数据压缩比通常可以达到8 : 1或者10 : 1,特别适用于存储用户通过Hive(MapRedu ...

  3. wcf系列学习5天速成——第三天 分布性事务的使用 有时间再验证下 不同库的操作

    原文地址:http://www.cnblogs.com/huangxincheng/archive/2011/11/06/2238273.html 今天是速成的第三天,再分享一下WCF中比较常用的一种 ...

  4. qcow2、raw、vmdk等镜像格式

    转自 http://www.prajnagarden.com/?p=248 http://blog.csdn.net/starshine/article/details/8179483 转者言:对pr ...

  5. &lbrack;补档&rsqb;&lbrack;Tyvj 1518&rsqb;CPU监控

    [Tyvj 1518]CPU监控 题目 Bob需要一个程序来监视CPU使用率.这是一个很繁琐的过程,为了让问题更加简单,Bob会慢慢列出今天会在用计算机时做什么事. Bob会干很多事,除了跑暴力程序看 ...

  6. vdscode连接git服务器&lpar;以码云为例&rpar;

    准备工作:先下载并安装git客户端 1.在码云或者github上新建项目,获得新建项目的地址,得到一个类似:https://gitee.com/zhangshitongsky/vueTest.git ...

  7. python selenium操作表格式元素实例

    很多时候,网页上的布局都是表格形式的,如出下面这样的 这种网页类型在自动化中比较头痛,需要很多判断,下面就举个例子,这里以深圳出入境网页为例,http://yysl.sz3e.com/wsyysq/s ...

  8. mysql数据库切分

    一.数据的垂直切分概念:数据的垂直切分,也可以称之为纵向切分.将不同的表分散到不同的数据库主机中.一个应用系统,总体功能肯定是由很多个功能模块所组成的,而每一个功能模块所需要的数据对应到数据库中就是一 ...

  9. LVS原理以及配置

    安装好ipvsadm后需要查看内核是否加载了ip_vs模块儿,如果没有需要手动执行ipvsadm进行加载: # ipvsadm # lsmod |grep ip_vs # rmmod ip_vs_rr ...

  10. C&num;实现在图片上动态写内容

    之前在项目上遇到这么一个需求,就是要在图片上写内容,而且要求是动态,我所谓的动态就是在图片上写的内容是动态的.网上找了找,很多人实现了网图片上写内容的功能,但是,并没有实现动态.所以在这里把我的解决办 ...