springboot常见注解

1、@Override

表示此方法是一个覆写的方法,一般出现在serviceimpl实现类方法上;java在进行接口实现的时候,要实现接口中定义的所有方法,也就是通过实现类重写方法。加上此注解,会帮助我们检测方法重写的正确性,例如:方法名是否与接口中一致(也就是是否可以在接口中找到次方法定义),方法的引用参数是否正确等等。。。

2、@Controller

注解处理Http请求

3、@RestController  是  @Controller跟  @ResponseBody 两个注解的结合体

@Cotroller:对应的方法上,视图解析器可以return jsp/html等页面,并跳转到相应页面;若返回Json等内容到页面,需要加上@ResponseBody

@RestController  :  @Controller跟  @ResponseBody 两个注解的结合体,但不能返回Jsp/html等页面

4、@RequestBody:主要接收前端传递给后端的Json字符串中的数据(请求体中的数据的),GET方法无请求体,所以用@RequestBody接受数据时,前端不能用get提交数据,要用post提交;后端方法中 @RequestBody与@RequestParam可以同时使用,@RequestBody只能有一个,@RequestParam可以有多个

RequestBody接收的是请求体里面的数据;而RequestParam接收的是key-value里面的参数,所以它会被切面进行处理从而可以用普通元素、数组、集合、对象等接收)。
即:如果参数时放在请求体中,传入后台的话,那么后台要用@RequestBody才能接收到;如果不是放在请求体中的话,那么后台接收前台传过来的参数时,要用@RequestParam来接收,或则形参前什么也不写也能接收。

如果参数前写了@RequestParam(xxx),那么前端必须有对应的xxx名字才行(不管其是否有值,当然可以通过设置该注解的required属性来调节是否必须传),如果没有xxx名的话,那么请求会出错,报400。

如果参数前不写@RequestParam(xxx)的话,那么就前端可以有可以没有对应的xxx名字才行,如果有xxx名的话,那么就会自动匹配;没有的话,请求也能正确发送。

5、通过@PathVariable,例如/blogs/1

 通过@RequestParam,例如blogs?blogId=1

(1)当指向具体的业务资源时,用@PathVariable

(2)当URI对资源进行过滤时,用@RequestParam

6、@Param是mybatis的注解,用注解来简化XmL配置,@Param注解的作用是给参数命名,命名后能根据名字得到参数值,正确将参数传入sql语句

public interface Mapper { 
   
@Select("select s_id id,s_name name,class_id classid from student where  s_name= #{aaaa} and class_id = #{bbbb}") 
public Student select(@Param("aaaa") String name,@Param("bbbb")int class_id);  

}
}

 7、@repository:注解DAO持久层接口,只能标注在DAO类上,因为他还能将所标注的类中的抛出的数据访问异常封装为Spring的数据访问异常

8、@Service/@Repository不能接在接口上,而要写在接口实现类上,@Autowired注入时,可以用接口注入,也可以用实现类注入

9、当一个接口有多个实现类,可以用@Autowired注入接口

(1)但需要配合@Qualifier使用,指定名称@Qualifier(value = "实现类名称")

(2)要注入的实现类必须加上别名 @Repository("别名")

10、@Mapper:给Mapper接口自动生成一个实现类,让Spring对mapper接口的bean进行管理,

 11、@Autowired:注解由Spring提供,@Resource由J2EE提供

@Autowired注解默认通过byType方式注入,@Resource注解默认是通过byName方式注入

(1)@Autowired默认注入方式是byType,根据类型匹配,当有多个实现时,则通过byname注入,也通过配合@Qualifier注解显式的指定name值

(2)@Resource默认是Byname注入,没有匹配则通过bytype注入

// 1. 默认方式:byName
@Resource  
private UserService userDao; 

// 2. 指定byName
@Resource(name="userService")  
private UserService userService; 

// 3. 指定byType
@Resource(type=UserService.class)  
private UserService userService; 

// 4. 指定byName和byType
@Resource(name="userService",type=UserService.class)  
private UserService userService; 

 12、@RunWith(SpringRunner.class)的作用表明Test测试类要使用注入的类,比如@Autowire注入的类,使用@RunWith(SpringRunner.class)这些类才能实例化到Spring容器中,自动注入才能生效

13、使用Loggger记录器时候,注意别导错包

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@SpringBootTest
class RedisstudyApplicationTests {

    private static final Logger logger = LoggerFactory.getLogger(RedisstudyApplicationTests.class);
  

}

 

posted on 2022-08-18 16:16  ChanXM  阅读(151)  评论(0)    收藏  举报

导航