https://www.hdzikao.com

java中的@repository什么意思(@service注解(java@service注解))【ipackagerepository的解答】

[导读] 大家好,今天小热关注到一个比较有意思的话题,就是关于IPackageRepository的问题,于是小编就整理了2个相关介绍IPackageRepository的解答,让我们一起看看吧。 文章目录: java中的@repository什么意

java中的@repository什么意思(@service注解(java@service注解))【ipackagerepository的解答】

大家好,今天小热关注到一个比较有意思的话题,就是关于IPackageRepository的问题,于是小编就整理了2个相关介绍IPackageRepository的解答,让我们一起看看吧。

文章目录:

  1. java中的@repository什么意思
  2. @service注解(java@service注解)

一、java中的@repository什么意思

以@开头的,是注解的表示,javaAPI中也有比如@override。在框架中用于配置文件,组件自动扫描管理,可以学习一下

你好

这个是注解:

Spring的注解形式:

@Repository、@Service、@Controller,它们分别对应存储层Bean,业务层Bean,和展示层Bean。

spring中的注解,@Repository用于标注数据访问组件,即DAO组件。例:

@Repository

public class VentorDaoImpl implements iVentorDao {

}

在一个稍大的项目中,如果组件采用xml的bean定义来配置,显然会增加配置文件的体积,查找以及维护起来也不太方便。

Spring2.5为我们引入了组件自动扫描机制,他在类路径下寻找标注了上述注解的类,并把这些类纳入进spring容器中管理

它的作用和在xml文件中使用bean节点配置组件时一样的。要使用自动扫描机制,我们需要打开以下配置信息:

<?xml version="1.0" encoding="UTF-8" ?>

<beans xmlns="

xmlns:xsi=";

xmlns:context=";

xsi:schemaLocation="

/spring-beans-2.5.xsd

/spring-context-2.5.xsd">

<context:component-scan base-package=”com.eric.spring”>

</beans>

扩展资料

@Component:这将 java 类标记为 bean。它是任何 Spring 管理组件的通用构造型。spring 的组件扫描机制现在可以将其拾取并将其拉入应用程序环境中。

@Controller:这将一个类标记为 Spring Web MVC 控制器。标有它的 Bean 会自动导入到 IoC 容器中。

@Service:此注解是组件注解的特化。它不会对 @Component 注解提供任何其他行为。您可以在服务层类中使用 @Service 而不是 @Component,因为它以更好的方式指定了意图。

@Repository:这个注解是具有类似用途和功能的 @Component 注解的特化。它为 DAO 提供了额外的好处。它将 DAO 导入 IoC 容器,并使未经检查的异常有资格转换为 Spring DataAccessException。

二、@service注解(java@service注解)

@Service注解无法被扫描到的问题偶然发现在Service层创建接口和实现类,且在实现类中加入@Service注解,但并不能通过

SpringService层配置文件中配置的扫描配置

context:component-scanbase-package="com.*.Service"/context:component-scan

成功扫描并加入IOC容器中

打开Service层包中,发现接口名采用了IUserService.java的写法

将接口名改为IuserService.java后

@Service注解能够被正常扫描

结论:不建议在使用注解的接口或实现类中使用连续大写字母的名称,Spring在扫描注解时会自动将头字母改为小写并加入到IOC容器中,连续的大写字母会导致注解无法被扫描到

@Service注解是标注在实现类上的的接口中添加注解还是在实现类impl@Service注解是标注在实现类上的

因为@Service是把spring容器中的bean进行实例化,也就是等同于new操作,只有实现类是可以进行new实例化的,而接口则不能,所以是加在实现类上的。

IOC的思想:A不直接调用B,而是通过调用生产B的工厂(工厂模式),由B工厂来创建B

有三种普通注入方式,分为构造函数的注入、属性注入、接口注入。

将注入方式交给第三方,通过bean的注解,想调用时直接通过注解注入。

所以通过注解注入bean,就是实例化依赖类的方式,

这也是为什么要将@Service和@Repository放到实现类上面而不是接口类上面,

接口只是一个规范,需要各种实现类去实现这个接口,我们要用的就是这些实用类的方法。

如果采用@Autowired来注解,则同样无需指定name属性,若是实现该接口有多个类,则需要通过@Qualifier来做区分

@Service、@Repository注解是放到service或者dao类的实现类还是接口类中

-----------------------------------

在service的接口中添加注解还是在实现类impl

@Service注解的使用@Service注解的使用

首先,在applicationContext.xml文件中加一行:

context:component-scanbase-package="com.hzhi.clas"/

加上这一行以后,将自动扫描路径下面的包,如果一个类带了@Service注解,将自动注册到Spring容器,不需要再在applicationContext.xml文件定义bean了,类似的还包括@Component、@Repository、@Controller。

比如下面这个类:

@Service("courseDAO")

@Scope("prototype")

publicclassCourseDAOImplextendsHibernateDaoSupportimplementsCourseDAO{......}

其作用就相当于applicationContext.xml文件里面的:

beanid="courseDAO"class="com.hzhi.course.dao.CourseDAOImpl"scope="prototype"/bean

到此,以上就是小编对于IPackageRepository的问题就介绍到这了,希望介绍关于IPackageRepository的2点解答对大家有用。

郑重声明:本文版权归原作者所有,转载文章仅为传播更多信息之目的,如作者信息标记有误,请第一时间联系我们修改或删除,多谢。

相关文章阅读