Spring中为什么要用配置类中加@Bean这种形式

J2EE 码拜 8年前 (2016-03-19) 2531次浏览
如题,可能问题有点太简单,但是还是有疑问。
对于如下代码,为什么要这种形式?完全可以在不用这样复杂,要得到Son的实例,直接new不就可以了,为啥要通过
这种配置类的手段来实现,对spring这里的@bean的实现方式不是太理解。(最近刚接触spring…求指导)

@Configuration
public class AnnotationConfig {
@Bean
public Son son(){
    return new Son();
}
    @Bean
public Parent parent(){
    return new Parent();
}
JavaConfigApplicationContext ctx = new JavaConfigApplicationContext(AnnotationConfig .class);  
Son son = ctx.getBean(Son.class);
解决方案

5

这个是优化XML中对于<bean id=””  />方式的定义而已,仅仅是优化spring管理方式,new肯定是不行了,假如能让你直接new的话,spring的IOC还有什么意义呢?Spring中为什么要用配置类中加@Bean这种形式

5

打错字,小小事业====小小实验

5

bean 这个东东 本来就是spring 定义的吧
他是要让你把这个东东交给spring 容器来管理

5

你这java类就是一个配置文件
@Bean
public Son son(){
return new Son();
}
等同于 <bean id=”son”>

40

注解是xml配置文件的升级版
@Bean相当于XML中的<bean id=””  />
本人还从来没把bean定义在方法上过……
@Bean非单例模式下,都是从新new一个,跟本人new没区别。
就你的问题来回答,spring代码里new一个,跟你本人new一个一点区别都没有。
但是这些不是spring好处,spring的ioc控制反转、依赖注入,“控制反转”你不需要再代码中关心何时用new创建类的实例。你用的时候spring会创建这个实例,并且注入到你需要使用的地方。
假如不用spring,你需要在你用到实例的各个地方不停new。交给spring后,你只需要,在代码里直接定义完配置好。用就可以了!
相似这样

@Controller
public class Bean1  {
    
    /**
     * 注入Bean2
     */
    @Resource
    protected Bean2 bean2;
}

本人用bean2的时候,不需要在new或构造Bean2,直接“bean2.方法”就可以,spring会帮本人创建并注入Bean2实例。


CodeBye 版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权 , 转载请注明Spring中为什么要用配置类中加@Bean这种形式
喜欢 (1)
[1034331897@qq.com]
分享 (0)