Bean的加载方式
两种基本加载方式
加载Bean可以直接在xml中配置,也可以使用@Component、@Controller、@Service、@Service和@Configuration注解标记后在xml配置扫描的包自动将带有这些注解的类加载为Bean。
@Configuration一般用来标记配置类,比@Component多一个proxyBeanMethods属性。proxyBeanMethods属性决定改配置类是否为代理对象,默认为true。使用代理对象的方法获取对象时,若容器中有者会返回容器中的对象。
除去以上两种方式加载Bean,还有其它方式。主要列出以下6种方式。
@Componentscan
新建一个配置类使用@Componentscan()注解,注解的参数为一个字符串数组,填写要扫描的包。@Componentscan()注解可以声明出扫描哪些包,这样下来就可以将xml完全代替。但是使用new ClassPathXmlApplicationContext("applicationContext.xml")来获取ioc容器只能传入xml文件,此时可以使用new AnnotationConfigApplicationContext(SpringConfig.class)来传入配置类。
若使用new AnnotationConfigApplicationContext(SpringConfig.class)来传入配置类,则原本使用xml注册的Bean将失效。可以使用@ImportResource("applicationcontext.xml")注解声明要读取的xml配置文件。如果有相同id的Bean,后加载的覆盖先加载的。