1、注解说明
(1)SpringBoot启动配置注解
注解 | 注解说明 |
---|
@SpringBootApplication | SpringBoot应用标注在某个类上说明这个类是SpringBoot的主配置类,程序运行时应运行这个类的main方法来启动SpringBoot应用。 |
@SpringBootConfiguration | 标注在某个类上,表示这是一个SpringBoot的配置类。 |
@Configuration | 配置类上标注这个注解,表示该类是一个配置类(配置文件),配置类也是容器中的一个组件(@Componet)。 |
@EanbleAutoConfiguration | 开启自动配置功能,给容器中添加组件 |
@AutoConfigurationPackage | 自动配置包,将主配置类(@SpringBootApplication标注的类)的所在包及下面所有子包里面的所有组件扫描到Spring容器 |
@Import(xxxx.class) | 给容器中导入一个组件,导入的组件由xxx.class指定,将会给容器导入非常多的自动配置类(xxxAutoCnfiguraton):给容器中导入这个场景所需要的所有组件并配置好这些组件。 |
(2)Spring Boot配置相关注解
① YML和properties相关配置注解
注解 | 注解说明 |
---|
@ConfigurationProperties(prefix=‘xxx’) | 将配置文件中配置的每一个属性值映射到标注的组件中。prefix中的参数告诉配置文件中的xxx类下的所有属性进行一一映射(只有被注解的组件是容器中的才能被调用) |
@Component | 将组件放在容器中,说明这个类被Spring管理了,就是Bean |
@Value | 在某个对象上注入数据 |
@Validated | 支持JSR303进行配置文件值校验,允许类内添加相关校验注解 |
@PropertySource(value={“classpath:path”}) | 加载指定的配置文件,value中的path填写的resources配置下的路径 |
@ImportResource(locations = {“classpath:path”}) | 导入Spring的配置文件,让location中的path填写的resource配置文件里面的内容生效 |
@Configuration | 指明当前类是一个配置类,用于替代之前Spring的配置文件bean.xml |
@Bean | 可以给容器添加组件,写在类中的方法上,将方法的返回值添加到容器中,容器中这个组件默认的id就是方法名 |
- 注:@Value获取值和@ConfigurationProperties获取值比较
② 配置文件占位符
- 1 随机数
${random.value}、${random.int}、${random.long}
${random.int(10)}、${random.int[1024,65536]}
- 2 占位符获取之前配置的值,如果没有可以指定默认值。
person.dog=${person.hello:hello}
③ Profile 文件
server:
port: 8081
spring:
profiles:
active: dev
---
server:
port: 8083
spring:
profiles: dev
---
server:
port: 8084
spring:
profiles: prod
- 3、激活指定profile
(1)在配置文件中指定spring.profiles.active=configName
(2)命令行方式:
在执行Jar包时,输入java -jar xxxx.jar --spring.profiles.activate=dev
或者在配置时设置命令行参数点击Edit Configuration
进入配置界面,在Program arguments项上输入--spring.profiles.activate=dev
或者虚拟机参数-Dspring.profiles.active=dev
(3)单元测试注解
注解 | 注解说明 |
---|
@SpringBootTest | 声明该类为SpringBoot的单元测试 |
@RunWith(SpringRunner.class) | 声明单元测试用SpringRunner驱动器去驱动 |
@Test | 放在测试方法上,实现不用通过main函数即可运行程序 |
(4)常用注解
注解 | 注解说明 |
---|
@Nullable | 字段标记了这个注解,说明这个字段可以为null。 |
@Autowired | 默认按照资源的类型(class)查找并注入。自动驻入,自动装配通过类型byType。通过byType的方式实现,而且必须要求这个对象存在。名字如果Autowired不能唯一自动装配上属性,则需要通过@Qualifier(value=“xxx”)。 |
@Qualifier | 配合@Autowiredy一起使用,指定变量名作为id,让@Autowired在寻找到有多个相同类型的Bean时,选择具有唯一id的Bean来注入 |
@Resource | 默认按照资源的名称(name)查找并注入,自动装配默认通过名字byname,如果找不到名字,则通过byType实现。如果都找不到则报错。 |
@Repository | 代表Dao层,用于持久化层,数据库访问层,用来直接访问数据库。代表将某个类注册到Spring中,装配Bean |
@Service | 代表Service层,用于服务层,处理业务逻辑。代表将某个类注册到Spring中,装配Bean |
@Controller | 代表Controller层,用于呈现层(Spring-MVC),暴露给前端入口。代表将某个类注册到Spring中,装配Bean |
@Aspect | 标注这个类是一个切面 |
@RequestMapping | 可用于类或方法上,用来处理请求地址映射的注解 |
@PathVariable | 路径变量,可以将URL中占位符参数{xxx}绑定到处理器类的方法形参中@PathVariable(“xxx“) |
@ResponseBody | 将java对象转为json格式的数据,处理非Content-Type: application/x-www-form-urlencoded 编码格式的数据。一般主要是用来处理content-type:"application/json charset=utf-8" 或者content-type:"application/xml charset=utf-8" 两种请求数据,一般是异步请求用的比较多些 |
@RestController | 主要功能为@ResponseBody+@Controller |
@RequstParam | 获取地址中?后面的参数,即是获取传送过来的参数 |
@PathVariable | 路径变量,即是获取链接路径上的变量 |
SpringBoot在启动的时候从类路径下的META-INF/spring.factories
中获取EnableAutoConfiguration指定的值,将这些值作为自动配置类导入到容器中,自动配置类就生效,帮助我们进行自动配置。
2、xml与注解
- xml更加万能,适用于任何场合,维护简单方便
- 注解在不是自己类的情况下使用不了,维护相对复杂
- xml用来管理Bean,注解只负责完成属性的注入