Springboot MVC 常用注解详解

1、引入依赖项


            org.springframework.boot
            spring-boot-starter-web
        

2、web应用目录结构

模板文件:位于 resources/templates目录下
静态文件(css、js、image)位于resources/static目录下
配置文件:位于 resources目录下
源代码文件:src目录下

3、包名结构

controller—控制器
service— 业务处理类
entity—实体类
conf–配置类
dao–数据库处理类

4、常用注解

@SpringBootApplication
核心注解,放在main方法所在启动类之上,表示springboot 入口

@Controller
作用于类之上,表明当前是一个mvc中的Controller。

@RestController
作用于类之上,表明当前类是一个controller而且类中的方法不能返回html、jsp等页面,只能返回 文本 json、xml

@ResponseBody
作用于 controller中的方法之上,表明当前方法返回的是文本,基于字符串、xml、json等。
@RestController等于 @Controller+@ResponseBody

@ReqeustMapping
作用于类或者方法之上。用于映射URL
比如示例:

import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RestController;

@RestController
@RequestMapping(value = "/hello",method = RequestMethod.GET)
public class HelloController {

    @RequestMapping(value = "/test/{id}",method = RequestMethod.GET )
    public String test(@PathVariable("id") String id){
        return "hello,"+id;
    }
}

要想访问 test方法,那么访问路径是:
http://localhost:8080/hello/test,由于后面要加上参数,并且参数会传递到方法的参数中,所以完整的访问路径是:
http://localhost:8080/hello/test/adrian
得到的结果如图:
Springboot MVC 常用注解详解_第1张图片
常用参数:
value,映射url
method,映射方法
params,请求中的参数,比如params=“id=adrian”
headers,请求中的HTTP头
produces,响应的媒体类型,其实就是对应HTTP协议中的Accept字段。
consumes,允许的媒体类型(Media Types)
对应这个method,RequestMapping又被简化成了很多个注解:
@GetMapping
@PostMapping
@PutMapping
@DeleteMapping
@PatchMapping

这些注解对应不同的请求方法

@PathVariable
这是一个作用域参数的注解,用于表示将url中的参数映射到后面的参数中
默认参数 value:表示映射哪一个url中的参数

@RequestBody
这也是一个作用于参数的注解,表示 客户端请求内容 需要是参数类型对应的JSON格式,服务端 Spring boot 默认使用 Jackson 来处理客户端请求的json,并反序列化为 参数类型。比如:

@PostMapping(path="/test.json")
    @ResponseBody
    public String test2(@RequestBody User user){
        return user.getName();
    }

上面代码表示客户端发起了一个json请求,spring boot返回的是一个字符串,二对于json请求,spring boot 将请求内容序列化为User 对象。

@ModelAttribute
1.应用在参数上,将客户端传过来的参数按名称注入到指定对象中,并且会将这个对象自动加入ModelMap中,便于View层使用;
2.应用在方法上,会在每一个@RequestMapping标注的方法前执行,如果有返回值,则自动将该返回值加入到ModelMap中;

@Bean
作用和spring配置文件中的相同,但是放在方法的上面,而不是类,意思是将方法返回的对象作为一个bean,交给spring管理。
经常放在@Configuration注解的类中的方法之上使用。

@Qualifier
这个注解在当spring上下文中有多个同一类型的Bean时,会抛出BeanCreationException异常,所以用@Qualifier(“name”)来指定,但是需要与@Autowired配合使用,例如:

@Autowired   
@Qualifier("userServiceImpl")   
public IUserService userService;  

@Autowired
作用于类,属性、setter方法之上,用来装备对象,赋值的。

@Resource
和Autowired类似,也是用来装配对象,区别是:
1.@Autowired 是spring注解,而 @Resource是J2EE的。推荐使用 @Resource
2.@Autowired是根据类型进行自动装配的。所以一个类型有多个bean时,会报异常,那么这时候用上面说的@Qualifier来解决。
@Resource根据名称来进行装配

@Configuration
放在类的上面表示这是一个由spring管理的配置类,类中会有多个@Bean注解的方法,注意的是,@Bean注解的方法返回的对象都是由spring动态代理,是同一个实例

@Component
与@Configuration类似,也是注解配置类的,但是区别是@Component中的对象都是每次调用都会new一个新对象。
@Component 注解的类表示是spring的一个组件,可以被注入到spring容器中进行管理。

@Repository
也是注解类被注入到spring容器中管理的,但是区别是,
@Repository 会被作为持久层操作(数据库)的bean来使用 ,也就是说这个注解只能放在持久层操作类之上。

@Service
和 @Component属于同一类别的注解, 作用于业务逻辑层
其实 @Controller也是属于同一类型的注解,只是Controller只作用于控制器之上,会被spring-mvc框架所使用。

@ComponentScan
放在启动类之上,表示组件扫描,如果需要扫描@Component @Controller @Service这些注解的类,则需要在启动类上用到这个注解
同样,如果扫描到了有@Component @Controller @Service这些注解的类,则直接把这些类注册为bean

@EnableAutoConfiguration
让 Spring Boot 根据应用所声明的依赖来对 Spring 框架进行自动配置,一般加在启动类上。

@ControllerAdvice
这个注解用于处理 统一异常处理 等切面时用到

@InitBinder
注册类中使用,比如注册一个日期转换类的时候用到

你可能感兴趣的:(springboot,java)