Spring常用注解说明

目录

1.常用注解

2.特别说明

3.xml及注解方式


1.常用注解

(1)

  • @SpringBootApplication

(2)

  • @Controller
  • @RestController
  • @RequestMapping
  • @RequestParam
  • @PathVariable
  • @GetMapping
  • @PostMapping
  • @PutMapping
  • @DeleteMapping
  • @ResponseBody
  • @RequestBody
  • @CrossOrigin

(3)

  • @Configuration
  • @Bean
  • @Service
  • @Component
  • @ComponentScan
  • @PropertySource
  • @Import
  • @Primary
  • @Profile
  • @Scope
  • @Lazy
  • @PostConstruct
  • @PreDestory

(4)

  • @Autowired
  • @Resource
  • @Autowired+@Qualifier
  • @Values

2.特别说明

@ResponseBody:标注在controller的方法上不会走视图解析,直接将后端的返回值显示在画面上。如果没有添加此注解,并且返回的不是视图的场合,则会报404的错误。

@CrossOrigin:在Controller的方法上使用,是为了解决跨域问题。但是在每个方法上添加比较麻烦,一般使用过滤器的方式。 

@Autowired:按照类型进行bean的注入。如果同一个bean的类型有多个,尝试按照名字进行二次匹配,匹配不成功则会报错。

例:

@Autowired
private UserDao userDao;

首先会按照类型UserDao进行注入,如果只有一个则注入成功,如果有多个,则按照名字userDao进行注入,此时如果只找到一个则注入成功,如果查找不到,则注入失败。

@Resource:不指定名称参数时,按照类型进行注入,指定名称参数时按照名称进行bean的注入。添加name属性指定bean的名字。

例:

@Resource
private UserDao userDao;

没有指定名字,按照类型进行bean的注入。

@Resource(name="userDao2")
private UserDao userDao;

指定了要注入的bean的名字,按照此类型下的此名称进行注入。 

@Autowired+@Qualifier:按照名字进行bean的注入,使用时在@Qualifier中添加name属性指定bean的名字。

例:

@Autowired
@Qualifier("userDao2")
private UserDao userDao;

如果根据类型查找到多个bean,此时使用@Qualifier注解指定要注入bean的名字,来完成bean的注入。

@Configuration+@Bean:一般用于在配置文件中注册bean,bean的名字默认是方法名,可以通过name属性来指定bean的名字。bean的类型为方法的返回值的类型。

@Configuration标注这是一个配置类,并将此配置类交由spring容器进行管理。配合@Bean注解完成第三方bean的注入。

@Values:用于注入普通数据,一般是将配置文件中的参数注入到代码中的某个项目。在要注入项目的代码中使用@RefreshScope实现配置文件的动态刷新,即配置文件的内容修改之后,不用重启服务,代码中能够获取到最新的配置文件中的内容。

@Autowired注解添加在方法上的使用

例1:

@Autowired
public void getList(List<UserDao> daoList){
     System.out.println(list);
}

上述方法的执行过程:从容器中查找UserDao类型的bean,将找到的bean存放在daoList集合中。在开发中常使用此方法将不多的策略实例化到一个map中,然后根据key值取出对应的策略进行处理。

例2:

@Autowired
public void getList(UserDao userDao){
     System.out.println(userDao);
}

上述方法的执行过程:从容器中查找UserDao类型的bean,找到多个的场合,再按照名字即userDao来匹配,将找到的bean放在userDao中进行使用。

@Bean注解:用来注入第三方bean。

例1:

import org.springframework.stereotype.Component;
import javax.sql.DataSource;
@Component
public class OtherBean {

@Bean("datasource")
public DataSource dataSource(@Value("${jdbc.driver}") String driverClassName
                             @Autowired UserDao userDao) {
DruidDataSource dataSource = new DruidDataSource();
//设置4个基本参数..
return dataSource;
    }
}

bean的名字如果不指定为方法名,如果指定则按照指定的名字。bean的类型为方法的返回值类型。为了确保@Bean注解能够被spring容器扫描到,必须添加@Component注解,将此类交由spring容器管理。

可以通过@Value注解为第三方bean注入参数,在bean内部进行使用。

也可以通过@AutoWired注解将其他bean注入到参数中。@AutoWired注解可以省略。默认按照类型进行bean的注入。

import org.springframework.stereotype.Component;
import javax.sql.DataSource;
@Component
public class OtherBean {

@Bean("datasource")
public DataSource dataSource(@Value("${jdbc.driver}") String driverClassName
                             @Qualifier("userDao2") UserDao userDao) {
DruidDataSource dataSource = new DruidDataSource();
//设置4个基本参数..
return dataSource;
    }
}

可以直接使用@Qualifier注解指定bean的名称,按照bean的名称进行注入。在此,可以不用结合@Autowired进行使用。自定bean的注入,如在controller中注入service时,这两个注解必须结合使用。

@ComponentScan:指定spring容器进行扫描的包路径,并将扫描到的bean交由spring进行管理。扫描的是指定包及其子包,不配置包路径的时候,会默认扫描此配置类所在的包及其子包。在现在的springboot项目中,默认扫描的包路径是spring boot启动类所在的包及其子包,所以一般是不用此注解去配置扫描路径的。

@PropertySource:用于加载外部的properties资源配置,加载之后可以通过@Value注解对其中的内容进行使用。

@Import:导入其他配置,比如说之前的第三方bean的注入,可以去掉类上的@Compent注解,通过import方式进行导入。

@Import(OtherConfig.class)

@Primary:当同一个bean类型下有多个bean,当其中一个bean添加了此注解,则直接注入此bean。

@Primary注解用于标注相同类型的Bean优先被使用权,@Primary 是Spring3.0引入的,与@Component和@Bean一起使用,标注该Bean的优先级更高,则在通过类型获取Bean或通过@Autowired根据类型进行注入时会选用优先级更高的。

 @Profile 注解的作用同于xml配置时学习profile属性,是进行环境切换使用的。

注解@Profile 标注在类或方法上,标注当前产生的Bean从属于哪个环境,只有激活了当前环境,被标的Bean才能被注册到Spring容器里,不指定环境的Bean,任何环境下都能注册到Spring容器里。

可以使用以下两种方式指定被激活的环境:
使用命令行动态参数,虚拟机参数位置加载 -Dspring.profiles.active=test
使用代码的方式设置环境变量 System.setProperty("spring.profiles.active","test");

@Scope在类上或使用了@Bean标注的方法上,标注Bean的作用范围,取值为singleton或prototype等。

@Lazy在类上或使用了@Bean标注的方法上,标注Bean是否延迟加载,取值为true或false,默认为true

@PostConstruct在方法上使用,标注Bean的实例化后执行的方法。

@PreDestory在方法上使用,标注Bean的销毁前执行方法。

3.xml及注解方式

在使用xml开发方式下,通过如下方式加载xml配置文件,配置文件主要是bean的设置,包扫描的配置及外部配置文件扫描等等。

new ClassPathXmlApplicationContext("applicationContext.xml")

在使用注解开发方式下,通过如下方式加载主配置,主配置中也设置了bean的扫描位置,外部资源的导入及其他配置的引入等等。

new AnnotationConfigApplicationContext (SpringConfig.class);

猜你喜欢

转载自blog.csdn.net/m0_72167535/article/details/129389845