【源码解析】Spring常用组件
前言:📫 作者简介:小明java问道之路,专注于研究计算机底层,就职于金融公司后端高级工程师,擅长交易领域的高安全/可用/并发/性能的设计和架构📫
🏆 Java领域优质创作者、阿里云专家博主、华为云专家🏆
🔥 如果此文还不错的话,还请👍关注、点赞、收藏三连支持👍一下博主哦
@ComponentScan
@ComponentScan(扫描规则)作用:指定要扫描的包
用例:
一、表示扫描此目录下的包
二、在Cap2MainConfig2加入配置: value: 指定要扫描的包,@Filter: 扫描规则,excludeFilters = Filter[] 指定扫描的时候按照什么规则排除那些组件,includeFilters = Filter[] 指定扫描的时候只需要包含哪些组件,useDefaultFilters = false 默认是true,扫描所有组件,要改成false
@Import注册bean
@Conditional条件注册bean
当IOC容器注册bean时, 当操作系统为WINDOWS时,注册Lison实例; 当操作系统为LINUX时, 注册James实例,此时要用得@Conditional注解进行定制化条件选择注册bean;
@Bean
@Bean是一个方法级别上的注解,主要用在@Configuration注解的类里,也可以用在@Component注解的类里。添加的bean的id为方法名
@Configuration
@Configuration用于定义配置类,可替换xml配置文件,被注解的类内部包含有一个或多个被@Bean注解的方法,这些方法将会被AnnotationConfigApplicationContext或AnnotationConfigWebApplicationContext类进行扫描,并用于构建bean定义,初始化Spring容器。
@Service、@Controller、@Repository
将自动扫描路径下面的包,如果一个类带了@Service注解,将自动注册到Spring容器,不需要再在applicationContext.xml文件定义bean了,类似的还包括@Component、@Repository、@Controller。
@Primary
当一个接口有2个不同实现时,使用@Autowired注解时会org.springframework.beans.factory.NoUniqueBeanDefinitionException异常信息, @Primary:自动装配时当出现多个Bean候选者时,被注解为@Primary的Bean将作为首选者,否则将抛出异常
详解:
@Lazy
lazy懒加载,只有获取bean是才会加载到IOC容器中
@Scope
prototype: 多实例:IOC容器启动并不会去调用方法创建对象放在容器中,而是每次获取的时候才会调用方法创建对象
singleton: 单实例(默认):IOC容器启动会调用方法创建对象放到IOC容器中,以后每交获取就是直接从容器(理解成从map.get对象)中拿
request: 主要针对WEB应用,同一次请求创建一个实例
session: 同一个session创建一个实例
- 点赞
- 收藏
- 关注作者
评论(0)