目录
1.前言
2.web url映射
2.1@RequestMapping
2.2PostMapping
2.3GetMapping
3.参数接受和接口响应
3.1@RequestParam
3.2@RequstBoby
3.3@ResponseBoby
3.4@RestController
4.bean的存储
4.1@Controller
4.2@Service
4.3@Repository
4.4@Compontent
4.5@Configuration
4.6@Bean
5 bean的获取
5.1@Autowired
5.2@Qualifier
5.3@Resource
5.4常见面试题
1.前言
我们在学习spring的时候,经常会用到注解。那么spring都有哪些注解呢?它是一种为程序代码提供元数据信息的标记。在Java中,注解以@开头,可以附加到类,方法,字段或者其他代码元素上,用于提供额外的信息或指示编辑器解释器或其他工具对这些代码元素进行特殊处理。接下来,我将介绍一些常见的注解。
2.web url映射
2.1@RequestMapping
由上图我们可以知道,该注解既可以作用于方法上,也可以作用于类上。是一种运行时注解,它实现了@Documented和@Mapping两个注解。我们可以通过它来写上url映射的地址,前端的url和它要交互得名字一样。该注解可以实现任意http请求的方法,包括get和post方法。
2.2PostMapping
它只能处理post请求的方法。
2.3GetMapping
它只能处理get请求方法
3.参数接受和接口响应
3.1@RequestParam
获取请求中的参数
3.2@RequstBoby
获取请求中的数据,一般是json形式
3.3@ResponseBoby
用于定义服务器向客户端响应的是数据格式。一般配上@Controller一起使用
3.4@RestController
实现了@ResponBoby和@Controller注解。使用这一个可以代替这两个的使用。
告诉spirng这是一个处理器,可以处理http请求,并且可以返回数据。
4.bean的存储
4.1@Controller
控制器存储,将对象存储到spring中并且告诉它这是一个控制器。它控制Service层
4.2@Service
服务存储,一般放地是业务逻辑类的代码。它控制的是Mapper层
4.3@Repository
仓库存储,用于表示数据访问层,一般我们用MyBatis框架提供的@Mapper注解来表述数据访问层。
4.4@Compontent
这属于是一个元注解,就是注解其它类。@Controller和@Service这些注解都实现了该注解。这些注解被称为@Compontent的衍生注解
4.5@Configuration
这是一个配置存储的注解。
4.6@Bean
方法注解,这个注解主要是解决Spring MVC中的两个问题
1.使用外部包里的类,没办法添加类注解
2.一个类需要多个对象,比如多个数据源
而@Bean就可以解决这些问题
我们可以通过代码演示一下这个是怎么用的。
首先我们定义一个用户。并且用@Bean来注解一下。
@Bean
public User user(){
User user = new User();
user.setAge(18);
user.setName("zhangsan");
return user;
}
然后我们来尝试获取一下:
public static void main(String[] args) {
ApplicationContext context = SpringApplication.run(DemoApplication.class, args);
User user = context.getBean(User.class);
System.out.println(user);
}
运行以后发现出问题了,不行。
这是因为@Bean注解要配合其它注解使用,我们在类上加一个@Component。
@Component
public class TestController {
@Bean
public User user(){
User user = new User();
user.setAge(18);
user.setName("zhangsan");
return user;
}
}
5 bean的获取
5.1@Autowired
类的注入,直接获取到。
@Autowired
private User user;
5.2@Qualifier
指定要注入的bean对象,在@Qualifier的value属性中,指定注入bean的名称它不能单独使用,必须和@Autowired一起使用。
5.3@Resource
按照bean的名称注入,通过name属性指定要注入的bean的名称。
5.4常见面试题
@Autowired和@Resource的区别:
1.@Autowired是由spring框架提供的注解,而@Resource是由jdk提供的
2.@Autowired默认是按照类型注入,而@Resource是按照名称获取的,相比于@Autowired来说,@Resource支持更多的参数设置,例如name设置,根据名称获取bean