zoukankan      html  css  js  c++  java
  • Spring 注解 @Controller @RestController @Service @Repository @Component 源码对比

    注解对比

    # @Controller @RestController @Service @Repository @Component
    源码注解 @Target({ElementType.TYPE})
    @Retention(RetentionPolicy.RUNTIME)
    @Documented
    @Component
    @Target(ElementType.TYPE)
    @Retention(RetentionPolicy.RUNTIME)
    @Documented
    @Controller
    @ResponseBody
    @Target({ElementType.TYPE})
    @Retention(RetentionPolicy.RUNTIME)
    @Documented
    @Component
    @Target({ElementType.TYPE})
    @Retention(RetentionPolicy.RUNTIME)
    @Documented
    @Component
    @Target(ElementType.TYPE)
    @Retention(RetentionPolicy.RUNTIME)
    @Documented
    @Indexed
    注解合并 @Target({ElementType.TYPE})
    @Retention(RetentionPolicy.RUNTIME)
    @Documented
    @Indexed
    @Target({ElementType.TYPE})
    @Retention(RetentionPolicy.RUNTIME)
    @Documented
    @Indexed
    @ResponseBody
    @Target({ElementType.TYPE})
    @Retention(RetentionPolicy.RUNTIME)
    @Documented
    @Indexed
    @Target({ElementType.TYPE})
    @Retention(RetentionPolicy.RUNTIME)
    @Documented
    @Indexed
    @Target({ElementType.TYPE})
    @Retention(RetentionPolicy.RUNTIME)
    @Documented
    @Indexed

    @Controller

    /*
     * Copyright 2002-2017 the original author or authors.
     *
     * Licensed under the Apache License, Version 2.0 (the "License");
     * you may not use this file except in compliance with the License.
     * You may obtain a copy of the License at
     *
     *      https://www.apache.org/licenses/LICENSE-2.0
     *
     * Unless required by applicable law or agreed to in writing, software
     * distributed under the License is distributed on an "AS IS" BASIS,
     * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
     * See the License for the specific language governing permissions and
     * limitations under the License.
     */
    
    package org.springframework.stereotype;
    
    import java.lang.annotation.Documented;
    import java.lang.annotation.ElementType;
    import java.lang.annotation.Retention;
    import java.lang.annotation.RetentionPolicy;
    import java.lang.annotation.Target;
    
    import org.springframework.core.annotation.AliasFor;
    
    /**
     * Indicates that an annotated class is a "Controller" (e.g. a web controller).
     *
     * <p>This annotation serves as a specialization of {@link Component @Component},
     * allowing for implementation classes to be autodetected through classpath scanning.
     * It is typically used in combination with annotated handler methods based on the
     * {@link org.springframework.web.bind.annotation.RequestMapping} annotation.
     *
     * @author Arjen Poutsma
     * @author Juergen Hoeller
     * @since 2.5
     * @see Component
     * @see org.springframework.web.bind.annotation.RequestMapping
     * @see org.springframework.context.annotation.ClassPathBeanDefinitionScanner
     */
    @Target({ElementType.TYPE})
    @Retention(RetentionPolicy.RUNTIME)
    @Documented
    @Component
    public @interface Controller {
    
    	/**
    	 * The value may indicate a suggestion for a logical component name,
    	 * to be turned into a Spring bean in case of an autodetected component.
    	 * @return the suggested component name, if any (or empty String otherwise)
    	 */
    	@AliasFor(annotation = Component.class)
    	String value() default "";
    
    }
    
    

    @RestController

    /*
     * Copyright 2002-2017 the original author or authors.
     *
     * Licensed under the Apache License, Version 2.0 (the "License");
     * you may not use this file except in compliance with the License.
     * You may obtain a copy of the License at
     *
     *      https://www.apache.org/licenses/LICENSE-2.0
     *
     * Unless required by applicable law or agreed to in writing, software
     * distributed under the License is distributed on an "AS IS" BASIS,
     * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
     * See the License for the specific language governing permissions and
     * limitations under the License.
     */
    
    package org.springframework.web.bind.annotation;
    
    import java.lang.annotation.Documented;
    import java.lang.annotation.ElementType;
    import java.lang.annotation.Retention;
    import java.lang.annotation.RetentionPolicy;
    import java.lang.annotation.Target;
    
    import org.springframework.core.annotation.AliasFor;
    import org.springframework.stereotype.Controller;
    
    /**
     * A convenience annotation that is itself annotated with
     * {@link Controller @Controller} and {@link ResponseBody @ResponseBody}.
     * <p>
     * Types that carry this annotation are treated as controllers where
     * {@link RequestMapping @RequestMapping} methods assume
     * {@link ResponseBody @ResponseBody} semantics by default.
     *
     * <p><b>NOTE:</b> {@code @RestController} is processed if an appropriate
     * {@code HandlerMapping}-{@code HandlerAdapter} pair is configured such as the
     * {@code RequestMappingHandlerMapping}-{@code RequestMappingHandlerAdapter}
     * pair which are the default in the MVC Java config and the MVC namespace.
     *
     * @author Rossen Stoyanchev
     * @author Sam Brannen
     * @since 4.0
     */
    @Target(ElementType.TYPE)
    @Retention(RetentionPolicy.RUNTIME)
    @Documented
    @Controller
    @ResponseBody
    public @interface RestController {
    
    	/**
    	 * The value may indicate a suggestion for a logical component name,
    	 * to be turned into a Spring bean in case of an autodetected component.
    	 * @return the suggested component name, if any (or empty String otherwise)
    	 * @since 4.0.1
    	 */
    	@AliasFor(annotation = Controller.class)
    	String value() default "";
    
    }
    
    

    @Service

    /*
     * Copyright 2002-2017 the original author or authors.
     *
     * Licensed under the Apache License, Version 2.0 (the "License");
     * you may not use this file except in compliance with the License.
     * You may obtain a copy of the License at
     *
     *      https://www.apache.org/licenses/LICENSE-2.0
     *
     * Unless required by applicable law or agreed to in writing, software
     * distributed under the License is distributed on an "AS IS" BASIS,
     * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
     * See the License for the specific language governing permissions and
     * limitations under the License.
     */
    
    package org.springframework.stereotype;
    
    import java.lang.annotation.Documented;
    import java.lang.annotation.ElementType;
    import java.lang.annotation.Retention;
    import java.lang.annotation.RetentionPolicy;
    import java.lang.annotation.Target;
    
    import org.springframework.core.annotation.AliasFor;
    
    /**
     * Indicates that an annotated class is a "Service", originally defined by Domain-Driven
     * Design (Evans, 2003) as "an operation offered as an interface that stands alone in the
     * model, with no encapsulated state."
     *
     * <p>May also indicate that a class is a "Business Service Facade" (in the Core J2EE
     * patterns sense), or something similar. This annotation is a general-purpose stereotype
     * and individual teams may narrow their semantics and use as appropriate.
     *
     * <p>This annotation serves as a specialization of {@link Component @Component},
     * allowing for implementation classes to be autodetected through classpath scanning.
     *
     * @author Juergen Hoeller
     * @since 2.5
     * @see Component
     * @see Repository
     */
    @Target({ElementType.TYPE})
    @Retention(RetentionPolicy.RUNTIME)
    @Documented
    @Component
    public @interface Service {
    
    	/**
    	 * The value may indicate a suggestion for a logical component name,
    	 * to be turned into a Spring bean in case of an autodetected component.
    	 * @return the suggested component name, if any (or empty String otherwise)
    	 */
    	@AliasFor(annotation = Component.class)
    	String value() default "";
    
    }
    
    

    @Repository

    /*
     * Copyright 2002-2017 the original author or authors.
     *
     * Licensed under the Apache License, Version 2.0 (the "License");
     * you may not use this file except in compliance with the License.
     * You may obtain a copy of the License at
     *
     *      https://www.apache.org/licenses/LICENSE-2.0
     *
     * Unless required by applicable law or agreed to in writing, software
     * distributed under the License is distributed on an "AS IS" BASIS,
     * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
     * See the License for the specific language governing permissions and
     * limitations under the License.
     */
    
    package org.springframework.stereotype;
    
    import java.lang.annotation.Documented;
    import java.lang.annotation.ElementType;
    import java.lang.annotation.Retention;
    import java.lang.annotation.RetentionPolicy;
    import java.lang.annotation.Target;
    
    import org.springframework.core.annotation.AliasFor;
    
    /**
     * Indicates that an annotated class is a "Repository", originally defined by
     * Domain-Driven Design (Evans, 2003) as "a mechanism for encapsulating storage,
     * retrieval, and search behavior which emulates a collection of objects".
     *
     * <p>Teams implementing traditional Java EE patterns such as "Data Access Object"
     * may also apply this stereotype to DAO classes, though care should be taken to
     * understand the distinction between Data Access Object and DDD-style repositories
     * before doing so. This annotation is a general-purpose stereotype and individual teams
     * may narrow their semantics and use as appropriate.
     *
     * <p>A class thus annotated is eligible for Spring
     * {@link org.springframework.dao.DataAccessException DataAccessException} translation
     * when used in conjunction with a {@link
     * org.springframework.dao.annotation.PersistenceExceptionTranslationPostProcessor
     * PersistenceExceptionTranslationPostProcessor}. The annotated class is also clarified as
     * to its role in the overall application architecture for the purpose of tooling,
     * aspects, etc.
     *
     * <p>As of Spring 2.5, this annotation also serves as a specialization of
     * {@link Component @Component}, allowing for implementation classes to be autodetected
     * through classpath scanning.
     *
     * @author Rod Johnson
     * @author Juergen Hoeller
     * @since 2.0
     * @see Component
     * @see Service
     * @see org.springframework.dao.DataAccessException
     * @see org.springframework.dao.annotation.PersistenceExceptionTranslationPostProcessor
     */
    @Target({ElementType.TYPE})
    @Retention(RetentionPolicy.RUNTIME)
    @Documented
    @Component
    public @interface Repository {
    
    	/**
    	 * The value may indicate a suggestion for a logical component name,
    	 * to be turned into a Spring bean in case of an autodetected component.
    	 * @return the suggested component name, if any (or empty String otherwise)
    	 */
    	@AliasFor(annotation = Component.class)
    	String value() default "";
    
    }
    
    

    @Component

    /*
     * Copyright 2002-2017 the original author or authors.
     *
     * Licensed under the Apache License, Version 2.0 (the "License");
     * you may not use this file except in compliance with the License.
     * You may obtain a copy of the License at
     *
     *      https://www.apache.org/licenses/LICENSE-2.0
     *
     * Unless required by applicable law or agreed to in writing, software
     * distributed under the License is distributed on an "AS IS" BASIS,
     * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
     * See the License for the specific language governing permissions and
     * limitations under the License.
     */
    
    package org.springframework.stereotype;
    
    import java.lang.annotation.Documented;
    import java.lang.annotation.ElementType;
    import java.lang.annotation.Retention;
    import java.lang.annotation.RetentionPolicy;
    import java.lang.annotation.Target;
    
    /**
     * Indicates that an annotated class is a "component".
     * Such classes are considered as candidates for auto-detection
     * when using annotation-based configuration and classpath scanning.
     *
     * <p>Other class-level annotations may be considered as identifying
     * a component as well, typically a special kind of component:
     * e.g. the {@link Repository @Repository} annotation or AspectJ's
     * {@link org.aspectj.lang.annotation.Aspect @Aspect} annotation.
     *
     * @author Mark Fisher
     * @since 2.5
     * @see Repository
     * @see Service
     * @see Controller
     * @see org.springframework.context.annotation.ClassPathBeanDefinitionScanner
     */
    @Target(ElementType.TYPE)
    @Retention(RetentionPolicy.RUNTIME)
    @Documented
    @Indexed
    public @interface Component {
    
    	/**
    	 * The value may indicate a suggestion for a logical component name,
    	 * to be turned into a Spring bean in case of an autodetected component.
    	 * @return the suggested component name, if any (or empty String otherwise)
    	 */
    	String value() default "";
    
    }
    
    
  • 相关阅读:
    苏宁11.11:系统拆分的一些经验谈
    双11超级工程—阿里巴巴数据库技术架构演进
    阿里的Json解析包FastJson使用
    JSONObject、JSONArray、Map、JavaBean的相互转换
    method.invoke(...)反射点
    Spring中的CharacterEncodingFilter
    数组去重Demo引出的思考
    HDU 5095--Linearization of the kernel functions in SVM【模拟】
    GUI编程及文件对话框的使用
    Android中的指纹识别
  • 原文地址:https://www.cnblogs.com/eedc/p/12836199.html
Copyright © 2011-2022 走看看