@ComponentScan 组件扫描. 会自动扫描指定包下的全部标有@Component的类,并注册成bean,当然包括@Component下的子注解@Service,@Repository,@Controller。
举个栗子: spring boot 中(Springboot会自动扫描启动类同级包及其同级包的子包所有的注解。), 我的包名为 com.package1,cn.package2. 那么我的Application启动类在 com 下面.
问: 我 cn 下面的扫描不到怎么办.
问: 我只想扫描某个包下面的怎么办 答: 加注解写上你要扫描的包名,多个用逗号隔开 , 看下面
@ComponentScan("com.package1,cn.package2")
@EntityScan 看到这个注解, 上面的会了 就知道了
@EnableAutoConfiguration 启用自动配置(当然也可以使用exclude属性禁用某些类),这就是Spring Boot自动配置实现的核心入口
@SpringBootApplication 组合注解相当于@Configuration
,@EnableAutoConfiguration
和
@ComponentScan 并具有他们的默认属性值
@Entity 声明实体
@Table 指定表名
@Version 该注释可用于在实体Bean中添加乐观锁支持。
@Id 声明此属性为主键
@GeneratedValue 指定主键策略
@Column 声明该属性与数据库字段的映射关系。
@Configuration 一般配合 @Bean 使用. 声明当前类是一个配置类,相当于一个Spring的XML配置文件,与@Bean配合使用。
@Configuration VS @Component
共同点:都可以用于创建Bean;
不同点:实现原理不同,@Configuration基于CGlib代理实现,@Component基于反射实现;
使用场景:@Configuration用于全局配置,比如数据库相关配置,MVC相关配置等;业务Bean的配置使用注解配置(@Component,@Service,@Repository,@Controller)。
@Import 就是之前xml配置中的import标签,可以用于依赖第三方包中bean的配置和加载.
@ImportResource 导入xml文件, 需要配合@Configuration注解一起使用,定义为配置类
@ImportResource({"classpath:some-context.xml","classpath:other-context.xml"})
Springboot是常用的条件依赖注解有:
@ConditionalOnBean,仅在当前上下文中存在某个bean时,才会实例化这个Bean。
@ConditionalOnClass,某个class位于类路径上,才会实例化这个Bean。
@ConditionalOnExpression,当表达式为true的时候,才会实例化这个Bean。
@ConditionalOnMissingBean,仅在当前上下文中不存在某个bean时,才会实例化这个Bean。
@ConditionalOnMissingClass,某个class在类路径上不存在的时候,才会实例化这个Bean。
@ConditionalOnNotWebApplication,不是web应用时才会实例化这个Bean。
@AutoConfigureAfter,在某个bean完成自动配置后实例化这个bean。
@AutoConfigureBefore,在某个bean完成自动配置前实例化这个bean。
....后期待增加