- @RestController:Spring4之后新加入的注解,原来返回json需要@ResponseBody和@Controller配合。
@RestController
public class HelloController {
@RequestMapping(value="/hello",method= RequestMethod.GET)
public String sayHello(){
return "hello";
}
}
-
- 可以不用提供set方法,直接在直接名上添加@value(“值”)
- 如果提供了set方法,在set方法上添加@value(“值”);
- 衍生注解:写上这些注解,就相当于将这个类交给Spring管理装配了!
- @Controller:web层
- @Service:service层
- @Repository:dao层
- 可以不用提供set方法,直接在直接名上添加@value(“值”)
-
@bean:作用在方法上,返回一个方法返回的对象注册在容器中
-
@Configuration
@Configuration用于定义配置类,可替换xml配置文件,被注解的类内部包含有一个或多个被@Bean注解的方法,这些方法将会被AnnotationConfigApplicationContext或AnnotationConfigWebApplicationContext类进行扫描,并用于构建bean定义,初始化Spring容器。 -
@Mapper: @Mapper注解是由Mybatis框架中定义的一个描述数据层接口的注解,注解往往起到的都是一个描述性作用,用于告诉sprigng框架此接口的实现类由Mybatis负责创建,并将其实现类对象存储到spring容器中。
-
@Service:表示Service层的bean对象
-
@Get@Set:给pojo补全Getter和Setter方法
-
@Date:具有Get和Set的功能,还可以实现重写其他方法的功能equals等
-
@Componentscan:该注解默认会扫描该类所在的包下所有的配置类
-
前后端参数交互的注解
- @RequestParam:用于将请求参数区数据映射到功能处理方法的参数上。
- @PathVariable 是从一个URI模板里面来填充(RestFul风格)
- @RequestBody主要用来接收前端传递给后端的json字符串中的数据的(请求体中的数据的);而最常用的使用请求体传参的无疑是POST请求了,所以使用@RequestBody接收数据时,一般都用POST方式进行提交。在后端的同一个接收方法里,@RequestBody与@RequestParam()可以同时使用,@RequestBody最多只能有一个,而@RequestParam()可以有多个。
- @ResponseBody:注解的作用是将controller的方法返回的对象通过适当的转换器转换为指定的格式之后,写入到response对象的body区
//请求的参数和变量名相同
@RequestMapping(path="/owners/{ownerId}", method=RequestMethod.GET)
public String findOwner(@PathVariable String ownerId, Model model) {
Owner owner = ownerService.findOwner(ownerId);
model.addAttribute("owner", owner);
return "displayOwner";
}
//请求的参数和变量名不同
@RequestMapping(path="/owners/{ownerId}}", method=RequestMethod.GET)
public String findOwner(@PathVariable("ownerId") String theOwner, Model model) {
// 具体的方法代码…
}
- @RequestMapping:一个用来处理请求地址映射的注解,可用于类或者方法上。用于类上,表示类中的所有响应请求的方法都是以该地址作为父路径。
@RequestMapping 注解的映射描述具有多样性:支持标准的 URL 格式;支持 Ant 风格。
所谓 Ant 风格指在 URL 中支持 通配符的语法结构描述。 Ant 的通配符主要是 3 种:
- ?: 匹配任何单字符;
- "" : 匹配 0 个或者任意数量的字符;/user//saveUser:可匹配类似于 /user/aaa/saveUser、/user/bbb/saveUser 等请求 URL;
- ** : 匹配 0 个或者更多的目录。/user/*/saveUser:可匹配类似于 /user/aaa/saveUser、/user/bbb/saveUser 等请求 URL;
- 占位符
在Spring MVC中你可以在方法参数上使用@PathVariable注解,将其与URI模板中的参数绑定起来:
- @GetMapping用于将HTTP get请求映射到特定处理程序的方法注解
具体来说,@GetMapping是一个组合注解,是@RequestMapping(method = RequestMethod.GET)的缩写。 - @PostMapping用于将HTTP post请求映射到特定处理程序的方法注解
具体来说,@PostMapping是一个组合注解,是@RequestMapping(method = RequestMethod.POST)的缩写
注解中的path最开始的斜线可加可不加
- @PropertySource(“classpath:配置文件名”):注解用于指定资源文件读取的位置,它不仅能读取properties文件,也能读取xml文件,并且通过YAML解析器,配合自定义PropertySourceFactory实现解析YAML文件。
- @ConfigurationProperties 是 Spring Boot 中的标签,它可以让开发者将整个配置文件,映射到对象中,比@Value 效率更高。通常,它可以和@PropertySource 标注一起使用,映射整个配置文件。
- @Value该注解的作用是将我们配置文件的属性读出来,有@Value(“${}”)( ${ property : default_value })和@Value(“#{}”)(#{ obj.property? :default_value })两种方式,第一个注入的是外部配置文件对应的property,第二个则是SpEL表达式对应的内容。 那个default_value,就是前面的值为空时的默认值。注意二者的不同,#{}里面那个obj代表对象。
*
Mybatis中的注解
https://blog.youkuaiyun.com/Sunshineoe/article/details/114697944
https://blog.youkuaiyun.com/tangyaya8/article/details/90300554
@Param
首先明确这个注解是为SQL语句中参数赋值而服务的。@Param的作用就是给参数命名,比如在mapper里面某方法A(int id),当添加注解后A(@Param(“userId”) int id),也就是说外部想要取出传入的id值,只需要取它的参数名userId就可以了。将参数值传如SQL语句中,通过#{userId}进行取值给SQL的参数赋值。
- @Param注解基本类型的参数
public User selectUser(@Param("userName") String name,@Param("password") String pwd);
<select id="selectUser" resultMap="User">
select * from user where user_name = #{userName} and user_password=#{password}
</select>
- @Param注解JavaBean对象
public List<User> getAllUser(@Param("user") User u);
<select id="getAllUser" parameterType="com.vo.User" resultMap="userMapper">
select
from user t where 1=1
and t.user_name = #{user.userName}
and t.user_age = #{user.userAge}
</select>
- 注意点
- #{}和${}的使用:
- 不使用@Param注解时,参数只能有一个,并且是Javabean。在SQL语句里可以引用JavaBean的属性,而且只能引用JavaBean的属性。
- 为什么多个参数不能用@Param?:因为mybatis在执行的之后动态生成实现类,而在java中使用反射会将方法中的参数名称擦除,所以如果在xml中要接收到规定参数名称的参数,通过注解标识是简单又可行的方法,一方面可以自定义方法参数的绑定,另外一方面在xml中也可以起有意义的名称与@Param中的value对应。