首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Spring框架(十)Spring的常用注解,知道这些,可以开始写项目了

Spring框架(十)Spring的常用注解,知道这些,可以开始写项目了

作者头像
一写代码就开心
发布2022-12-01 13:10:23
2620
发布2022-12-01 13:10:23
举报
文章被收录于专栏:java和pythonjava和pythonjava和python

目录

1 为什么要使用注解

之前我们学习的,我们因为有了spring,不需要我们自己创建对象了,只需要配置一下,那么创建spring容器对象,以后就可以直接传spring容器里面拿对象了。

但是前提是我们得把东西放到spring容器里面,我们才可以拿,那么就有了配置文件,applicationcontext.xml文件里面,我们要用标签bean进行配置

  <bean id="factory" class="com.pojo.Student"></bean>

也就是把我们写的类都需要在这个xml里面进行配置。一个项目里面我们写的类是非常的多,所以,不可能都在这个xml里面配置,我们需要想办法,所以就有了注解

2 开启注解扫描方法

在applicationcontext.xml配置文件里面开启注解扫描

在这里插入图片描述
在这里插入图片描述

开启之后,我们就可以在自己写的类上面使用注解了,每一个注解代表的意思是不一样的。

3 使用流程

我们之前一般是先申明一个类,然后将这个类在xml里面配置bean标签。现在因为有了注解,所以现在不需要每一个类都申明bean对象了,只需要在xml里面配置一个扫描的路径,之后在每一个类上面写上注解就可以,具体的流程是:

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

4 常用注解

4.1 @Component:

使用在普通java类上(把普通pojo实例化到spring容器中,相当于配置文件中的

<bean id="" class=""/>
泛指各种组件,就是说当我们的类不属于各种归类的时候
(不属于@Controller、@Services等的时候),
我们就可以使用@Component来标注这个类

我们自己写一个类,之前是在applicationcontext.xml里面配置,然后使用的时候在spring容器里面拿。

现在不需要在applicationcontext.xml里面配置了,只需要开启注解之后,在自己写的类上面写注解@Component。那么spring容器里面就有这个类的对象了。直接拿就可以了。

举例:

@Component
public class User {

} 

4.2@Service:使用在业务层类上

这个注解和@Component一样,写了之后,就相当于配置了bean标签,把这个对象放到了spring容器里面。

-------已经有@Component了,还要有这个注解呢?
因为我们的项目是分层的,有controller层,service层,
mapper层。为了区分这些层,每一层类上面的注解都不一样。
只是为了区分不同的层。

业务层的类,上面就使用这个注解

作用:声明一个类的对象为bean对象,相当于配置了bean标签。

注意:相当于使用的是无参数构造器来创建对象。

4.2.1问题:

只使用@Service注解,和 A a=new A();的效果是相同的,创建的

是一个没有初始化数据的bean对象,但是在实际生产环境中很多时候

需要Spring容器帮我们创建一个带有初始化数据的对象(属性注入|依赖注入)

4.2.2解决:

仍然使用注解,告诉Spring容器对象,如何给注解声明的对象进行初始化

的赋值.,基本类型属性赋值和引用类型属性赋值

4.2.3实现:

依赖注入的注解:@Autowire和@Resource

属性注入的注解:@Value

4.3 @Resource

作用:替换在配置文件的依赖注入的。

     使用:在有依赖关系的属性上使用,比如A中有B属性,
     则在B属性上声明,告诉Spring容器对象将B的bean
     对象注入到A的bean对象中

注意:此注解是jdk官方的注解,不是Spring的注解,会先按照byName的方式注入,如果没有则按照byType的方式 继续注入,如果都没有则不注入。并且不需要提供get/set方法

@Resource有两个重要属性,分别是name和type

使用方法

@Component
public class Student{

} 


Student  这个类要变为bean对象,以上的写法就可以
@Service
public class User {

用这个注解属性注入
	@Resource
    private Student  student;


} 

4.4@Autowired

作用:和@Resource相同,都是替换依赖注入的配置的。

使用:在需要依赖注入的属性上声明

注意:该注解是Spring官方提供的,默认使用byType.

4.4.1 问题

在一个类上面,写了一个注解@Component,那么这个类就会被创建为一个bean对象,那么在这个类里面如果有一个引用数据类型的属性,那么需要依赖注入,也就是在这个属性上面写一个@Autowired这个注解,并且在这个引用数据类型的类上面写上注解@Component,这样就可以实现依赖注入,、、、

但是现在有一个问题,那就是属性上面写一个@Autowired,这个属性的类型是一个接口,他下面的实现类有好多,并且每一个实现类都写了注解@Component,那么会使用哪一个类作为依赖注入呢

4.4.2解决

在这里插入图片描述
在这里插入图片描述

======================================================

但是以上是使用2个注解,有点不方便,所以现在有一些新的注解,我们可以使用他@Resource,因为这个注解是根据名字

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

4.5@Value

作用:用来替换配置文件中的属性注入的。

使用:在属性上声明,值为${“键名”}

示例: @Value(${“name”})

注意:使用此注解的注入,无需提供get/set方法。

我们要将属性的值写在一个配置文件里面,在xml里面将这个属性配置文件导入,这样才可以进行使用。

在这里插入图片描述
在这里插入图片描述

4.6@Controller:使用在控制层类上,SpringMVC

作用:声明一个类的对象为bean对象,相当于配置了bean标签

使用:在SpringMVC的控制器类上使用。

也就是这个注解是springMVC框架的,不是spring框架的

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2022-05-11,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 目录
  • 1 为什么要使用注解
  • 2 开启注解扫描方法
  • 3 使用流程
  • 4 常用注解
    • 4.1 @Component:
      • 4.2@Service:使用在业务层类上
        • 4.2.1问题:
        • 4.2.2解决:
        • 4.2.3实现:
      • 4.3 @Resource
        • 4.4@Autowired
          • 4.4.1 问题
          • 4.4.2解决
        • 4.5@Value
          • 4.6@Controller:使用在控制层类上,SpringMVC
          相关产品与服务
          容器服务
          腾讯云容器服务(Tencent Kubernetes Engine, TKE)基于原生 kubernetes 提供以容器为核心的、高度可扩展的高性能容器管理服务,覆盖 Serverless、边缘计算、分布式云等多种业务部署场景,业内首创单个集群兼容多种计算节点的容器资源管理模式。同时产品作为云原生 Finops 领先布道者,主导开源项目Crane,全面助力客户实现资源优化、成本控制。
          领券
          问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档