当前位置: 首页 > article >正文

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();
    } 
}


http://www.kler.cn/news/232799.html

相关文章:

  • 初始web服务器(并基于idea来实现无需下载的tomcat)
  • 软考 系统分析师系列知识点之信息系统战略规划方法(4)
  • 【Linux】进程学习(二):进程状态
  • 基于LightGBM的回归任务案例
  • VUE学习之路——列表渲染
  • 【django】建立python虚拟环境-20240205
  • 【学网攻】 第(24)节 -- 帧中继(点对点)
  • PlantUML绘制UML图教程
  • Java 学习和实践笔记(2)
  • 【STL】list模拟实现
  • 【Linux】文件的软硬链接
  • [WUSTCTF2020]朴实无华(特详解)
  • Blend for Visual Studio 工具作用
  • RESTful API是什么?,以及如何使用它构建 web 应用程序。
  • 数据库管理-第145期 最强Oracle监控EMCC深入使用-02(20240205)
  • uniapp踩坑之项目:简易版不同角色显示不一样的tabbar和页面
  • Vue-Vue3 集成编辑器功能
  • 有道ai写作,突破免费限制,无限制使用
  • 数据库管理-第147期 最强Oracle监控EMCC深入使用-04(20240207)
  • 怎么把视频音乐提取成mp3?分享详细工具和方法!
  • 支持向量机
  • LeetCode力扣 面试经典150题 详细题解 (1~5) 持续更新中
  • Redis核心技术与实战【学习笔记】 - 26.Redis数分布优化(应对数据倾斜问题)
  • transformer剪枝论文汇总
  • 【Golang】定时任务Cron指南-毫秒级任务支持
  • MFC实现遍历系统进程
  • 新版MQL语言程序设计:组合模式的原理、应用及代码实现
  • 树与二叉树---数据结构
  • 医学三基答案在哪搜?4个大学生必备的搜题 #知识分享#职场发展
  • 【服务器数据恢复】服务器RAID模块硬件损坏的数据恢复案例