各框架下的常用注解

这篇博客详细介绍了Spring、Spring MVC、Mybatis、Spring Boot等框架中的常用注解,包括它们的功能和使用场景。如Spring框架的@Bean、@Configuration、@ComponentScan等,Spring MVC的@RequestMapping、@ResponseBody等,Mybatis的@Mapper、@Select等,以及Spring Boot的@SpringBootApplication等。同时,文章还讨论了@Autowired与@Resource的区别,以及在实际开发中的应用。
摘要由CSDN通过智能技术生成

Spring框架注解

Spring框架主要解决了创建对象、管理对象的问题。
Spring的依赖项名称是spring-context

1.@Bean

添加在配置类中返回对象的方法上。使得Spring框架自动调用此方法,并管理此方法返回的对象放入容器

2.@Configuration

@Configuration可以作用在任意类上,表示该类是一个配置类,其实就相当于一个xml配置文件。在Spring框架中可以使用ApplicationContext直接加载,使类中的配置项生效,或在集成框架中,只要配置类在组件扫描范围内,此类中的配置项即可生效

3.@Component

通用组件注解,泛指各种组件,就是说当我们的类不属于各种归类的时候(不属于@Controller、@Services等的时候),我们就可以使用@Component来标注这个类。当Spring执行组件扫描时,如果发现组件类,就会自动创建类的对象。

注意:组件类不应该是静态的,组件具有功能性。

4. @ComponentScan

用于指定组件扫描的包及其子孙包。包中的类如果添加了组件注解,则Spring执行组件扫描时会自动创建这些添加了组件注解的类的对象。

5.@Controller

组件注解,添加在控制器类上,是以Component为元注解的

6.@Service

组件注解,添加到业务类上,是以Component为元注解的

7.@Repository

组件注解,添加到数据访问类上,用于实例化对象,是以Component为元注解的。
为了避免idea误判,可添加在Mapper类上

8.@Scope

添加在组件类上,设置Spring对象的作用域。
singleton 单实例,全局有且仅有一个
prototype 多实例,每次获取Bean就有一个新的实例

由Spring管理的对象的作用域默认是单例的(并不是单例模式),对于同一个Bean,无论获取多少次,得到的都是同一个对象!如果希望某个被Spring管理的对象不是单例的,可以在类上添加@Scope("prototype")注解。

9.@Lazy

在单例的情况下,默认不是懒加载的,还可以通过@Lazy注解控制它是否为懒加载模式!所谓的懒加载,就是“不要逼不得已不创建对象”。

10.@Autowired

可以在类的属性、Setter方法、构造方法上添加@Autowired注解。
当添加在属性上,Spring会自动从容器中找到合适的对象为此属性注入值
当添加在Setter方法上或构造方法上,Spring会自动调用对应的方法

注意:
使用@Resource注解也可以实现自动装配(此注解是javax包中的),其装配机制是先尝试根据名称来装配,如果失败,再尝试根据类型装配!从执行效果上,一定程度可以等效于@Autowired

@Autowired@Resource的区别:
@Autowired:先根据类型,再根据名称
@Resource:先根据名称,再根据类型

@Autowired:可以注解属性、Setter方法、构造方法
@Resource:只能注解属性

@Autowired:由Spring提供
@Resource:由J2EE提供

面试题:

@Resource 和@Autowired 依赖注入的区别是什么?

  • @Resource
    • 只能放在属性上,表示先按照属性名匹配 IOC 容器中对象 id 给属性注入值
    • 若没有成功,会继续根据当前属性的类型匹配 IOC 容器中同类型对象来注入值
    • 若指定了 name 属性@Resource(name = “对象 id”),则只能按照对象 id 注入值。
  • @Autowird
    • 放在属性上:
      • 表示先按照类型给属性注入值
      • 如果 IOC 容器中存在多个与属性同类型的对象,则会按照属性名注入值.也可以配合@Qualifier(“IOC 容器中对象 id”)注解直接按照名称注入值。
    • 放在方法上:
      • 表示自动执行当前方法,如果方法有参数,会自动从 IOC 容器中寻找同类型的对象给参数传值,也可以在参数上添加@Qualifier(“IOC 容器中对象 id”)注解按照名称寻找对象给 参数传值。

11.@Qualifier

可以添加在属性、方法参数上,当使用@Autowired自动装配时,如果存在多个匹配类型的对象,且根据名称无法装配时,可以使用此注解指定名称

面试题:

@Qualifier 使用场 景是什么?

@Qualifier(“IOC 容器中对象 id”)可以配合@Autowird 一起使用, 表示根据指定
的 id 在 Spring 容器中匹配对象

12.@PropertySource

添加在配置类上,使用@PropertySource注解读取配置文件中的信息
举例:@PropertySource(“classpath:jdbc.properties”)
当Spring框架读取了配置文件中的信息后,会将这些读取到的数据封装在内置的Environment对象中,后续,任何需要这些配置信息的组件都可以从Environment中读取到配置的数据。

13. @Value

添加在属性或方法的参数上。主要用于配置读取Environment数据的表达式,使得Spring为属性、方法的参数注入值

    @Value("${spring.jdbc.url}")
    private String url;
    @Value("${spring.jdbc.driver}")
    private String driver;
    @Value("${spring.jdbc.username}")
    private String username
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值