spring 4.0
spring是一个开源的框架
spring是一个ioc(DI)Aop的框架
使用spring无需实现任何的接口,非侵入式的注入
spring tool suite
spring环境搭建
必须要用到的四个包:
spring——beans
spring——context
spring——core
spring——expression6 commens-logging.jar日志包
依赖注入:
属性注入:
<property name="name" value="jake"/>
构造器注入:
<constructor-arg value="jake" index="0"/>
<constructor-arg value="10" index="1"/>
<constructor-arg value="150.5f" index="2"/>
如果不指定位置,那么必须按照顺序进行编写构造器标签
细节:
spring中bean指定的类必须包含一个无参构造,要通过其生成实例化对象
IOC容器就是我们的applicationContext 接口对象
该接口对象有一个子接口:ConfigurationApplicationContext
该子接口又有两个子接口:ClassPathXmlApplicationContext 和FileSystemXmlApplicationContext
getBean()方法的参数有两种: 可以通过在配置文件中声明的id来获取,也可以有类名.class来获取
不过当配置文件中存在两个相同实例类型的bean时,后者会出错。
构造器注入细节:
当属性值中的内容包含特殊字符时需要使用cdata节来进行处理
<constructor-arg >
<value>
<![CDATA[<jake@@##>]]>
</value>
</constructor-arg>
bean和bean直接可以进行相互的引用
spring 专有的空值<null/>
为级联属性赋值,将之前的对象属性覆盖掉
<property name="employee.name" value="tom"></property>
在配置文件中如果有多个bean都有这个集合,可以把我们的集合bean拿出来共用。
<!-- 配置共用的集合bean -->
<util:list id="employees">
<ref bean="department" />
</util:list>
P命名空间
所谓的P命名空间不过就是一种写法,可以简化 对应类的属性会自动解析出来 eg:
<bean id="employee2" class="com.nan.bean.Employee" p:age="23" p:name="suoLong"/>
自动装配:
如何实现自动装配?
需要设置bean标签中的autowire属性为byName或者byType
<bean id="employee2" class="com.nan.bean.Employee" p:age="23" p:name="suoLong" autowire="byName"/>
通过bean的name属性值进行装配的话是通过bean的name与被装配bean的id属性名称进行比对,如果name相同就进行装配,如果name不同则不进行装配
通过type属性进行装配的话需要注意的是如果有多个bean的类型都适合放置在这个属性位置上,会报错
spring是一个开源的框架
spring是一个ioc(DI)Aop的框架
使用spring无需实现任何的接口,非侵入式的注入
spring tool suite
spring环境搭建
必须要用到的四个包:
spring——beans
spring——context
spring——core
spring——expression6 commens-logging.jar日志包
依赖注入:
属性注入:
<property name="name" value="jake"/>
构造器注入:
<constructor-arg value="jake" index="0"/>
<constructor-arg value="10" index="1"/>
<constructor-arg value="150.5f" index="2"/>
如果不指定位置,那么必须按照顺序进行编写构造器标签
细节:
spring中bean指定的类必须包含一个无参构造,要通过其生成实例化对象
IOC容器就是我们的applicationContext 接口对象
该接口对象有一个子接口:ConfigurationApplicationContext
该子接口又有两个子接口:ClassPathXmlApplicationContext 和FileSystemXmlApplicationContext
getBean()方法的参数有两种: 可以通过在配置文件中声明的id来获取,也可以有类名.class来获取
不过当配置文件中存在两个相同实例类型的bean时,后者会出错。
构造器注入细节:
当属性值中的内容包含特殊字符时需要使用cdata节来进行处理
<constructor-arg >
<value>
<![CDATA[<jake@@##>]]>
</value>
</constructor-arg>
bean和bean直接可以进行相互的引用
spring 专有的空值<null/>
为级联属性赋值,将之前的对象属性覆盖掉
<property name="employee.name" value="tom"></property>
在配置文件中如果有多个bean都有这个集合,可以把我们的集合bean拿出来共用。
<!-- 配置共用的集合bean -->
<util:list id="employees">
<ref bean="department" />
</util:list>
P命名空间
所谓的P命名空间不过就是一种写法,可以简化 对应类的属性会自动解析出来 eg:
<bean id="employee2" class="com.nan.bean.Employee" p:age="23" p:name="suoLong"/>
自动装配:
如何实现自动装配?
需要设置bean标签中的autowire属性为byName或者byType
<bean id="employee2" class="com.nan.bean.Employee" p:age="23" p:name="suoLong" autowire="byName"/>
通过bean的name属性值进行装配的话是通过bean的name与被装配bean的id属性名称进行比对,如果name相同就进行装配,如果name不同则不进行装配
通过type属性进行装配的话需要注意的是如果有多个bean的类型都适合放置在这个属性位置上,会报错