多重加载Bean方式

  • Post author:
  • Post category:其他


可以从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内部编写注入逻辑



版权声明:本文为bibiboyx原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。