发表于: 2017-08-14 22:51:08

2 991


今天完成的事情:

看了一下Spring的内容:

Spring的DI(依赖注入)

1 Spring Bean装配的三种方式:

  • 自动化装配bean

  • 通过JavaConfig装配

  • 通过XML文件装配

2 自动化装配bean

  • 组件扫描(component scanning)

  • 自动装配(autowiring)

@Component:组件声明
@ComponentScan:组件扫描
( XML的方式:<context:component-scan>  )
@ContextConfiguration:
@Autowired:自动装配

为组件扫描的bean命名的几种方式:

  1. Spring默认将类名第一个字母小写作为bean的ID

  2. 将ID作为值传递给@Component,如:Component("beanname")

  3. 使用Java依赖注入规范中的 @Named设置ID,如:@Named("beanname")

设置组件扫描的包(@ComponentScan):

  • 单包:@ComponentScan("packagename")或@ComponentScan(basePackages = "packagename")

  • 多包:@ComponentScan(basePackages = {"package1","package2",...})

  • 指定包中的类或接口:@ComponentScan(basePackageClasses = {xxx.class , xxxx.class , ....})

自动装配:


@Autowired:自动装配,可用于构造函数,setter方法,非setter属性方法
@Autowired(required = false):不提示未配置的bean的异常
@Inject:自动装配,Java依赖注入规范,与@Autowired差不多

3 通过Java代码(JavaConfig)装配bean


@Configuration:声明这个类为配置类
@Bean:声明简单bean。默认beanID为带@Bean的方法名,也可通过@Bean(name= " ")指定ID

借助JavaConfig实现注入的例子:

  • 引用创建bean的方法

  • 请求一个JavaConfig类作为参数(构造器)

  • setter方法

注意:带有@Bean的方法可以通过任何必要的Java功能来产生bean实例

4 通过XML文件装配Bean:

创建XML配置文件,以<beans>为根

声明Bean:<bean id = " "  class = " " />

4.1 借助构造器注入初始化bean(强依赖)的两种方式:

  • <constructor-arg>

  • c-命名空间

<constructor-arg>

<constructor-arg  ref = " " />

<constructor-arg  vlaue = " ">

<constructor-arg>
<list>
 <ref bean=" "/>
 <ref bean=" "/>
 ......
</list>
</constructor-arg>

c-命名空间(Spring3.0引入):

在XML顶部声明:xmlns:c = "http://www.springframework.org/schema/c"


<bean id = " " class = " " c:cd-ref = " "   /> 或 c:_0-ref = " " />
“c:”:前缀
“cd”:构造器参数名
“-ref”:注入bean引用
“"  "”:要注入的beanID

4.2 设置属性注入(可选依赖):


<property>属性:

@Autowired
public void setXXX (... , ...) { ... }

<bean id = "  "
     class = "  "  />
     <property name = "  "  ref = "  " />
</bean>

<property name = "  "/>
<list>
 <value>  </value>
 <value>  </value>
</list>
</property>


<property><constructor-arg>对应
p-命名空间 与 c-命名空间对应

p-命名空间:
在XMML中声明:xmlns:p = "http://www.springframework.org/schema/p"
p:XXX-ref = "   "
“p:”:前缀
“XXX”:属性名
“-ref”:注入bean应用
“" "”:所注入的beanID

不能使用p-命名空间来装配集合,但能使用util-命名空间中的<util:list>元素创建列表bean:
先在XML中声明:xmlnd:util="http://www/springframework.org/schema/util"
<util:list id = " ">
<value>  </value>
<value>  </value>
</util:list>

Spring util-命名空间中的元素:


<util:constant>:引用某个类型的public static域,并将其暴露为bean

<util:list>:创建java.util.List类型的bean,包含值或引用

<util:map>:创建java.util.Map类型的bean,包含值或引用

<util:properties>:创建java.util.Properties类型的bean,包含值或引用

<util:property-path>:引用一个bean的属性,并将其暴露为bean

<util:set>:创建java.util.Set类型的bean,包含值或引用

5 导入和混合配置:

在JavaConfig中引用XML配置:


拆分JavaConfig:
- @Import(xxx.class) 或 @Import({xxx1.class,xxx2.class})
- @ImoprtResource("CLASSPATH:XXXX.xml")

在XML配置中引用JavaConfig:


<bean class = "xxx.config"  />
或者使用第三个配置文件: <import resorce = "xxxx.xml" />

明天打算做的事情:

复习一下Java的基础语法

遇到的问题:


收获:



返回列表 返回列表
评论

    分享到