一、@Configuration 注解和@Bean 注解
- @Configuration 可以理解为spring xml配置中的<beans>标签,@Bean可理解为用spring的时候xml里面的<bean>标签
- @Configuration 注解的是类,@Bean 注解域为方法,对象
- 在Spring Boot 5.2之后的@Configuration注解多了一个属性proxyBeanMethods,默认为true
二、@Component
- 官方解释:带此注解的类,当使用基于注解的配置和类路径扫描的时候,这些类就会被实例化.相当于配置文件中的<bean id =" ", class=" "/>
- 泛指组件,当组件不好归类时,就用@Component注解,启动时,用@ComponentScan去扫描
三、 @Controller,@Service,@Repository
1. 像@Controller@Service,@Repository需要注解bean的话,也需要在启动类增加@ComponentScan去扫描
2. @Controller[是@component的扩展]用于标注控制层组件,类似之前的配置中struts中的action
3. @Service[是@component的扩展]用于标注业务层组件(注入DAO)
4. @Repository[是@component的扩展]用于标注数据访问组件,即DAO组件,实现DAO访问
四、@Autowired
- @Autowired 是一个注释,它可以对类成员变量、方法及构造函数山进行标注,让 spring 完成 bean 自动装配的工作。
- 如果@Autowired 注入到是一个类上相当于将一个实例注入到另一个实例中
五、@EnableWebSecurit 和@EnableGlobalMethodSecurity
- 当我们想要开启spring方法级安全时,只需要在任何 @Configuration实例上使用@EnableWebSecurit和 @EnableGlobalMethodSecurity 注解就能达到此目的
- @EnableWebSecurit 是一个组合注解,一般都会和@EnableGlobalMethodSecurity共同使用
- @EnableGlobalMethodSecurity 中有一个参数
- prePostEnabled=true会解锁@PreAuthorize和@PostAuthorize两个注解
- @PreAuthorize注解会在方法执行前进行验证
- @PostAuthorize注解在方法执行后进行验证
六、RestController 和Controller 区别
- RestController的作用相当于[Controller加ResponseBody]共同作用的结果,但采用RestController请求方式一般会采用Restful风格的形式。
- RestController 作用:可以声明该类是controller层的bean,并且将结果直接提交而不经过视图解析并且将结果能自动封装成json格式返回前端
七、@Retention
- @Retention是用来修饰注解的,注解的注解
- @Retention修饰注解,用来表示注解的生命周期,生命周期的长短取决于@Retention的属性RetentionPolicy指定的值
取值 | 描述 | 作用范围 | 使用场景 |
---|---|---|---|
RetentionPolicy.SOURCE | 1. 注解只保留在源文件 2.当java文件编译成class文件,就会消失 | 源文件 | 只是做一些检查性的操作, 比如 @Override |
RetentionPolicy.CLASS | 1. 注解被保留到class文件 2. jvm加载class文件时候被遗弃,这是默认的生命周期 | class文件 (默认) | 要在编译时进行一些预处理操作 |
RetentionPolicy.RUNTIME | 1. 注解不仅被保存到class文件中 2. jvm加载class文件之后,仍然存在 | 运行时也存在 | 需要在运行时去动态获取注解信息 |