码迷,mamicode.com
首页 > 编程语言 > 详细

Spring(八):Spring配置Bean

时间:2018-05-13 23:07:02      阅读:286      评论:0      收藏:0      [点我收藏+]

标签:nbsp   framework   lstat   esc   att   .com   environ   style   web环境   

在Spring的IOC容器里配置Bean

配置Bean形式:基于xml文件方式、基于注解的方式

在xml文件中通过bean节点配置bean:

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd">
    
    <bean name="helloSpring" class="com.dx.spring.beans.HelloSpring">
        <property name="name" value="Spring"></property>
    </bean>

</beans>

参考:《Spring(二):Spring框架&Hello Spring》中配置过程

id:Bean的名称

1)在IOC容器中必须是唯一的;

2)若id没有指定,Spring会自动将全系nag定型为类名作为Bean的名字;

3)id可以指定多个名字,名字之间可用逗号、分号、或空格分隔。

Bean的配置方式:通过全类名(反射实现,此时要求该bean类拥有一个无参数构造器)、通过工厂方法(静态工厂方法&实例工厂方法)、FactoryBean

IOC容器BeanFactory&ApplicationContext概述

Spring容器

1)在Spring IOC容器读取Bean配置创建Bean实例之前,必须对它进行实例化。只有在容器实例化后,才可以从IOC容器里获取Bean实例并使用。

2)Spring提供了两种类型IOC容器实现

---BeanFactory:IOC容器的基本实现。BeanFactory是Spring框架的基础设施,面向Spring本身。

---ApplicationContext:提供了更多的高级属性,是BeanFactory的子接口。ApplicationContext面向使用Spring框架的开发者,几乎所有的应用场合都直接使用ApplicationContext,而非底层的BeanFactory。

备注:

1)无论使用两种方式的哪一种,配置文件是相同的。

2)如何却别ApplicatinContext是BeanFactory的子接口:

ApplicatinContext的类定义:

// Compiled from ApplicationContext.java (version 1.8 : 52.0, no super bit)
public abstract interface org.springframework.context.ApplicationContext 
extends org.springframework.core.env.EnvironmentCapable,
org.springframework.beans.factory.ListableBeanFactory,
org.springframework.beans.factory.HierarchicalBeanFactory,
org.springframework.context.MessageSource,
org.springframework.context.ApplicationEventPublisher,
org.springframework.core.io.support.ResourcePatternResolver {
// Method descriptor #10 ()Ljava/lang/String; @org.springframework.lang.Nullable public abstract java.lang.String getId(); // Method descriptor #10 ()Ljava/lang/String; public abstract java.lang.String getApplicationName(); // Method descriptor #10 ()Ljava/lang/String; public abstract java.lang.String getDisplayName(); // Method descriptor #16 ()J public abstract long getStartupDate(); // Method descriptor #18 ()Lorg/springframework/context/ApplicationContext; @org.springframework.lang.Nullable public abstract org.springframework.context.ApplicationContext getParent(); // Method descriptor #20 ()Lorg/springframework/beans/factory/config/AutowireCapableBeanFactory; public abstract org.springframework.beans.factory.config.AutowireCapableBeanFactory getAutowireCapableBeanFactory() throws java.lang.IllegalStateException; }

从上边我们知道ApplicationContext是继承了org.springframework.beans.factory.ListableBeanFactoryorg.springframework.beans.factory.HierarchicalBeanFactory接口,而这两个接口都是继承了org.springframework.beans.factory.BeanFactory接口。

public interface BeanFactory {
    String FACTORY_BEAN_PREFIX = "&";
    Object getBean(String name) throws BeansException;
    <T> T getBean(String name, @Nullable Class<T> requiredType) throws BeansException;
    Object getBean(String name, Object... args) throws BeansException;
    <T> T getBean(Class<T> requiredType) throws BeansException;
    <T> T getBean(Class<T> requiredType, Object... args) throws BeansException;
    boolean containsBean(String name);
    boolean isSingleton(String name) throws NoSuchBeanDefinitionException;
    boolean isPrototype(String name) throws NoSuchBeanDefinitionException;
    boolean isTypeMatch(String name, ResolvableType typeToMatch) throws NoSuchBeanDefinitionException;
    boolean isTypeMatch(String name, @Nullable Class<?> typeToMatch) throws NoSuchBeanDefinitionException;
    @Nullable
    Class<?> getType(String name) throws NoSuchBeanDefinitionException;
    String[] getAliases(String name);

}

因此,说ApplicationContext是BeanFactory的子接口类。

ApplicaionContext

ApplicationContext的主要实现类:

---ClassPathXmlApplicationContext:从类路径下加载配置文件

---FileSystemXmlApplicationContext:从文件系统中加载配置文件。

 

 

 

依赖注入的方式:属性注入;构造函数注入;工厂方法(不推荐、也不常用)

注入属性值细节

自动装配

bean之间的关系:继承;依赖。

bean的作用域:singleton;property;web环境作用域

使用外部属性文件

SPEL

IOC容器中Bean的声明周期

Spring4.x新概念:泛型依赖注入。

 

Spring(八):Spring配置Bean

标签:nbsp   framework   lstat   esc   att   .com   environ   style   web环境   

原文地址:https://www.cnblogs.com/yy3b2007com/p/9033596.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!