多重加载Bean方式

可以从Bean定义、名称、注入、生命过程等方面分类

也可以从基于配置方式进行分类。

大体上可以分为以下图中几种类型的加载方式。


Bean定义方面:声明Bean,为了以后的调用,大部分用来定义类对象和方法

 
基于Xml:最简单的方式,直接在xml文件中配置id并在java里获取Id。
 有三种获取方式,原理相同都是在xml里设置Bean的Id,也可以通过factory-method方式获取

 需要注意构造函数和set、get方法

UserService userService = (UserService) applicationContext.getBean("userService");

UserService userService = (UserService) applicationContext.getBean("userServiceFactory");

UserService userService = (UserService) applicationContext.getBean("getUserService");

基于注解:最常用的方式之一,用来注解类,有@Component,@Service等常用标签,不需要set、get等方法
在类上直接写@Component就会注入该类    如果有有参构造,一定要写上 无参构造 ,否则报错,因为IOC是基于反射原理实现的。
@Component
public class Person {

}

然后调用该类,@Compoent默认该类小写

Person person2=(Person) applicationContext.getBean("person");

基于Java注解:也算比较常用,常用来设置一些java类属性
@Bean可以注解方法,如果不写的话就 默认该方法的名称 (方法名按 规范 写),需要注意的是,如果是在 同一个扫描包下(即在一个  Beans    里) ,需要注意防止 Bean 名称 重复

                 比如:在dog类下bean注解Dog的 toString()方法

                测试类里Cat cat=(Cat) applicationContext.getBean("cat");

System.out.println("--"+cat);

            

            结果:10--cat

            执行的狗的toString方法,执行Bean注解的方法,这样会自动实例化狗对象,前提是这个类已经被注解定义

    @Configuratio和@Component都行,


Bean名称方面:和定义的区别主要是给Bean注入了name属性注入了值等等

   
    基于Xml:通过id或name指定

     大概情况如图所示

    



基于注解:直接在类上写上@Component("值")即可


基于Java注解:使用@Bean(name="值")给方法注解


Bean注入方面:主要指给属性赋值


基于Xml:


    

    基于注解:@Autowired 按类自动注入,注入的类需要已经被注解过。@Qualifier按名称手动注入,通过已经注解过的Bean值来注入。

      

    

    基于Java注解:在java内部编写注入逻辑

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值