千家信息网

Spring核心注释如何使用

发表于:2026-11-04 作者:千家信息网编辑
千家信息网最后更新 2026年11月04日,本篇内容主要讲解"Spring核心注释如何使用",感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习"Spring核心注释如何使用"吧!这是所有已知的Spring核
千家信息网最后更新 2026年11月04日Spring核心注释如何使用

本篇内容主要讲解"Spring核心注释如何使用",感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习"Spring核心注释如何使用"吧!

这是所有已知的Spring核心注释的列表。

@Autowired

我们可以使用 @Autowired 注释 来标记Spring将要解析和注入的依赖关系。我们可以将这个注释与构造函数,setter或字段注入一起使用。

构造函数注入:

@RestController
公共 类 CustomerController {
    私人 CustomerService  customerService ;

    @Autowired
    public  CustomerController(CustomerService  customerService){
        这个。customerService  =  customerService ;
    }
}

二传手注射:

进口 组织。弹簧框架。豆子。工厂。注释。自动装配 ;
进口 组织。弹簧框架。网络。绑定。注释。RestController ;
@RestController
公共 类 CustomerController {
    私人 CustomerService  customerService ;
    @Autowired
    public  void  setCustomerService(CustomerService  customerService){
        这个。customerService  =  customerService ;
    }
}

现场注入:

进口 组织。弹簧框架。豆子。工厂。注释。自动装配 ;
进口 组织。弹簧框架。网络。绑定。注释。RestController ;
@RestController
公共 类 CustomerController {
    @Autowired
    私人 CustomerService  customerService ;
}
有关更多详细信息,请访问我们关于@Autowired和 Spring依赖注入指南的文章。

@豆

  • @Bean 是方法级注释和XML元素的直接模拟。注释支持一些提供的属性,例如init-method,destroy-method,auto-wiring和name。

  • 您可以在带@Bean 注释@Configuration或带 注释的@Component类中使用 注释 。

以下是@Bean方法声明的简单示例 :

进口 组织。弹簧框架。背景。注释。豆 ;
进口 组织。弹簧框架。背景。注释。配置 ;
进口 com。公司名称。projectname。客户。客户服务 ;
进口 com。公司名称。projectname。订单。OrderService ;
@组态
公共 类 申请 {
    @豆
    public  CustomerService  customerService(){
        返回 new  CustomerService();
    }
    @豆
    public  OrderService  orderService(){
        返回 新的 OrderService();
    }
}

上述配置等效于以下Spring XML:

< beans >
        < bean  id = "customerService"  class = "com.companyname.projectname.CustomerService" />
        < bean  id = "orderService"  class = "com.companyname.projectname.OrderService" />
阅读@Bean 本文中有关注释的 更多信息 Spring @Bean Annotation with Example。

@Qualifier

此注释有助于微调基于注释的自动布线。可能存在这样的情况:我们创建多个相同类型的bean,并且只想使用属性连接其中一个bean。这可以使用@Qualifier 注释和 @Autowired 注释来控制 。

示例:考虑使用 EmailService 和 SMSService 类来实现单个 MessageService 接口。

MessageService 为多个消息服务实现创建 接口。

公共 接口 MessageService {
    public  void  sendMsg(String  message);
}

接下来,创建实现: EmailService 和 SMSService。

公共 类 EmailService  实现 MessageService {
    public  void  sendMsg(String  message){
         系统。出。println(消息);
    }
}
公共 类 SMSService  实现 MessageService {
    public  void  sendMsg(String  message){
         系统。出。println(消息);
    }
}

是时候看看@Qualifier 注释的用法了 。

公共 接口 MessageProcessor {
    public  void  processMsg(String  message);
}
公共 类 MessageProcessorImpl  实现 MessageProcessor {
    private  MessageService  messageService ;
    //基于setter的DI
    @Autowired
    @Qualifier("emailService")
    public  void  setMessageService(MessageService  messageService){
        这个。messageService  =  messageService ;
    }
    //基于构造函数的DI
    @Autowired
    public  MessageProcessorImpl(@Qualifier("emailService")MessageService  messageService){
        这个。messageService  =  messageService ;
    }
    public  void  processMsg(String  message){
        messageService。sendMsg(message);
    }
}
在本文中阅读有关此注释的更多信息: Spring @Qualifier Annotation示例。

@需要

的 @Required 注释是一个方法级注释和施加到bean的setter方法。

此注释仅指示必须将setter方法配置为在配置时使用值依赖注入。

例如, @Required setter方法标记了我们想要通过XML填充的依赖项:

@需要
void  setColor(String  color){
    这个。color  =  color ;
}
< bean  class = "com.javaguides.spring.Car" >
    < property  name = "color"  value = "green"  />

否则, BeanInitializationException 将被抛出。

@值

Spring @Value 注释用于为变量和方法参数指定默认值。我们可以使用@Value 注释来读取Spring环境变量以及系统变量 。

Spring @Value 注释也支持SpEL。让我们看一下使用@Value 注释的一些示例 。

示例:我们可以使用@Value 注释为类属性指定默认值 。

@Value("默认DBConfiguration")
private  String  defaultName ;

该 @Value 注释参数可以是只有字符串,但春天尝试将其转换为指定的类型。以下代码将正常工作,并将布尔值和整数值分配给变量。

@Value("true")
private  boolean  defaultBoolean ;

@Value("10")
private  int  defaultInt ;

这演示了Spring @Value - Spring Environment Property

@Value("$ {APP_NAME_NOT_FOUND}")
private  String  defaultAppName ;

接下来,使用@Value 注释分配系统变量 。

@Value("$ {java.home}")
private  String  javaHome ;
@Value("$ {HOME}")
private  String  homeDir ;

春天 @Value - SpEL

@Value("#{ systemProperties ['java.home']}")
private  String  javaHome ;

@依赖于取决于

该@DependsOn 注释可以强制的Spring IoC容器中的bean,它是由注释之前初始化一个或多个bean @DependsOn 注释。

所述 @DependsOn 注释可以在直接或间接地注释与任何类使用 @Component 或与所述注解的方法 @Bean。

示例:让我们创建 FirstBean 和 SecondBean 类。在此示例中, SecondBean 在bean之前初始化 FirstBean。

公共 类 FirstBean {
    @Autowired
    private  SecondBean  secondBean ;
}
公共 类 SecondBean {
    public  SecondBean(){
        系统。出。println("通过Constuctor初始化的SecondBean");
    }
}

基于配置类在Java中声明上述bean。

@组态
public  class  AppConfig {
    @Bean(" firstBean ")
    @DependsOn(value  = {
        "secondBean"
    })
    公共 FirstBean  firstBean(){
        返回 新的 FirstBean();
    }
    @Bean("secondBean")
    public  SecondBean  secondBean(){
        返回 new  SecondBean();
    }
}
阅读有关Spring上@DependsOn注释的更多信息 - @DependsOn注释示例。

@懒

默认情况下,Spring IoC容器在应用程序启动时创建并初始化所有单例bean。我们可以通过使用@Lazy 注释来防止单例bean的这种预初始化 。

所述 @Lazy 注释可以在任何类中使用,与直接或间接地注释 @Component 或与所述注解的方法 @Bean。

示例:考虑我们有两个bean - FirstBean 和 SecondBean。在此示例中,我们将FirstBean 使用 @Lazy注释显式加载 。

公共 类 FirstBean {
    public  void  test(){
        系统。出。println("FirstBean类的方法");
    }
}
公共 类 SecondBean {
    public  void  test(){
        系统。出。println("SecondBean类的方法");
    }
}

基于配置类在Java中声明上述bean。

@组态
public  class  AppConfig {
    @Lazy(value  =  true)
    @豆
    公共 FirstBean  firstBean(){
        返回 新的 FirstBean();
    }
    @豆
    public  SecondBean  secondBean(){
        返回 new  SecondBean();
    }
}

我们可以看到,bean secondBean 由Spring容器初始化,而bean firstBean 则被显式初始化。

阅读有关@Lazy 注释的更多信息, 并在Spring上提供完整的示例 - @Lazy Annotation示例。

@抬头

注释的方法 @Lookup 告诉Spring在我们调用它时返回方法返回类型的实例。

有关此注释的详细信息,请参见 Spring @LookUp Annotation。

@主

@Primary 当存在多个相同类型的bean时,我们使用它 给bean更高的优先级。

@零件
@主
class  Car  实现 Vehicle {}
@零件
class  Bike  实现 Vehicle {}

@零件
class  Driver {
    @Autowired
    车辆 车辆 ;
}
@零件
class  Biker {
    @Autowired
    @Qualifier("自行车")
    车辆 车辆 ;
}
在Spring上阅读有关此注释的更多信息 - @Primary Annotation示例。

@范围

我们使用@Scope 注释来定义类的范围或 @Bean定义。它可以是单例,原型,请求,会话,globalSession或某些自定义范围。 @Component

例如:

@零件
@Scope(值 =  ConfigurableBeanFactory。SCOPE_SINGLETON)
公共 类 TwitterMessageService  实现 MessageService {
}
@零件
@Scope(值 =  ConfigurableBeanFactory。SCOPE_PROTOTYPE)
公共 类 TwitterMessageService  实现 MessageService {
}
了解更多关于在@Scope注解 春@Scope注解与辛格尔顿范围实例和 春天@Scope注解与原型作用域实例。

@轮廓

如果我们希望Spring 只在特定的配置文件处于活动状态时才使用 @Component 类或 @Bean方法,我们可以用它来标记它 @Profile。我们可以使用注释的value参数配置配置文件的名称:

@零件
@Profile("sportDay")
class  Bike  实现 Vehicle {}

@进口

该 @Import 注释指示一个或多个@Configuration类进口。

例如:在基于Java的配置中,Spring提供了 @Import 注释,允许从另一个配置类加载@Bean定义。

@组态
公共 类 ConfigA {
    @豆
    public  A  a(){
        返回 新的 A();
    }
}
@组态
@Import(ConfigA。类)
公共 类 ConfigB {
    @豆
    public  B  b(){
        return  new  B();
    }
}

现在,在实例化上下文时,不需要同时指定 ConfigA类和ConfigB类,只需要显式提供ConfigB。

阅读有关Spring @Import Annotation上@Import注释的更多信息 。

@ImportResource

Spring提供了一个 @ImportResource 注释,用于将bean从applicationContext.xml文件加载到ApplicationContext中。例如:考虑我们在类路径上有applicationContext.xml Spring bean配置XML文件。

@组态
@ImportResource({ "classpath *:applicationContext.xml" })
公共 类 XmlConfiguration {
}
通过Spring @ImportResource Annotation的完整示例,阅读有关此注释的更多信息 。

@PropertySource

该 @PropertySource 注释提供了一种方便的声明性机制,用于添加 PropertySource Spring的Eenvironment以与@Configuration类一起使用 。

例如,我们从文件config.properties文件中读取数据库配置,并使用Environment 将这些属性值设置为 DataSourceConfig类。

进口 组织。弹簧框架。豆子。工厂。InitializingBean ;
进口 组织。弹簧框架。豆子。工厂。注释。自动装配 ;
进口 组织。弹簧框架。背景。注释。配置 ;
进口 组织。弹簧框架。背景。注释。PropertySource ;
进口 组织。弹簧框架。核心。ENV。环境 ;
@组态
@PropertySource("classpath:config.properties")
公共 类 ProperySourceDemo  实现 InitializingBean {
    @Autowired
    环境 ENV ;
    @覆盖
    public  void  afterPropertiesSet()抛出 Exception {
        setDatabaseConfig();
    }
    private  void  setDatabaseConfig(){
        DataSourceConfig  config  =  new  DataSourceConfig();
        配置。setDriver(ENV。的getProperty("jdbc.driver" ));
        配置。setUrl(ENV。的getProperty("jdbc.url" ));
        配置。setUsername(ENV。的getProperty("jdbc.username" ));
        配置。setPassword(ENV。的getProperty("jdbc.password" ));
        系统。出。的println(配置。的toString());
    }
}
阅读有关Spring @PropertySource Annotation with Example的此注释的更多信息 。

@PropertySources

我们可以使用此批注指定多个 @PropertySource 配置:

 @PropertySources({
  @PropertySource("classpath:config.properties"),
  @PropertySource("classpath:db.properties")
 })
 public  class  AppConfig {
  // ...
 }

到此,相信大家对"Spring核心注释如何使用"有了更深的了解,不妨来实际操作一番吧!这里是网站,更多相关内容可以进入相关频道进行查询,关注我们,继续学习!

注释 配置 方法 进口 示例 弹簧 更多 框架 信息 有关 系统 组态 零件 多个 文件 核心 变量 注解 实例 属性 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 互联网科技海报 互联网电商科技 互联网科技开发公司 易通互联网络科技有限公司 互联网 视角下的科技创新 火传媒上海互联网科技 华脉科技工业互联网产品 北京大学互联网科技怎么样 中国互联网有什么科技含量 随着互联网科技发展 北京华百购互联网科技有限公司 互联网科技与管理 晓花互联网科技有限公司网址 健康食品互联网创新科技园项目 广州燕处互联网科技有限公司 山东大美朱楼互联网科技有限公司 中国科技和美国互联网 三亚科技创新互联网基地 互联网科技大佬云集 伍佰万互联网科技是干嘛的 广州百单互联网科技有限公司 北京互联网络科技有限公司 四川狮子座互联网科技 互联网和高科技公司 茂名市互联网科技产业园 武汉健翔互联网络科技有限公司 崇明区互联网教育科技售后服务 云南省自由互联网科技有限公司 互联网科技手机排行榜 三亚科技创新互联网基地
0