Ket*_*tan 74 service spring controller
Spring注释是@Controller一样的@Service吗?
我知道@Controller哪些可以用于URL映射和调用业务逻辑.
而@Service用来注释包含业务逻辑服务类.
我可以使用@Controller而不是@Service注释Service类吗?
And*_*ili 111
不,他们彼此差异很大.
两者都是@Component注释的不同特化(实际上,它们是同一接口的两个不同实现),因此可以通过类路径扫描发现它们(如果在XML配置中声明它)
@Service注释用于服务层并注释执行服务任务的类,通常不使用它,但在许多情况下,您使用此注释来表示最佳实践.例如,您可以直接调用DAO类来将对象持久保存到您的数据库,但这很糟糕.调用调用DAO的服务类非常好.执行关注点分离模式是一件好事.
@Controller注释是Spring MVC框架(用于实现Web应用程序的Spring Framework的组件)中使用的注释.@Controller注释指示特定类充当控制器的角色.@Controller注释充当带注释的类的构造型,指示其角色.调度程序扫描这些带注释的类以查找映射方法,并检测@RequestMapping注释.
所以,看你有一个的DispatcherServlet类(您在XML配置声明),它表示对派遣适当的控制器类中的所有HTTP请求(由@Controller的)前端控制器的Spring MVC架构.此类通过其方法执行业务逻辑(并可以调用服务).这些类(或其方法)通常也使用@RequestMapping注释进行注释,该注释指定控制器及其方法处理的HTTP请求.
例如:
@Controller
@RequestMapping("/appointments")
public class AppointmentsController {
private final AppointmentBook appointmentBook;
@Autowired
public AppointmentsController(AppointmentBook appointmentBook) {
this.appointmentBook = appointmentBook;
}
@RequestMapping(method = RequestMethod.GET)
public Map<String, Appointment> get() {
return appointmentBook.getAppointmentsForToday();
}
Run Code Online (Sandbox Code Playgroud)
这个类是一个控制器.
此类处理所有对"/ appointment""文件夹"的HTTP请求,特别是get方法是调用处理文件夹"/ appointment"的所有GET HTTP请求的方法.
我希望现在对你来说更清楚了.
Ram*_*asi 34
如果你看的定义@Controller,@Service注释,那么你会发现,这些特殊类型的@Component注释.
@Component
public @interface Service {
….
}
Run Code Online (Sandbox Code Playgroud)
@Component
public @interface Controller {
…
}
Run Code Online (Sandbox Code Playgroud)
那有什么区别?
@Controller
该@Controller注解表明特定类供应控制器的作用.该@Controller注释充当注解类刻板印象,这表明它的作用.
@Controller有什么特别之处?
您不能将此注释与任何其他类似的@Service或者切换@Repository,即使它们看起来相同.调度程序扫描带注释的类@Controller并检测其中的@RequestMapping注释.您只能@RequestMapping在带@Controller注释的类上使用.
@服务
@Services 在存储库层中保存业务逻辑和调用方法.
@Service有什么特别之处?
除了它用于表示它持有业务逻辑这一事实之外,这个注释没有明显的特点,但是谁知道,spring可能在未来增加一些额外的特殊功能.
链接答案:Spring中的@ Component,@ Repository和@Service注释有什么区别?
不,@Controller不一样@Service,虽然它们都是专业化的@Component,因此它们都是通过类路径扫描发现的候选者.该@Service注释在服务层使用,并且@Controller是在表示层Spring MVC控制器.一个@Controller典型的将有一个URL映射,并通过一个Web请求被触发.
小智 5
@Service 与 @Controller
@Service : class 是“业务服务外观”(在核心 J2EE 模式意义上),或类似的东西。
@Controller :表示带注释的类是“控制器”(例如 Web 控制器)。
----------查找有关主要构造型的有用说明 http://docs.spring.io/spring/docs/current/javadoc-api/org/springframework/stereotype/Component.html
@interface 组件
@Target(value=TYPE)
@Retention(value=RUNTIME)
@Documented
public @interface Component
Run Code Online (Sandbox Code Playgroud)
表示一个带注释的类是一个组件。在使用基于注释的配置和类路径扫描时,此类类被视为自动检测的候选对象。
@接口控制器
@Target(value=TYPE)
@Retention(value=RUNTIME)
@Documented
@Component
public @interface Controller
Run Code Online (Sandbox Code Playgroud)
表示一个带注释的类是一个“控制器”(例如一个 web 控制器)。
@接口服务
@Target(value=TYPE)
@Retention(value=RUNTIME)
@Documented
@Component
public @interface Service
Run Code Online (Sandbox Code Playgroud)
表示带注释的类是“服务”,最初由领域驱动设计(Evans,2003)定义为“作为独立于模型中的接口提供的操作,没有封装状态”。也可能表示一个类是“业务服务外观”(在核心 J2EE 模式意义上)或类似的东西。此注释是通用的刻板印象,个别团队可能会缩小其语义范围并酌情使用。
@interface 存储库
@Target(value=TYPE)
@Retention(value=RUNTIME)
@Documented
@Component
public @interface Repository
Run Code Online (Sandbox Code Playgroud)
表示带注释的类是“存储库”,最初由领域驱动设计 (Evans, 2003) 定义为“一种模拟对象集合的封装存储、检索和搜索行为的机制”。实现传统 J2EE 模式(例如“数据访问对象”)的团队也可以将此构造型应用于 DAO 类,但在这样做之前应注意理解数据访问对象和 DDD 样式存储库之间的区别。此注释是通用的刻板印象,个别团队可能会缩小其语义范围并酌情使用。
当与 PersistenceExceptionTranslationPostProcessor 结合使用时,这样注释的类有资格进行 Spring DataAccessException 转换。出于工具、方面等的目的,还阐明了带注释的类在整个应用程序架构中的作用。
从 Spring 2.5 开始,这个注解也作为 @Component 的特化,允许通过类路径扫描自动检测实现类。
| 归档时间: |
|
| 查看次数: |
100648 次 |
| 最近记录: |