1. 组件注册
1.1 @Bean 、@Scope
@Bean是给容器中注册组件,@Scope生命组件的作用范围(SCOPE_PROTOTYPE,SCOPE_SINGLETON)
@Bean
public static ManagementContextFactory servletWebChildContextFactory() {
return new ManagementContextFactory(WebApplicationType.SERVLET, ServletWebServerFactory.class,
ServletWebServerFactoryAutoConfiguration.class);
}
1.2 @Controller、 @Service、@Repository、@Component
@Controller:用于标识控制层组件(Controller),即处理用户请求和响应的部分。在Spring MVC中,通常用来处理Web请求,负责将用户请求映射到相应的处理方法,并处理后返回视图或数据给用户。
@Service: 用于标识服务层组件(Service),负责业务逻辑的处理。Service层通常用来编写业务逻辑,如数据处理、事务管理等。它们被设计用来支持控制器和数据访问对象(DAO)之间的协作。
@Repository用于标识数据访问层组件(Repository),即DAO组件。Repository层通常用来操作数据库或执行持久化操作,包括查询数据库、保存实体等。它们通常是与持久化技术(如Hibernate)集成的。
@Component:是Spring中最普遍的通用组件注解,可以用于任何层次的组件。当类不符合更具体角色(如@Controller、@Service、@Repository)时,可以使用@Component来标识它们为Spring组件,使它们成为Spring容器管理的Bean。
1.3 @Configuration、@SpringBootConfiguration
@Configuration声明这是一个配置类,替换以前的配置文件
@Configuration和@SpringBootConfiguration都是Spring框架中的注解,用于标记一个类作为配置类。它们的作用是相同的,都可以用来定义Bean。但是,@SpringBootConfiguration是Spring Boot框架中的注解,它继承自@Configuration注解,并且可以自动扫描所有的jar包,并将其中的自动配置类加载到Spring容器中。因此,在Spring Boot应用程序中,通常使用@SpringBootConfiguration注解来标记一个类作为配置类。
1.4 @Import
第三方组件无法使用component以及那些衍生注解,import注解必须放到configuration注解上面,倒入容器bean的名字默认是全类名。springbootconfiguration注解也是configuration注解的衍生注解。
1.5 @ComponentScan
通过包扫描的方法给容器中注入组件
2. 条件注解(@Conditional)
如果注解指定的条件成立,则出发指定的行为
- @ConditionalOnClass:如果类路径中存在这个类,则触发指定行为
- @ConditionalOnMissingClass:如果类路径中不存在这个类,则触发指定行为
- @ConditionalOnBean:如果容器中存在这个Bean(组件),则触发指定行为
- @ConditionalOnMissingBean:如果容器中不存在这个Bean(组件),则触发指定行为
- @ConditionalOnBean(value=组件类型,name=组件名字):判断容器中是否有这个类型的组件,并且名字是指定的值
3. 属性绑定
3.1 @ConfigurationProperties
@ConfigurationProperties(prefix="配置文件中的配置数据前缀 ")该注解在类上使用,单独使用的话要结合@compent等相关注解。
3.2 @EnableConfigurationProperties
SpringBoot默认只扫描自己主程序所在的包。如果导入第三方包,即使组件上标注了 @Component、@ConfigurationProperties 注解,也没用。因为组件都扫描不进来,此时使用这个注解就可以快速进行属性绑定并把组件注册进容器
3.3 @Value
取值、计算机环境变量、JVM系统。xxxx。@Value(“${xx}”)
4. 组件注入
4.1 @Autowired
自动装配
4.2 @Qualifier
精确的指定
4.3 @Resource
5. 其他注解
5.1 @DependsOn
组件之间声明依赖关系
5.2@Lazy
组件懒加载(最后使用的时候才创建)
5.3 @Primary
同类组件如果有多个,标注主组件
5.4 @Order
数字越小优先级越高,就会越先工作
5.5 @Profile
基于多环境激活
5.6 @Lookup
单例组件依赖非单例组件,非单例组件获取需要使用方法
@Indexed 需要引入依赖
评论区