常⽤的注解--spring
常见注解
@ResponseBody
应⽤于controller层,作⽤在⽅法上,将java对象转为json格式的数据。
效果等同于通过response对象输出指定格式的数据。
@RequestBody
⽤于读取Request请求的body部分数据,使⽤系统默认配置的HttpMessageConverter进⾏解析,然后把相应的数据绑定到要返回的对象上
再把HttpMessageConverter返回的对象数据绑定到 controller中⽅法的参数上。
@RequestMapping
@RequestMapping 来映射请求,也就是通过它来指定控制器可以处理哪些URL请求,相当于Servlet中在l中配置
<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 代码相当于()
resource和autowired注解的区别作⽤:
把资源让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="st4.People.People"init-method="init">
@PreDestroy
作⽤:⽤与指定销毁⽅法
例如:
@PreDestroy
public void destroy(){
System.out.println("销毁⽅法执⾏");
}
类似于
<bean id="people"class="st4.People.People"destroy-method="destory">
@ComponentScan
作⽤:⾃动扫描指定包下所有使⽤@Service,@Component,@Controller,@Repository的类并注册
属性:basePackages:⽤于指定要扫描的包,和value的作⽤⼀致
@Bean
作⽤:
该注解只能写在⽅法上,表明使⽤此⽅法创建⼀个对象,并且放⼊spring容器。
属性:
name:给当前@Bean注解⽅法创建的对象指定⼀个名称(即bean的id,默认值是当前⽅法的名称.)。
@Import
作⽤:⽤于导⼊其他配置类
@Configuration
作⽤:声明当前类为配置类,相当于xml形式的Spring配置(类上)
[外链图⽚转存失败,源站可能有防盗链机制,建议将图⽚保存下来直接上传(img-vxCK6USJ-1611820
661933) (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:
显式地声明复写的⽅法。防⽌⼦类和⽗类的⽅法混在⼀起。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论