常见注解
-
@ResponseBody
- 应用于controller层,作用在方法上,将java对象转为json格式的数据。
- 效果等同于通过response对象输出指定格式的数据。
-
@RequestBody
- 用于读取Request请求的body部分数据,使用系统默认配置的HttpMessageConverter进行解析,然后把相应的数据绑定到要返回的对象上
- 再把HttpMessageConverter返回的对象数据绑定到 controller中方法的参数上。
-
@RequestMapping
-
@RequestMapping 来映射请求,也就是通过它来指定控制器可以处理哪些URL请求,相当于Servlet中在web.xml中配置
-
<servlet> <servlet-name>servletName</servlet-name> <servlet-class>ServletClass</servlet-class> </servlet> <servlet-mapping> <servlet-name>servletName</servlet-name> <url-pattern>url</url-pattern> </servlet-mapping>
-
method 方法主要用来定义接收浏览器发来的何种请求
-
value 和 path 属性,描述请求路径
-
-
@Param
-
一般应用于Dao层,简单类型(8种基本数据类型+包装类+String) 传值的时候会忽略占位符个数和命名,传给所有的占位符,使用@Param注解,可以构建一个key-value键值对
-
value:创建的键值对的key 例如:
@Param(value="key") String value
-
-
@Component 用于创建对象,相当于在xml中配置一个bean 代码相当于()
- 作用:
把资源让spring来管理。相当于在xml中配置一个bean。 - 属性:
value:指定bean的id。如果不指定value属性,默认bean的id是当前类的类名。首字母小写。
- 作用:
-
@Controller
- 一般用于表现层的注解。
- value:指定bean的id。如果不指定value属性,默认bean的id是当前类的类名。首字母小写
-
@Service
- 一般用于业务层的注解。
- value:指定bean的id。如果不指定value属性,默认bean的id是当前类的类名。首字母小写
-
@Repository
- 一般用于持久层的注解。
- value:指定bean的id。如果不指定value属性,默认bean的id是当前类的类名。首字母小写
-
@Autowired
- 相当于:
- 自动按照类型注入。当使用注解注入属性时,set方法可以省略。它只能注入其他bean类型。
当有多个类型匹配时,使用要注入的对象变量名称作为bean的id,在spring容器查找,找到了也可以注入成功。找不到就报错。 - @Autowire和@Resource都是Spring支持的注解形式动态装配bean的方式。Autowire默认按照类型(byType)装配,如果想要按照名称(byName)装配,需结合@Qualifier注解使用。
- required:@Autowire注解默认情况下要求依赖对象必须存在。如果不存在,则在注入的时候会抛出异常。如果允许依赖对象为null,需设置required属性为false。
-
@Qualifier
- 作用:
在自动按照类型注入的基础之上,再按照Bean的id注入。它在给字段注入时不能独立使用,必须和@Autowire一起使用;但是给方法参数注入时,可以独立使用。 - 属性:
value:指定bean的id。 例如:@Qualifier(“userService”)
- 作用:
-
@Resource
-
作用:采用名称加注解的方式完成自动装配,直接按照Bean的id注入。它也只能注入其他bean类型。
-
属性:
name:指定bean的id。type:用于指定要注入的bean的type
-
装配顺序:
-
1.如果同时指定name和type属性,则找到唯一匹配的bean装配,未找到则抛异常; 2.如果指定name属性,则按照名称(byName)装配,未找到则抛异常; 3.如果指定type属性,则按照类型(byType)装配,未找到或者找到多个则抛异常; 4.既未指定name属性,又未指定type属性,则按照名称(byName)装配;如果未找到,则按照类型(byType)装配。
-
-
@Value
- 作用:
为基本数据类型和String类型数据的变量注入数据 - 属性:
value:用于指定值
- 作用:
-
@Scope
-
用于改变bean的作用范围
相当于:
-
属性:
value:指定范围的值。
取值:- singleton:单例,prototype:多例,
- request:产生一个新的bean,同时该bean仅在当前HTTP request内有效 ,
- session:产生一个新的bean,同时该bean仅在当前HTTP session内有效
- globalsession:
-
-
@PostConstruct
-
作用:
用与指定初始化方法
-
例如:
@PostConstruct public void init() { System.out.println("初始化方法执行"); }
类似于
<bean id="people" class="com.java.test4.People.People" init-method="init" >
-
-
@PreDestroy
-
作用:用与指定销毁方法
-
例如:
@PreDestroy public void destroy() { System.out.println("销毁方法执行"); }
类似于
<bean id="people" class="com.java.test4.People.People" destroy-method="destory">
-
-
@ComponentScan
- 作用:自动扫描指定包下所有使用@Service,@Component,@Controller,@Repository的类并注册
- 属性:basePackages:用于指定要扫描的包,和value的作用一致
-
@Bean
- 作用:
该注解只能写在方法上,表明使用此方法创建一个对象,并且放入spring容器。 - 属性:
name:给当前@Bean注解方法创建的对象指定一个名称(即bean的id,默认值是当前方法的名称.)。
- 作用:
-
@Import
- 作用:用于导入其他配置类
-
@Configuration
- 作用:声明当前类为配置类,相当于xml形式的Spring配置(类上)
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-vxCK6USJ-1611820661933)(C:\Users\vedeng\AppData\Roaming\Typora\typora-user-images\image-20210128145141818.png)]
- @Transactional 声明为事务的注解
- @Cacheable声明数据缓存
- @RestController:组合注解,组合了@Controller和@ResponseBody,当我们只开发一个和页面交互数据的控制层的时候可以使用此注解。
- @SpingBootApplication :SpringBoot核心注解,主要目的是开启自动配置。它也是一个组合注解,主要组合了@Configuration ,@EnableAutoConfiguration(核心)和@ComponentScan。可以通过@SpringBootApplication(exclude={想要关闭的自动配置的类名.class})来关闭特定的自动配置。
- @EnableAutoConfiguration 此注释自动载入应用程序所需的所有Bean——这依赖于Spring Boot在类路径中的查找。该注解组合了@Import注解,@Import注解导入了EnableAutoCofigurationImportSelector类,它使用SpringFactoriesLoader.loaderFactoryNames方法来扫描具有META-INF/spring.factories文件的jar包。而spring.factories里声明了有哪些自动配置。
- @WebAppConfiguration 一般用在测试上,注解在类上,用来声明加载的ApplicationContext是一个WebApplicationContext。他的属性指定的是Web资源的位置,默认为src/main/webapp,我们可以修改为:@WebAppConfiguration(“src/main/resources”)。
- @Override:
- 显式地声明复写的方法。防止子类和父类的方法混在一起。