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

【51CTO】Spring4.0学习笔记

时间:2016-07-21 11:07:35      阅读:333      评论:0      收藏:0      [点我收藏+]

标签:sp

9.通过工厂方法配置

9.1静态工厂

   注意不是配置静态工厂方法实例,而是配置bean实例

   class 属性指向静态工厂的全类名

   factory-method  指向静态工厂方法的名字

   constructor-arg   如果工厂方法需要传入参数 则使用它传入参数


    <bean id="car" class="com.alan.factory.CarFactory" factory-method="getCar">        
        <constructor-arg value="Ford"></constructor-arg>    
    </bean>

    

    private static Map<String,Integer> cars = null;
        static{
            cars = new HashMap<>();
            cars.put("Aodi", 30000);
            cars.put("Ford", 10000);
        }
        public static String getCar(String name){
            return String.valueOf(cars.get(name));
        }




9.2 实例工厂

      实例工厂需要先创建工厂本身,再调用工厂的实例方法来返回bean的实例

   <bean id="car2"  factory-bean="carFactory"  factory-method="getCar">
       <constructor-arg value="ford"></constructor-arg>
   </bean>

    先要配置工厂实例

    factory-bean 指向实例工厂方法的bean

    factory-method  指向实例工厂方法的名字

    constructor-arg  如果需要参数


9.3 通过FactoryBean配置

    class 指向FactoryBean的全类名

    property 配置FactoryBean的属性

    但实际返回的实例是factoryBean的getObject() 方法返回的实例

public class CarFactoryBean implement FactoryBean<Car>{
    public Car getobject(){}
    public Class<?> getobjectType(){}
    publci boolean isSigleton(){}
}

9.4 基于注解方式配置Bean

组件扫描

    @Component    基本注解

    @Respository  持久层

    @Service      业务层

    @Controller   表现层

命名规则

    默认命名策略:使用非限定类名 第一个字母小写  也可以在注解中通过value属性 标示

扫描

<context:component-scan base-package=""  resource-pattern="repository/*.class" />
<context:include-filter/>
<context:exclude-filter/>

    @Service 一般放在impl实现类上 而不是接口上

<context:exclude-filter  type="annotation"  expression="org.framework.stereType.service"/>
<context:exclude-filter type="annotation" expression="org.framework.stereType.service"/>

        时 需要添加 use-default-filters="false"

<context:exclude-filter  type="assignable"  expression="com.alan.test"/>

    annotation  所有标注了xxxAnnotation的类

    assignable  所有继承或者扩展了XxxService的类


    关联关系配置

    组件装配

    <context:component-scan>元素还会自动注册一个AutowiredAnnotationBeanPostProcessor实例,该实例自动自动装配具有@Autowired  @Resource  @Inject注解属性

    @Autowired

    自动装配兼容类型的单个bean属性

    可以放在属性 构造器 方法上面

    如果没有该类型 会抛异常  如果允许不被设置 可以配置属性 required=false

    如果有几个相同类型的类  也会抛出异常 可以使用Qualifier("")指定具体名称

    放在数组上面  集合 Map 会自动匹配类型   Map name为key  bean为值

    @Resource

    要求提供一个名称属性  若为空 则采用标注出的变量或方法名作为bean的名称

    @Inject

    与@Autowired类型  但没有required属性


10. 泛型依赖注入

                           技术分享

    引用在父类类型,但是真正注入是在子类实现。


    





【51CTO】Spring4.0学习笔记

标签:sp

原文地址:http://duzhizj.blog.51cto.com/6018951/1828271

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