SpringBoot学习笔记<二>注解
此篇为项目作结之笔记,关于注解。
项目启动入口
@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或者拦截器
![]()
推荐文献
[1] Spring Data JPA 之 一对一,一对多,多对多 关系映射
[2] [十]SpringBoot 之 普通类获取Spring容器中的bean
[3] 从content-type设置看Spring MVC处理header的一个坑
[4] 取消spring boot启动时连接数据库配置
[5] spring boot 搭建web项目常见五种返回形式
SpringBoot学习笔记<二>注解的更多相关文章
- springMVC学习笔记(二)-----注解和非注解入门小程序
最近一直在做一个电商的项目,周末加班,忙的都没有时间更新博客了.终于在上周五上线了,可以轻松几天了.闲话不扯淡了,继续谈谈springMvc的学习. 现在,用到SpringMvc的大部分使用全注解配置 ...
- spring学习笔记二 注解及AOP
本节需要导入spring-aop包 注解 使用注解的目的是为了代替配置,在使用注解时,省略键时,则是为value赋值. 扫描某个包下的所有类中的注解 <?xml version="1. ...
- SpringBoot学习笔记二之Spring整合Mybatis
原文链接: https://www.toutiao.com/i6803235766274097678/ 在learn-admin-component子工程中加入搭建环境所需要的具体依赖(因为比较长配置 ...
- springboot 学习笔记(二)
springboot 学习笔记(二) 快速创建一个springboot工程,并引入所需要的依赖 1.利用Spring initializr 来创建一个springboot项目,登陆http://sta ...
- Springboot学习笔记(六)-配置化注入
前言 前面写过一个Springboot学习笔记(一)-线程池的简化及使用,发现有个缺陷,打个比方,我这个线程池写在一个公用服务中,各项参数都定死了,现在有两个服务要调用它,一个服务的线程数通常很多,而 ...
- SpringBoot学习笔记
SpringBoot个人感觉比SpringMVC还要好用的一个框架,很多注解配置可以非常灵活的在代码中运用起来: springBoot学习笔记: .一.aop: 新建一个类HttpAspect,类上添 ...
- 学习笔记_J2EE_SpringMVC_03_注解配置_@RequestMapping用法
@RequestMappingde的用法 摘要: 主要介绍注解@RequestMapping的用法 一.@RequestMapping 简介 在Spring MVC 中使用 @RequestMappi ...
- SpringBoot学习笔记(14):使用SpringBootAdmin管理监控你的应用
SpringBoot学习笔记(14):使用SpringBootAdmin管理监控你的应用 Spring Boot Admin是一个管理和监控Spring Boot应用程序的应用程序.本文参考文档: 官 ...
- SpringBoot学习笔记(3):静态资源处理
SpringBoot学习笔记(3):静态资源处理 在web开发中,静态资源的访问是必不可少的,如:Html.图片.js.css 等资源的访问. Spring Boot 对静态资源访问提供了很好的支持, ...
随机推荐
- pip install urllib3[secure] 报错 error: ffi.h: No such file or directory
解决 sudo apt-get install build-essential autoconf libtool pkg-config python-opengl python-imaging pyt ...
- Elasticsearch通关教程(一): 基础入门
简介 Elasticsearch是一个高度可扩展的.开源的.基于 Lucene 的全文搜索和分析引擎.它允许您快速,近实时地存储,搜索和分析大量数据,并支持多租户. Elasticsearch也使用J ...
- URL https://i.cnblogs.com/EditPosts.aspx?opt=1
URL url = new URL("https://i.cnblogs.com");URL url1 = new URL(url, "EditPosts.aspx?op ...
- SpringCloud学习笔记:SpringCloud简介(1)
1. 微服务 微服务具有的特点: ◊ 按照业务划分服务 ◊ 每个微服务都有独立的基础组件,如:数据库.缓存等,且运行在独立的进程中: ◊ 微服务之间的通讯通过HTTP协议或者消息组件,具有容错能力: ...
- Python——Set集合
一.定义 Set集合用于表示相互之间无需的一种组合对象,包括:并集.交集.补集 二.集合的两种模式 sample = set() 初始化普通集合 sample = frozenset() 初始化不可 ...
- Lodop打印表格带页头页尾 自动分页每页显示头尾
Lodop中有两种专门给超文本表格的方式,ADD_PRINT_TABLE和ADD_PRINT_TBURL,该方式只能用于单个表格,表格外的内容不显示,是专门用于打印html超文本表格的.使用这两个语句 ...
- Civil 3D .NET二次开发第11章代码升级至2018版注意事项
原来涉及2017的,均需要改为2018 原来的21改为22 代码中AeccXUiLand.AeccApplication.11.0"改为AeccXUiLand.AeccApplication ...
- SQLSERVER 实现三元运算符
三元运算符在很多种编程语言中都存在,那么在SQL Server中有没有呢? 很遗憾,SQL server中并没有这个功能,三元运算符是什么呢? 这是一段表达式:[条件 ? 满足返回值 : 不满足返回值 ...
- 【XSY3141】哲学家 计算几何 线段树
题目描述 有一个平面,最开始平面上没有任何点. 你要按顺序加入 \(n\) 个点,求加入每个点后有多少三角形严格包含原点(在边界上不算). \(n\leq 400000\),无重点. 题解 其实这题本 ...
- js侧边菜单
目标 实现一个侧边栏菜单,最多二级,可以收起展开.用于系统左侧的主菜单. 大多数系统都会有这样的菜单,用于导航功能,切换到不同的操作页面.在单页应用系统中,菜单一般是固定在左侧,分组节点上配图标,高亮 ...