Spring中常用注解

@Component

        当Spring应用程序启动时,它会扫描路径以及配置中指定的包,然后自动实例化被@Component标记的类,并将它们纳入Spring容器的管理。

1.用途:

        @Component主要用于告诉Spring框架那些类应该被实例化并且可以被其他组件引用。它将一个普通的类声明为Spring Bean,以便它可以享受Spring提供的依赖注入,AOP等特性。

2.工作原理:

        当Spring应用程序启动时,Spring容器会自动扫描指定路径下的包路径,查找所有带有@Component注解的类,并为它们创建单例实例。

        这些实例默认情况下会采用类名的首字母小写形式作为 Bean 的名称,例如,一个名为 MyComponent 的类将被注册为名为 myComponent 的 Bean。

3.实例:

@Component
public class MyComponent{

}

        在上述示例中,MyComponent 类被标记为一个 Spring 组件,Spring 容器会自动创建并管理它的实例。

4.自定义Bean名称

        默认情况下,Spring 使用类名的首字母小写形式作为 Bean 的名称。但是,你可以使用 @Component("customName") 来为 Bean 指定一个自定义的名称。

@Component("customName")
public class MyComponent {
    
}

5.与其它注解的关系

        @Component 是 Spring 中最通用的组件扫描注解,它还有三个专用版本:@Controller@Service@Repository,它们分别用于标记控制器、服务层和数据访问层的组件。这些注解本质上也是 @Component 的变体,它们更具语义性,并且可以帮助开发人员更清晰地组织代码。

总之,@Component 注解是 Spring 中的一个关键注解,用于将类声明为 Spring Bean,允许 Spring 框架对其进行实例化和管理,并使其可以通过依赖注入等方式在应用程序中使用。

@Repository

是 Spring 框架中的一个特殊注解,用于标记一个类作为数据访问层(DAO - Data Access Object)组件的一部分。它具有以下特性和用途:

1. 用途:

        @Repository`注解用于将一个类标记为数据访问层的组件,通常与数据库交互有关,用于持久化数据。它告诉 Spring 容器该类是一个 DAO,需要进行异常转译(Exception Translation),以便将底层数据访问异常翻译成 Spring 的 DataAccessException。

2. 异常转译:

        一个主要特点是,当使用 Spring 的 JdbcTemplate 或者其他数据访问相关的类时,@Repository 注解会自动处理底层的数据库异常,将它们转化为 Spring 的数据访问异常(DataAccessException的子类),这样开发者就可以更容易地处理和管理这些异常。

3. 工作原理:

        当 Spring 应用程序启动时,如果你启用了组件扫描,Spring 容器会自动扫描指定的包路径,找到带有@Repository注解的类,并将它们注册为 Spring Bean。
        这些 DAO 组件通常用于执行数据库操作,包括查询、插入、更新和删除等。

4. 示例:

import org.springframework.stereotype.Repository;

   @Repository
   public class UserRepository {
       // Class definition here
   }


        在上述示例中,UserRepository类被标记为一个数据访问层的组件,Spring 容器会自动创建并管理它的实例。

5. 与其他注解的关系:

        @Repository 是 Spring 中的一个特定变体,用于数据访问层的组件,@Component 注解本质上是一样的。但是,使用 @Repository 更具语义性,它告诉其他开发者和代码审查者,这个类主要用于数据库访问。

        总之,@Repository`注解用于标记数据访问层的组件,通常用于与数据库交互。它有助于将底层的数据库异常转化为 Spring 的数据访问异常,简化了异常处理,并帮助组织和管理数据访问代码。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值