目录
@RestController
他是一个组合注解,包含了@Controller注解和@ResponseBody注解
@Controller注解表示这是一个控制器,用于处理HTTP请求和响应
@ResponseBody注解表示方法返回的结果直接作为HTTP响应的内容,而不是返回一个视图
补充:如果没加ResponseBody注解的话,假如返回值是String,他其实表示的是模板文件的名字比如说jsp文件的名字,他会根据返回的字符串去找到相关的页面,相当于再把页面返回给浏览器
@RequestMapping
- value属性:请求URL映射,在类上用RequestMapping对URL进行模块化管理
- method属性:限定请求URL只能通过指定的method请求方法去访问该HandlerMethod
- params:通过设置params属性条件,进行访问HandlerMethod的限制
@RequestBody
用来接收请求体中的数据,常使用请求体传参的无疑就是POST请求了;
不支持GET请求,因为他是通过URL传参
@ Autowired(依赖注入)
自动依赖注入,这个是根据类型装配的,他是使用反射里面的暴力反射给参数直接注入了
但是,如果有两个同类型的实现类只用Autowired是不行的,会报bean类型不唯一,必须要在数据层(@Mapper)等的注解后面加上()里面写上名字,此时注解也会成功,他会在按类型注入不成功的基础上改为按名称注入,但是不推荐这样写,我们需要使用@Qualifier注解
@Qualifier (配合Autowired)
配合着@Autowired注解使用, 使用这个注解来指定名称(用于bean类型不唯一的情况)
@Qualifier("name1")
@Value (简单类型依赖注入)
在后面加个()里面写上简单类型的值
@Value("123")
private String name;
注意,Value注解也可以注入配置文件里面的属性,在配置好@PropertySource注解以后使用${}来注入
@Value(${name})
@PropertySource(加载properties文件)
在配置类里面加上这个注解,括号里面写要加载的properties文件,如果有多个配置文件,要采取数组的形式,即({"aaaaa","bbbbbb"})
也可以写成("classpath:aaaa")
@Scope(定义bean的作用范围--单例或者非单例)
这个注解写在配置类上面
@Scope("singleton")----------单例
@Scope("prototype")----------非单例
@PostConstruct(初始化)
写在类里面的初始化方法上面,代表着这个方法是这个bean的初始化方法
@PreDestroy(销毁)
写在类里面的销毁方法上面,代表着这个方法是这个bean的销毁方法,假如这个方法没有触发,那么可能是bean没有执行到销毁,虚拟机就先自己关闭了,此时我们需要采取关闭钩子或者关闭容器
@Component(定义bean)
用来定义工具类的bean
@ComponentScan(组件扫描)
扫描我们的Component,Controller,Service,Mapper(Repository)
@ComponentScan("扫描的类的位置")
@Configuration(配置类)
写在类上面,代表这是一个配置类
@Bean (把返回值变成Bean)
这个注解写在方法上面,代表着把这个方法的返回值变成一个Bean,还可以@Bean("")里面写这个bean重新命的名
如果这个bean需要其他的依赖
简单类型采取成员变量的方法(@Value)
引用类型采取方法形参的方法(直接在方法中写上形参,依靠spring容器的自动装配,按类型匹配)
@Import(手动将配置类添加到核心配置类里面)
这个注解只能用一次,多个数据请用数组格式,写在核心配置类中,有了这个注解就不用每个配置类里面加@Configuration
@Import(***.class)-----***是这个配置类的文件名
@EnableAspectJAutoProxy(aop)
写在配置类里面,告诉程序,我们要用注解开发aop
@Aspect(aop)
告诉spring容器,下面的类是用来做aop的,记得配合@EnableAspectJAutoProxy使用,还有@Component(先把他交给spring容器管理)