component(componential analysis语言学)

来源:爱酷猪责编:网络时间:2025-01-04 14:45:23

@component @bean区别

@Component被用在要被自动扫描和装配的类(@AutoWired)上。

现在项目上,本工程中的类,一般都使用@Component来生成bean。在把通过web service取得的类,生成Bean时,使用@Bean和getter方法来生成bean。

Spring帮助我们管理Bean分为两个部分,一个是注册Bean,一个装配Bean。

完成这两个动作有三种方式,一种是使用自动配置的方式、一种是使用JavaConfig的方式,一种就是使用XML配置的方式。

在自动配置的方式中,使用@Component去告诉Spring,我是一个bean,你要来管理我,然后使用@AutoWired注解去装配Bean(所谓装配,就是管理对象直接的协作关系)。然后在JavaConfig中,@Configuration其实就是告诉spring,spring容器要怎么配置(怎么去注册bean,怎么去处理bean之间的关系(装配))。那么久很好理解了,@Bean的意思就是,我要获取这个bean的时候,你spring要按照这种方式去帮我获取到这个bean。到了使用xml的方式,也是如此。君不见<bean>标签就是告诉spring怎么获取这个bean,各种<ref>就是手动的配置bean之间的关系。

用@Bean注解的方法:会实例化、配置并初始化一个新的对象,这个对象会由spring IoC 容器管理。

@Configuration

public class AppConfig {

@Bean

public MyService myService() {

return new MyServiceImpl();

}

}

相当于在 XML 文件中配置

<beans>

<bean id="myService" class="com.acme.services.MyServiceImpl"/>

</beans>

生成对象的名字:默认情况下用@Bean注解的方法名作为对象的名字。但是可以用 name属性定义对象的名字.

@Configuration

public class AppConfig {

@Bean(name = "myFoo")

public Foo foo() {

return new Foo();

}

}

首先我们看看这两个注解的作用:

@Component注解表明一个类会作为组件类,并告知Spring要为这个类创建bean。

@Bean注解告诉Spring这个方法将会返回一个对象,这个对象要注册为Spring应用上下文中的bean。通常方法体中包含了最终产生bean实例的逻辑。

两者的目的是一样的,都是注册bean到Spring容器中。

@Component(@Controller、@Service、@Repository)通常是通过类路径扫描来自动侦测以及自动装配到Spring容器中。

而@Bean注解通常是我们在标有该注解的方法中定义产生这个bean的逻辑。

举个栗子:

@Controller

//在这里用Component,Controller,Service,Repository都可以起到相同的作用。

@RequestMapping(″/web/controller1″)

public class WebController {

.....

}

而@Bean的用途则更加灵活

当我们引用第三方库中的类需要装配到Spring容器时,则只能通过@Bean来实现

举个例子:

public class WireThirdLibClass {

@Bean

public ThirdLibClass getThirdLibClass() {

return new ThirdLibClass();

}

}

再举个只能用@Bean的例子:

@Bean

public OneService getService(status) {

case (status) {

when 1:

return new serviceImpl1();

when 2:

return new serviceImpl2();

when 3:

return new serviceImpl3();

}

}

以上这个例子是无法用Component以及其具体实现注解(Controller、Service、Repository)来实现的。

总结:@Component和@Bean都是用来注册Bean并装配到Spring容器中,但是Bean比Component的自定义性更强。可以实现一些Component实现不了的自定义加载类。

Spring中常用注解@Component 的作用详解

Spring中使用在类上的常用注解有@Controller、@Repository、@Service、@Component,下面分别详细介绍一下他们的作用:

1、@Controller:用于标注控制层服务。

2、@Repository:用于标注数据访问层,也可以说用于标注数据访问组件,即DAO组件。

3、@Service:用于标注业务逻辑层服务,主要用来进行业务的逻辑处理,注入DAO。这种bean默认是单例的,如果想改变,可以使用@Service(“beanName”) 、@Scope(“prototype”)来改变。

4、@Component:把普通的类实例化到spring容器中,相当于配置文件中的 <bean id="" class=""/>。泛指各种组件,就是说当我们的类不属于各种归类的时候(不属于@Controller、@Repository、@Services等的时候),我们就可以使用@Component来标注这个类。

总之,@Component,@Service,@Controller,@Repository 注解的类,Spring都会把这些类初始化到Spring容器中,把这些类纳入到spring容器中进行管理。

“菜鸟技术栈”

用户评论

大王派我来巡山!

这听起来很有意思!我以前没听说过元元分析语言学这样的东西。

    有11位网友表示赞同!

凝残月

是说把语言拆解成更小的单元来研究吗?

    有7位网友表示赞同!

杰克

感觉这种方法能帮助我们更好地理解语言的结构吧?

    有11位网友表示赞同!

尘埃落定

在很多学科都用分解的方式进行研究,语言学也不例外啊!

    有17位网友表示赞同!

暮光薄凉

元元分析语言学有什么实际应用吗?

    有10位网友表示赞同!

tina

学习这种方法需要什么基础知识?

    有5位网友表示赞同!

终究会走-

有没有推荐一些入门级的资料?

    有12位网友表示赞同!

单身i

觉得这样的研究能提供很多有趣的新发现吧!

    有18位网友表示赞同!

浮光浅夏ζ

这听起来像是比较复杂的学科啊。

    有15位网友表示赞同!

你身上有刺,别扎我

我想知道元元分析语言学是如何应用在翻译和学习外语方面的!

    有20位网友表示赞同!

堕落爱人!

这个研究方向很有前途!希望看到更多成果!

    有10位网友表示赞同!

她最好i

感觉元元分析语言学对理解不同语言差异很有帮助吧!

    有10位网友表示赞同!

炙年

我觉得这种方法可以帮助我们更好地进行语言教育设计!

    有8位网友表示赞同!

暮染轻纱

如果能用元元分析语言学研究家乡的方言,会不会很不错?

    有6位网友表示赞同!

最迷人的危险

这个领域的研究者们一定有很多有趣的想法吧!

    有14位网友表示赞同!

酒笙倾凉

我对元元分析语言学这个概念还是很新奇的!

    有12位网友表示赞同!

孤街浪途

希望有机会了解更多关于元元分析语言学的知识!

    有17位网友表示赞同!

把孤独喂饱

感觉元元分析语言学是一个很有深度和挑战性的研究方向!

    有11位网友表示赞同!

微信名字

学习这种方法应该能拓宽我们对语言的理解!

    有12位网友表示赞同!

猜你喜欢
最新游戏更多
热门专题更多
最新资讯更多