当前位置:首页 > 英文周记 > 正文内容

componentscan怎么读「componentscan怎么读中文」

更新时间:2026-07-18 10:28:29 周记网3年前 (2023-04-10)英文周记123

今天听英语单词像scan scheme 之类的单词 只要词首是sc开头的,c的发音感觉像g,但音标上写的是k。咋回事啊

字母c有两种发音,一种是[s],另一种是[k];通常c在字母a、o、u前发[k],在字母e、i前发[s],如:can [kæn]、cake [keik]、coin [kɔin]、cook [kuk]、Cuba ['kju:bə]、curl [kə:l],cent [sent]、century [ˈsentʃuri]、cigarette [ˌsigəˈret];而又由于轻辅音若遇到前面有字母s,那么轻辅音要浊化,读成浊辅音,但音标仍写轻辅音音标。例如:scan [skaen] 读作[sgæn],score [skɔ:] 读作[sgɔ:],school [sku:l] 读作[sgu:l]

componentscan怎么读「componentscan怎么读中文」

扫一扫跟读英语怎么读?

扫一扫(scan)跟读英语:英 [skæn]   美 [skæn] 

例句:想象一下只需用智能手机就能从贩卖机那儿买汽水,或者只需对报纸上的广告二维码扫一扫就能买东西。

Imagine getting a soft drink from a vending machine using only your **artphone. Or scanning a QR code to buy goods from a newspaper ad.

componentscan怎么读「componentscan怎么读中文」

英语翻译技巧:

1、省略翻译法

这与最开始提到的增译法相反,就是要求你把不符合汉语,或者英语的表达的方式、思维的习惯或者语言的习惯的部分删去,以免使所翻译出的句子沉杂累赘。

componentscan怎么读「componentscan怎么读中文」

2、合并法

合并翻译法就是把多个短句子或者简单句合并到一起,形成一个复合句或者说复杂句,多出现在汉译英的题目里出现,比如最后会翻译成定语从句、状语从句、宾语从句等等。

scanf 怎么读啊?

scanf我们通常读作:['skænf],或[skænef],即scan 和 f。

英语单词有scan,它的发音和语义如下:

scan

[英][skæn][美][skæn]

vt.计扫描; 细看; 细查; (雷达)对…进行扫描;

n.扫描; 浏览; 审视; (雷达)(屏面上的)光点;

vi.(光束、雷达等)扫描; 扫略; (诗歌)符合韵律; 标出诗歌的格律;

(新手勿进,全是代码)@ComponentScan、@ComponentScans详解

这些问题如果都ok,恭喜你,太优秀了,不知道没关系,一起来看看。

到目前为止,介绍了2种注册bean的方式:

通常情况下,项目中大部分类都需要交给spring去管理,按照上面这2种方式,代码量还是挺大的。

为了更方便bean的注册,Spring提供了批量的方式注册bean,方便大量bean批量注册,spring中的@ComponentScan就是干这个事情的。

@ComponentScan用于批量注册bean。

这个注解会让spring去扫描某些包及其子包中所有的类,然后将满足一定条件的类作为bean注册到spring容器容器中。

具体需要扫描哪些包?以及这些包中的类满足什么条件时被注册到容器中,这些都可以通过这个注解中的参数动态配置。

先来看一下这个注解的定义:

@ComponentScan工作的过程:

1. Spring会扫描指定的包,且会递归下面子包,得到一批类的数组

2. 然后这些类会经过上面的各种过滤器,最后剩下的类会被注册到容器中

第一个:需要扫描哪些包?通过 value、backPackages、basePackageClasses 这3个参数来控制

第二:过滤器有哪些?通过 useDefaultFilters、includeFilters、excludeFilters 这3个参数来控制过滤器

这两个问题搞清楚了,就可以确定哪些类会被注册到容器中。

默认情况下,任何参数都不设置的情况下,此时,会将@ComponentScan修饰的类所在的包作为扫描包;默认情况下useDefaultFilters为true,这个为true的时候,spring容器内部会使用默认过滤器,规则是:凡是类上有 @Repository、@Service、@Controller、@Component 这几个注解中的任何一个的,那么这个类就会被作为bean注册到spring容器中,所以默认情况下,只需在类上加上这几个注解中的任何一个,这些类就会自动交给spring容器来管理了。

这几个注解都是spring提供的。

先说一下 @Component 这个注解,看一下其定义:

再来看看 @Repository 源码如下:

其他两个注解 @Service、@Controller 源码和 @Repository 源码类似。

这4个注解本质上是没有任何差别,都可以用在类上面,表示这个类被spring容器扫描的时候,可以作为一个bean组件注册到spring容器中。

spring容器中对这4个注解的解析并没有进行区分,统一采用 @Component 注解的方式进行解析,所以这几个注解之间可以相互替换。

spring提供这4个注解,是为了让系统更清晰,通常情况下,系统是分层结构的,多数系统一般分为controller层、service层、dao层。

@controller通常用来标注controller层组件,@service注解标注service层的组件,@Repository标注dao层的组件,这样可以让整个系统的结构更清晰,当看到这些注解的时候,会和清晰的知道属于哪个层,对于spring来说,将这3个注解替换成@Component注解,对系统没有任何影响,产生的效果是一样的。

下面通过案例来感受@ComponentScan各种用法。

上面几个类中,分别使用了4种注解。

部分输出如下:

指定需要扫毛哪些包,可以通过value或者basePackage来配置,二者选其一,都配置运行会报错,下面我们通过value来配置。

ComponentScanTest中新增个方法

截取了关键几行如下:

可以看出只有controller包和service包中的2个类被注册为bean了。

指定包名的方式扫描存在的一个隐患,若包被重名了,会导致扫描会失效,一般情况下面我们使用basePackageClasses的方式来指定需要扫描的包,这个参数可以指定一些类型,默认会扫描这些类所在的包及其子包中所有的类,这种方式可以有效避免这种问题。

下面来看一下basePackageClasses的方式。

我们可以在需要扫描的包中定义一个标记的接口或者类,他们的唯一的作用是作为basePackageClasses的值,其他没有任何用途。

ComponentScanTest中新增个方法

再来看一下includeFilters这个参数的定义:

是一个 Filter 类型的数组, 多个Filter之间为或者关系,即满足任意一个就可以了 ,看一下 Filter 的代码:

我们自定义一个注解,让标注有这些注解的类自动注册到容器中

下面的代码都在 com.javacode2018.lesson001.demo22.test3 包中。

ComponentScanTest中新增个测试用例

Service1上标注了 @MyBean 注解,被注册到容器了,但是 Service2 上没有标注 @MyBean 啊,怎么也被注册到容器了?

原因:Service2上标注了 @Compontent 注解,而@CompontentScan注解中的 useDefaultFilters 默认是 true ,表示也会启用默认的过滤器,而默认的过滤器会将标注有 @Component、@Repository、@Service、@Controller 这几个注解的类也注册到容器中

如果我们只想将标注有 @MyBean 注解的bean注册到容器,需要将默认过滤器关闭,即:useDefaultFilters=false,我们修改一下ScanBean3的代码如下:

再次运行 test3 输出:

上面的自定义的@MyBean注解,是无法指定bean的名称的,可以对这个注解做一下改造,加个value参数来指定bean的名称,如下:

修改一下Service1的代码:

运行test3用例输出:

此时bean名称就变成了 service1Bean 。

下面的代码都位于 com.javacode2018.lesson001.demo22.test4 包中。

让spring来进行扫描,类型满足IService的都将其注册到容器中。

ComponentScanTest中新增个测试用例

有时候我们需要用到自定义的过滤器,使用自定义过滤器的步骤:

来看一下 TypeFilter 这个接口的定义:

是一个函数式接口,包含一个match方法,方法返回boolean类型,有2个参数,都是接口类型的,下面介绍一下这2个接口。

类元数据读取器,可以读取一个类上的任意信息,如类上面的注解信息、类的磁盘路径信息、类的class对象的各种信息,spring进行了封装,提供了各种方便使用的方法。

看一下这个接口的定义:

类元数据读取器工厂,可以通过这个类获取任意一个类的MetadataReader对象。

源码:

我们来个自定义的Filter,判断被扫描的类如果是 IService 接口类型的,就让其注册到容器中。

来个自定义的TypeFilter类:

ComponentScanTest中新增个测试用例

配置排除的过滤器,满足这些过滤器的类不会被注册到容器中,用法上面和includeFilters用一样,这个我就不演示了,可以自己玩玩

从这个注解的定义上可以看出这个注解可以同时使用多个,如:

还有一种写法,使用@ComponentScans的方式:

@CompontentScan注解是被下面这个类处理的

这个类非常非常关键,主要用户bean的注册,前面我们介绍的@Configuration,@Bean注解也是被这个类处理的。

还有下面这些注解:

以上这些注解都是被ConfigurationClassPostProcessor这个类处理的,内部会递归处理这些注解,完成bean的注册。

以@CompontentScan来说一下过程,第一次扫描之后会得到一批需要注册的类,然后会对这些需要注册的类进行遍历,判断是否有上面任意一个注解,如果有,会将这个类交给ConfigurationClassPostProcessor继续处理,直到递归完成所有bean的注册。

想成为高手,这个类是必看的。

scan怎么读

scan读音是: 

英 [skæn]     美 [skæn]    

vt. 扫描;浏览;审视;细看。

vi. 合韵律;划分音步。

n. 扫描;浏览;细看。

Could you teach me how to scan an image?

你可以教我如何扫描一个影像吗?

I scanned the newspaper when I was waiting for the bus.

等公共汽车的时候,我匆匆浏览了一下报纸。

语法: 

scan的基本含义是“看,扫视”,指一部分一部分地审视,可指认真观察研究,也可指粗略地浏览,须依据上下文确定其含义。引申还可指“合韵律”。

scan可用作及物动词,也可用作不及物动词。用作及物动词时,后接名词或代词作宾语。

scan的过去式和过去分词均为scanned。

“componentscan怎么读「componentscan怎么读中文」” 的相关文章

componentscan怎么读「compomy怎么读」

componentscan怎么读「compomy怎么读」

扫一扫跟读英语怎么读? 扫一扫(scan)跟读英语:英 [skæn]   美 [skæn] 例句:想象一下只需用智能手机就能从贩卖机那儿买汽水,或者只需对报纸上的广告二维码扫一扫就能买东西。Imagi...

发表评论

访客

◎欢迎参与讨论,请在这里发表您的看法和观点。