SpringBoot注解都有哪些?都有什么作用?

TheDisguiser 2020-05-17 15:20:44 java常见问答 8635

上回我们了解到了springboot的底层原理,那你们知道它有哪些常用的注解吗?这些注解又有什么作用呢?这次我们就来了解一下吧。

一、@SpringBootApplication

声明让spring boot自动给程序进行必要的配置,相当于@Configuration ,@EnableAutoConfiguration 和 @ComponentScan 三个配置。

package com.example.myproject;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
@SpringBootApplication // same as @Configuration @EnableAutoConfiguration @ComponentScan 
public class Application
{
    public static void main(String[] args)
    {
        SpringApplication.run(Application.class, args);
    }
}

二、ResponseBody

@RequestMapping(“/test”)
         @ResponseBody public String test()
         {
             return” ok”;
         }

三、Controller

@Controller
@RequestMapping(“/demoInfo”)
        public class DemoController
        {
            @Autowired
            private DemoInfoService demoInfoService;
            @RequestMapping("/hello")
            public String hello(Map < String, Object > map)
            {
                System.out.println("DemoController.hello()");
                map.put("hello", "from TemplateController.helloHtml");
                //会使用hello.html或者hello.ftl模板进行渲染显示.
                return "/hello";
            }
        }

四、RestController

package com.kfit.demo.web;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
@RestController
@RequestMapping(“/demoInfo2”)
        publicclass DemoController2
        {
            @RequestMapping("/test")
            public String test()
            {
                return "ok";
            }
        }

五、常用注解列表

@RequestMapping:提供路由信息,负责URL到Controller中的具体函数的映射。

@EnableAutoConfiguration:SpringBoot自动配置(auto-configuration):尝试根据你添加的jar依赖自动配置你的Spring应用。例如,如果你的classpath下存在HSQLDB,并且你没有手动配置任何数据库连接beans,那么我们将自动配置一个内存型(in-memory)数据库”。你可以将@EnableAutoConfiguration或者@SpringBootApplication注解添加到一个@Configuration类上来选择自动配置。如果发现应用了你不想要的特定自动配置类,你可以使用@EnableAutoConfiguration注解的排除属性来禁用它们。

@ComponentScan:其实很简单,@ComponentScan主要就是定义扫描的路径从中找出标识了需要装配的类自动装配到spring的bean容器中,你一定都有用过@Controller,@Service,@Repository注解,查看其源码你会发现,他们中有一个共同的注解@Component,没错@ComponentScan注解默认就会装配标识了@Controller,@Service,@Repository,@Component注解的类到spring容器中。当然,这个的前提就是你需要在所扫描包下的类上引入注解。

@Configuration:相当于传统的xml配置文件,如果有些第三方库需要用到xml文件,建议仍然通过@Configuration类作为项目的配置主类——可以使用@ImportResource注解加载xml配置文件。

@Import:用来导入其他配置类。

@ImportResource:用来加载xml配置文件。

@Autowired:自动导入依赖的bean

@Service:一般用于修饰service层的组件

@Repository:使用@Repository注解可以确保DAO或者repositories提供异常转译,这个注解修饰的DAO或者repositories类会被ComponetScan发现并配置,同时也不需要为它们提供XML配置项。

@Bean:用@Bean标注方法等价于XML中配置的bean。

@Value:注入Spring boot application.properties配置的属性的值。示例代码:

1 @Value(value = “# {
    message
}”) 2 private String message;

@Inject:等价于默认的@Autowired,只是没有required属性;

@Component:泛指组件,当组件不好归类的时候,我们可以使用这个注解进行标注。

@Bean:相当于XML中的,放在方法的上面,而不是类,意思是产生一个bean,并交给spring管理。

@AutoWired:自动导入依赖的bean。byType方式。把配置好的Bean拿来用,完成属性、方法的组装,它可以对类成员变量、方法及构造函数进行标注,完成自动装配的工作。当加上(required=false)时,就算找不到bean也不报错。

@Qualifier:当有多个同一类型的Bean时,可以用@Qualifier(“name”)来指定。与@Autowired配合使用。@Qualifier限定描述符除了能根据名字进行注入,但能进行更细粒度的控制如何选择候选者,具体使用方式如下:

1 @Autowired 2 @Qualifier(value = “demoInfoService”) 3 private
DemoInfoService demoInfoService;
@Resource(name = ”name”, type = ”type”): 没有括号内内容的话, 默认byName。 与 @Autowired干类似的事

以上就是今天的所有内容了,java语言博大精深,如果你想要更加深入的了解Java或者一些java常见问答的知识,就请关注我们的网站吧。

推荐阅读:

springboot事务的配置步骤有哪些?什么是事务?

spring的ioc和aop的原理是什么?它们有什么优势吗?

springboot整合shiro怎么实现?有什么优势?