首页 > 编程知识 正文

junit常用注解详细说明,springboot常用注解及其含义

时间:2023-05-05 11:58:53 阅读:198010 作者:4244

在此之前需要安装myspl,并配置好依赖与xml   一、entity 层

Java Persistence API,即 jpa 定义了一种定义,可以将常规的普通Java对象(有时被称作POJO)映射到数据库。

@Entity

一个类对应一个数据库实体。

@Entitypublic class Man { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) private int id; @Column(name = "name") //设置插入表中的字段名 private String name;}

点击运行项目之后,你的本地数据库里就会创建了一个表,名为 man ,该表里存在两个字段,一个是 id ,一个是 name。

@Table

设置表的属性,包括表名等。

 

如果只是想写普通的类(不与数据库关联)就用@Data(或@Transient)和@Component注解

 

@Id

@Id注释指定表的主键

 

@Column
设置字段的属性,包括字段名、字段长度等

 

@GeneratedValue

标注主键的生成策略,通过 strategy 属性指定。

例如:

@GeneratedValue(strategy = GenerationType.IDENTITY)

IDENTITY 表示采用数据库 ID自增长的方式来自增主键字段(Oracle 不支持)

 

二、dao 层

dao 持久层,主要是对数据库操作,要继承 JpaRepository<实体类,主键的数据类型>

@Repository

持久层即 Dao 层,主要用于数据库相关操作。

例如:

@Repositorypublic interface ManDao extends JpaRepository<Man,Long> { List<Man> findAll(); //从这往下的方法都是spring boot提供的,不用实现,看名知意,供service层使用 Man findByName(String name); Man findById(Integer id); void deleteById(Integer id);}

该注解是告诉Spring,让Spring创建一个ManDao的实例。当Service需要使用Spring创建的ManDao实例时,就可以使用@Resource(或者使用@Autowired)注解告诉Spring,Spring把创建好的ManDao的实例注入给Service即可。

 

三、service 层

@Service

服务层:业务类代码和对dao的调用

@Servicepublic class MyService implements MyServiceInterface{ @Resource private ManDao manDao ; @Override public String getManInfo(){ Man man = manDao.findById(1); return man.toString(); }}

 

四、controller 层

@Controller

对应 Spring MVC 控制层,主要用户接受用户请求并调用 Service 层返回数据给前端页面。

@Controllerpublic class MyContrller { @Resource private MyService myService; @RequestMapping("/101") @ResponseBody public String function(){ return myService.getManInfo(); }}

此时就可以启动工程了,然后在浏览器输入 http://localhost:8080/101  

 

@RequestMapping

用来处理 url 请求地址映射的注解

            (1)  value:  指定request的地址

            (2)  method: 指定请求的method类型, GET、POST、PUT、DELETE等(如果不指定接收请求的方式,则表示都接收)

            (3)  params:指定request中包含的某些参数值,作为方法的输入


参考:https://www.jianshu.com/p/6bfc7e0f56a0

 

@ResponseBody

1)java对象转为json格式的数据,接着直接写入HTTP response body中

例如:

@ResponseBody public User function(){ User user = new User("10","zxdbb"); return user; }

那么这里就会返回user的json格式到前端

 

@RequestBody

读取 Request 请求(可能是 POST,PUT,DELETE,GET 请求)的 body 部分并且Content-Type 为 application/json 格式的数据,接收到数据之后会自动将数据绑定到 Java 对象上去。

例如:

@PostMapping("/sign-up")public ResponseEntity signUp(@RequestBody @Valid UserRegisterRequest userRegisterRequest) { userService.save(userRegisterRequest); return ResponseEntity.ok().build();}

发送 post 请求到这个接口,并且 body 携带 JSON 数据,我们的后端就可以直接把 json 格式的数据映射到我们的 UserRegisterRequest 类上。

需要注意的是:一个请求方法只可以有一个@RequestBody,但是可以有多个@RequestParam和@PathVariable。 如果你的方法必须要用两个 @RequestBody来接受数据的话,大概率是你的数据库设计或者系统设计出问题了!

参考文章:https://zhuanlan.zhihu.com/p/135987318

 

@RequestParam

获取请求体中的查询参数

例如

@Controllerpublic class MyContrller { @Resource private MyService myService; @RequestMapping("/101") @ResponseBody public String function(@RequestParam(value = "string",required = false,defaultValue = "") String str){ return myService.getManInfo() + str; }}

在浏览器中输入 http://localhost:8080/101/?string=hello

那么在function()中,str = "hello"

 

@PathVariable

获取请求体中的路径参数

例如:

@GetMapping("/klasses/{klassId}/teachers")public List<Teacher> getKlassRelatedTeachers( @PathVariable("klassId") Long klassId) {...}

 

我们请求的 url 是:/klasses/{123456}/teachers

那么 klassId=123456

 

参考文章:https://zhuanlan.zhihu.com/p/135987318

 

五、其他组件

@Component

泛指组件,当组件不好归类的时候,我们可以使用这个注解进行标注。

 

@Configuration

配置类,程序启动时就会执行里面的@Bean

 

六、其他注解

@Bean

相当于XML中的Bean,放在方法的上面,而不是类,意思是产生一个bean,并交给spring管理。可以用@AutoWired注入

例如:

@Configurationpublic class BeanTester { @Bean(name = "testBean") public String test() { String str = "测试@Bean注解"; return str; }}

注意: @Configuration 注解相当于 XML 文件的根元素,必须要,有了才能解析其中的 @Bean 注解

 

@AutoWired

自动导入对象到类中,被注入进的类同样要被 Spring 容器管理。

 

@value

从application.yml中读取数据

例如:

application.yml

value01:ABCD @Value("${value01}")String value01;


@Aspect

spring 的 AOP,Aspect Oriented Program 面向切面编程

通俗点说,一个切点,有上切面,有下切面,切点是一个函数

当需要函数执行的时候,会有这么个流程:上切面 -> 切点 -> 下切面

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。