1、@ComponentScan:
新建SpringBoot项目时 会自动生成一个入口类 命名规则是项目名+Application 该类上面有个@SpringBootApplication 项目启动时系统会自动扫描这个类的同级以及下级目录 将需要的对象注入到IOC容器 在需要时通过DI(依赖注入)注入到需要的对象中 那么问题来了 程序是怎么确定需要扫描哪些包呢 这是因为在@SpringBootApplication中有个注解 如图:
通过该注解上的配置 才能准确定位需要扫描哪些包 。
由此我们可以进行延伸 如果我们需要臊面的资源不再该类的同级或者下级 我们只需要在项目入口类上配置上@ComponentScan("资源路径")
就可以将我们需要的外部(其他路径)资源加载到IOC容器中了
2、@Qualifier("byname") 通过name名 注入
3、@Primary 对于同一个类型下有多个实现 该注解可以标明哪个实现类是优先被注入的 如图:
此时会优先注入带有@Primary注解的bean 如下图:
4、@ConditionalOnProperty 该注解可以读取配置文件 根据配置文件的值来决定是否将bean注入到容器中
该注解中的三个参数:value 值为配置文件中配置项的名字 havingValue为值 matchIfMissing 的值为true和false 时针对没有配置项的情况下时是否注入
5、
@Getter lombok为实体类自动生成getter方法
@Setter lombok为实体类自动生成setter方法
@AllArgsConstructor lombok为实体类自动生成全参数构造方法
@NoArgsConstructor lombok为实体类自动生成无参数构造方法
@RequiredArgsConstructor lombok为实体类自动生成成员变量非空的参数构造方法
@NonNull lombok为实体类指定参数非空
实体类.builder().name("muse").age(18).build()可以替换之前的setter方法赋值 不过需要在实体类上增加@Builder注解
但是一旦使用@Builder 就无法通过构造方法去实例化bean 因为@Builder会生成一个私有的构造方法 如果想使用构造方法实例化 可以配合使用NoArgsConstructor 或者手动新增一个无参构造