Java-spring注解的作用

简介: Java-spring注解的作用

1.@Qualifier:通常与@Autowired搭配使用,通过指定具体的beanName来注入相应的bean

当容器中有多个类型相同的Bean时,可以使用@Qualifier注解来指定需要注入的Bean。@Qualifier注解可以用于字段、方法参数、构造函数参数等位置

@Service
public class UserService {
 
    @Autowired
    @Qualifier("userServiceImpl")
    private UserMapper userMapper ;
 
    public User getUserById(Int id) {
        return userRepository.findById(id).orElse(null);
    }
 
    // Other business methods...
}

上面的示例中,@Qualifier注解用于指定需要注入的Bean的名称为“userServiceImpl”。需要注意的是,@Qualifier注解通常与@Autowired或@Inject注解一起使用,用于在多个匹配的Bean中进行选择。


如果没有指定@Qualifier注解,Spring框架将使用默认的自动装配策略,即按照类型进行匹配。如果有多个类型相同的Bean,Spring框架将抛出异常。


因此,使用@Qualifier注解可以有效地解决这个问题。


2.@Bean是一个注解,用于告诉 Spring 框架将标注的方法返回的对象注册为一个 Bean(组件)


具体的作用:


①.使用 @Bean 注解可以将方法返回的对象注册为一个 Bean,并且该 Bean 会被 Spring 容器管理


②.依赖注入:当其他组件需要使用这个 Bean 时,Spring 框架会自动将该 Bean 注入到相应的位置,实现依赖注入


③.自定义组件配置:通过 @Bean 注解可以对 Bean 进行自定义配置,例如设置属性值、初始化方法、销毁方法等


④.替代 XML 配置:需要通过 XML 配置文件来定义和配置 Bean,而现在通过 @Bean 注解可以在 Java 代码中实现同样的功能,避免了繁琐的 XML 配置

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.cloud.bus.auto.mapper.IUserMapper">
  <resultMap id="BaseResultMap" type="com.cloud.bus.common.entity.TUser">
    <id column="ID" jdbcType="VARCHAR" property="id" />
    <result column="ACCT_SCOPE" jdbcType="VARCHAR" property="acctScope" />
    <result column="CONFIG_STATUS" jdbcType="VARCHAR" property="configStatus" />
    <result column="IS_MERGE" jdbcType="VARCHAR" property="isMerge" />
    <result column="LAST_ACCT_DATE" jdbcType="DATE" property="lastAcctDate" />
    <result column="HAPPENED_YEAR" jdbcType="VARCHAR" property="happenedYear" />
  </resultMap>
  <sql id="Base_Column_List">
    ID, HOSPITAL_ID, ACCT_SCOPE, CONFIG_STATUS, IS_MERGE, SCHEDULE_ACCT_DATE,
    LAST_ACCT_DATE,LAST_OPERATE_DATE,HAPPENED_YEAR
  </sql>
 
  <update id="updateUser">
    update T_User
    <set>
      <if test="hospitalId != null and hospitalId != ''">
        HOSPITAL_ID = #{hospitalId,jdbcType=VARCHAR},
      </if>
     //.......
       <if test="runAcctDate != null and runAcctDate != ''">
        RUN_ACCT_DATE = #{runAcctDate,jdbcType=VARCHAR},
      </if>
    </set>
    where ID = #{id,jdbcType=VARCHAR}
  </update>
  <select id="queryUserList" resultType="com.cloud.bus.common.vo.UserVO">
      select
      <include refid="Base_Column_List"/>
      from T_User
      <include refid="Example_Where_Clause"/>
  </select>
  <sql id="Example_Where_Clause">
    <trim prefix="where" prefixOverrides="and|or">
      <if test="hospitalId != null and hospitalId != ''">
        and HOSPITAL_ID = #{hospitalId,jdbcType=VARCHAR}
      </if>
      <if test="operatorType != null and operatorType != ''">
        and OPERATOR_TYPE = #{operatorType,jdbcType=VARCHAR}
      </if>
      <if test="acctScope != null and acctScope != ''">
        and ACCT_SCOPE = #{acctScope,jdbcType=VARCHAR}
      </if>     
    </trim>
  </sql>
</mapper>

3.@Configuration 注解的主要作用是指示Spring容器,该类是一个配置类,它包含了一个或多个Spring容器所需的bean定义。


这意味着@Configuration 注解用于定义Spring应用程序的配置信息,通常在Java类中进行配置而不是在XML文件中


@Configuration 注解的作用包括


①.定义Bean:在@Configuration 注解的类中,您可以使用@Bean 注解来定义一个或多个bean。这些bean将被Spring容器托管,可以在应用程序中使用


②.组织配置:@Configuration 注解使您能够将应用程序的配置集中到一个或多个Java类中,以便更好地组织和管理配置信息。这有助于提高代码的可维护性和可读性


③.替代XML配置:@Configuration 注解可以用来替代传统的XML配置文件。通过使用Java类来配置应用程序,您可以获得更强的类型安全性,并且可以利用Java的特性,如条件化配置、注解等


④.支持自动装配:@Configuration 注解通常与@Autowired 注解一起使用,以实现自动装配(依赖注入)。当一个配置类被Spring容器扫描到时,其中的@Bean 方法将被调用,创建bean实例,并自动装配它们的依赖关系。


⑤.集成外部配置:通过@Configuration 注解,您可以将外部配置(如属性文件或环境变量)与应用程序的配置进行集成。Spring提供了@PropertySource 注解来加载外部属性文件,以及@Value 注解来注入属性值

 
@Configuration
public class ApplicationConfig {
    
    @Bean
    public UserService userService() {
        return new UserServiceImpl();
    } 
}


目录
相关文章
|
3天前
|
Java Spring 容器
如何解决spring EL注解@Value获取值为null的问题
本文探讨了在使用Spring框架时,如何避免`@Value(&quot;${xxx.xxx}&quot;)`注解导致值为null的问题。通过具体示例分析了几种常见错误场景,包括类未交给Spring管理、字段被`static`或`final`修饰以及通过`new`而非依赖注入创建对象等,提出了相应的解决方案,并强调了理解框架原理的重要性。
27 4
|
2月前
|
Java 开发者 Spring
【SpringBoot 异步魔法】@Async 注解:揭秘 SpringBoot 中异步方法的终极奥秘!
【8月更文挑战第25天】异步编程对于提升软件应用的性能至关重要,尤其是在高并发环境下。Spring Boot 通过 `@Async` 注解简化了异步方法的实现。本文详细介绍了 `@Async` 的基本用法及配置步骤,并提供了示例代码展示如何在 Spring Boot 项目中创建与管理异步任务,包括自定义线程池、使用 `CompletableFuture` 处理结果及异常情况,帮助开发者更好地理解和运用这一关键特性。
137 1
|
2月前
|
缓存 Java 数据库连接
Spring Boot奇迹时刻:@PostConstruct注解如何成为应用初始化的关键先生?
【8月更文挑战第29天】作为一名Java开发工程师,我一直对Spring Boot的便捷性和灵活性着迷。本文将深入探讨@PostConstruct注解在Spring Boot中的应用场景,展示其在资源加载、数据初始化及第三方库初始化等方面的作用。
58 0
|
4天前
|
Java Spring 容器
Springboot3.2.1搞定了类Service和bean注解同名同类型问题修复
这篇文章讨论了在Spring Boot 3.2.1版本中,同名同类型的bean和@Service注解类之间冲突的问题得到了解决,之前版本中同名bean会相互覆盖,但不会在启动时报错,而在配置文件中设置`spring.main.allow-bean-definition-overriding=true`可以解决这个问题。
19 0
Springboot3.2.1搞定了类Service和bean注解同名同类型问题修复
|
5天前
|
JSON Java 数据库
java 常用注解大全、注解笔记
关于Java常用注解的大全和笔记,涵盖了实体类、JSON处理、HTTP请求映射等多个方面的注解使用。
10 0
java 常用注解大全、注解笔记
|
9天前
|
缓存 NoSQL Java
Springboot自定义注解+aop实现redis自动清除缓存功能
通过上述步骤,我们不仅实现了一个高度灵活的缓存管理机制,还保证了代码的整洁与可维护性。自定义注解与AOP的结合,让缓存清除逻辑与业务逻辑分离,便于未来的扩展和修改。这种设计模式非常适合需要频繁更新缓存的应用场景,大大提高了开发效率和系统的响应速度。
32 2
|
1月前
|
Arthas Java 测试技术
Java字节码文件、组成,jclasslib插件、阿里arthas工具,Java注解
Java字节码文件、组成、详解、分析;常用工具,jclasslib插件、阿里arthas工具;如何定位线上问题;Java注解
Java字节码文件、组成,jclasslib插件、阿里arthas工具,Java注解
|
18天前
|
Java Spring 容器
Spring使用异步注解@Async正确姿势
Spring使用异步注解@Async正确姿势,异步任务,spring boot
|
17天前
|
Java 编译器 程序员
Java注解,元注解,自定义注解的使用
本文讲解了Java中注解的概念和作用,包括基本注解的用法(@Override, @Deprecated, @SuppressWarnings, @SafeVarargs, @FunctionalInterface),Java提供的元注解(@Retention, @Target, @Documented, @Inherited),以及如何自定义注解并通过反射获取注解信息。
Java注解,元注解,自定义注解的使用
|
17天前
|
XML Java 数据格式
spring复习03,注解配置管理bean
Spring框架中使用注解配置管理bean的方法,包括常用注解的标识组件、扫描组件、基于注解的自动装配以及使用注解后的注意事项,并提供了一个基于注解自动装配的完整示例。
spring复习03,注解配置管理bean