Spring框架学习记录

设置spring配置选项 配置Spring有两种方法:1,Xml;2,注解 基本配置概述 对于xml配置,需要…

设置spring配置选项

配置Spring有两种方法:1,Xml;2,注解

基本配置概述

对于xml配置,需要声明Spring提供的命名空间基础信息;

要想使用Spring的注解支持需要配置<context:component-scan>

<context:component-scan> 标记告诉Spring扫描代码,从而找到使用@Component,@Controller,@Repository和@Service注解的注入bean,以及使用@Autowired,@Inject,@Resource注解的bean。在该注解中,可以使用逗号,分号或者空格作为分割符来定义多个包,此外,该标记支持组件扫面的包含和排除,从而实现更细粒度的控制。例如:

上面所示的表示Spring扫描制定的包,同时忽略那些在表达式中制定的类。除了排除过滤器以外,还可以使用包含过滤器,对于类型,可以使用注解,正则表达式,赋值,AspectJ或自定义类(使用实现了TypeFilter的过滤器类)作为过滤条件,表达式取决于所指定的类型;

type的类型有:

annotation:注解类型(较常使用)使用时expression应写注解的类路径,例如:org.springframework.stereotype.Controller

assignable:指定的类型
aspectj:按照Aspectj的表达式,基本上不会用到
regex:按照正则表达式
custom:自定义规则

声明Spring组件

xml声明:在xml中使用?<bean>进行声明;

注解声明,必须使用适当的构造型注解(@Service,@Controller…)来注解bean,并且必须使用@Autowired注解方式或构造函数,以便告诉SpringIoc

使用java配置,配置类使用@configuration,并含有@Bean注解的方法,bean的名称与用于创建它的方法名称相同

可以使用配置类读取带注解的bean定义。这种情况下,因为bean的定义配置是bean类的一部分,所以类将不再需要任何@Bean注解的方法。但是为了能够在java类中查找bean定义,必须启用组件扫描。例如:

如果之前的代码是xml形式的,则可以使用@ImportResource从一个或者多个Xml文件中导入bean定义

要使用XML配置来配置setter注入,需要在<bean>标签下制定<property>标记(为每一个<property>标记注入一个依赖项)

例如:

ref为属性引用一个bean

spring2.5以后,可以在xml配置文件中声明p名称空间,则可以声明注入,如以下代码:

使用注解,则更加简单,只需要向setter方法添加一个@Autowired注解即可

由于在xml配置文件中声明了<context-component-scan>标记,因此在Spring的applicationContext初始化期间,Spring会发现这些@Autowired注解并根据需要注入依赖。

public ConfigurableMessageProvider(String message){…}

在Spring3.1后和可以使用c命名空间如下所示

要为构造函数注入使用注解,还需要在目标bean的构造函数方法中使用@Autowired注解,这是setter方法的替代方法;

对于xml注入,有多个参数个数相同的构造函数,需要在<constructor-arg type=”int”>是用type区别类型;对与注解注入,可直接在相应的构造函数上加上@Autowired注解,明确使用哪个构造函数;@Autowired注解只能应用于其中一个构造函数,如果用于多个,则会报错;

。。不在阐述

调用静态工厂方法创建Bean是将对象创建的过程封装到静态方法中,当客户端需要对象时,只需要简单地调用静态方法,而不用关心创建对象的细节。

要声明通过静态方法创建Bean,需要在<bean>的calss属性里指定拥有该工厂方法的类,同时在factory-method属性中制定工厂方法的名称。最后,使用<constrctor-arg>元素为该方法传递方法参数。

实例工厂方法:将对象的创建过程封装到另外一个对象实例的方法里。当客户端需要请求对象时,只需要简单的调用该实例方法,而不用关心对象的创建细节。

要声明通过实例工厂方法创建bean

-在bean的factory-bean属性里制定拥有该工厂方法的bean

-在factory-method属性里制定该工厂方法的名称

-使用construtor-arg元素为工厂方法传递方法参数

本文来自网络,不代表软粉网立场,转载请注明出处:https://www.rfff.net/p/8662.html

作者: HUI

发表评论

您的电子邮箱地址不会被公开。

返回顶部