Java Spring的常用注解与新注解

Spring的常用注解

一、常用IOC注解按照作用分类

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-7ycS51Fk-1637633680702)(C:\Users\Administrator\AppData\Roaming\Typora\typora-user-images\image-20211105143343890.png)]

1、用于创建对象的注解@Component

(1)作用位置:实现类上
(2)注意事项,beans.xml容器中必须告知Spring要扫描的包,使用context标签,如图

(3)@Component衍生三个注解

​ Controller、Service、Repository 三个注解,都跟Component注解一样,用于不同层,Controller用于表现层、Service用于业务层、Repository用于持久层。

2、用于注入数据的注解@Autowired

(1) 作用:自动按照类型注入。只要容器中有唯一的一个bean对象和要注入的变量类型匹配成功,就可以注入成功,如果IOC容器中没有任何的类型和要注入的变量类型匹配,则报错。
(2)出现位置:可以使变量上,也可以是方法上
(3)细节:在使用注解注入时,set方法就不是必须的了
(4)原理图:在这里插入图片描述在这里插入图片描述

(5)@Autowired的衍生注解

​ 1、@Qualifier

​ 作用:按照类中注入的基础上再按名称注入,他在給类成员注入时不可单独使用,要结合@Autowired一起使用,但在給方法注入时可以单独使用

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-T1tno6ED-1637633680705)(C:\Users\Administrator\AppData\Roaming\Typora\typora-user-images\image-20211106144004098.png)]

​ 属性:value:用于指定bean的id

​ 2、@Resource

​ 作用:直接按照bean的id注入,可独立使用

​ 属性:name:用于指定bean的id

(6)以上@Autowired注解以及他的衍生注解,只能用于注入其他类型的bean类型数据,不可以用于基本数据类型和String。此外,集合类型的注入只能通过XML来实现。

​ 1、@Value

​ 作用:用于注入基本数据类型和String类型的数据

​ 属性:value:用于指定数据的值,它可以使用Spring的Spel表达式,Spel写法:${表达式}

3、用于作用范围的注解@Scope

(1)作用:用于指定bean的作用范围
(2)属性:value:执行范围的取值,常用取值:singleton、prototype
(3)位置:和@Component注解一样

4、用于生命周期的注解@PreDestroy和@PostConstruct

(1)@PreDestroy 作用于类中的destroy方法,用于销毁
(2)@PostConstruct 作用与类中的init方法,用于初始化
问题1:无论是使用使用spring的常用注解(告知spring需要扫描的包context),还是使用xml配置,都少不了bean.xml文件,要想摆脱bean.xml的限制,就得引入spring的新注解

Spring的新注解

新建一个配置类Config.SpringCongratulation.java,使用@Configuration注解,声明其是一个配置类,@ComponentScan可以指定配置类扫描的包。

@Configuration

作用:声明一个类是配置类

细节:当使用配置类的字节码获取配置类时可以省略

@ComponentScan

作用:指定Spring在创建容器时扫描的包

属性:value:和basePackages的作用是一样的,用于指定spring创建容器时要扫描的包。

@Bean

作用:用于把当前方法的返回值作为bean对象存入Spring的IOC容器当中

属性:name用于指定bean的id,不写时,默认为当前方法的名称

细节:当我们使用注解配置类型时,如果方法有参数,spring框架会去容器 中查找有没有可用的bean对象,跟@Autowired是一样的。

作用范围:默认是单例的,要想使用多例bean对象,则在方法上加上@Scope(value = “prototype”)注解

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Wuc8hrOK-1637633875259)(C:\Users\Administrator\AppData\Roaming\Typora\typora-user-images\image-20211106135500157.png)]

问题2:当去掉了bean.xml文件,该用了配置类,那么如何读取容器,之前使用bean.xml文件时,是使用

ApplicationContext ac = new ClassPathXmlApplicationContext(“bean.xml”)来读取IOC容器数据,而现在是读取配置类的信息,ApplicationContext = new AnnotationConfigApplicationContext(SpringConfiguration.class)来读取IOC容器。

@Import

作用:用于加载其他配置类 @Import(JdbcConfig.class)

属性:value:用于指定其他配置类字节码,当使用@Import注解时,有Import注解的就是主配置类,被导入的就是子配置类

@PropertySource

作用:用于指定properties文件的位置

属性:value:指定文件的名称和路径

​关键字:classpath,表示类路径下

使用:@PropertySource(“classpath:JdbcConfig.properties”)或者@PropertySource(“classpath:Spring\JdbcConfig.properties”)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

情迷不是情谜

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值