1.p命名空间注入
⽬的:简化配置。
使⽤p命名空间注⼊的前提条件包括两个:
第⼀:在XML头部信息中添加p命名空间的配置信息:
xmlns:p="
http://www.springframework.org/schema/p"
第⼆:p命名空间注⼊是基于setter⽅法的,所以需要对应的属性提供setter⽅法。
<?xml version="1.0" encoding="UTF-8"?>
<
beans xmlns
=
"http://www.springframework.org/schema/beans"
xmlns:p="http://www.springframework.org/schema/p"
xmlns:xsi
=
"http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation
=
"http://www.springframework.org/schema/beans htt
p://www.springframework.org/schema/beans/spring-beans.xsd"
>
<
bean id
=
"customerBean"
class
=
"lin.spring
.Customer"
p:name="zhangsan" p:age="20"
/>
</
beans
>
2.C命名空间注入
c命名空间是简化构造⽅法注⼊的。
使⽤c命名空间的两个前提条件:
第⼀:需要在xml配置⽂件头部添加信息
xmlns:
c
="http://www.springframework.org/schema/c"
第⼆:需要提供构造⽅法。
<?xml version="1.0" encoding="UTF-8"?>
<
beans xmlns
=
"http://www.springframework.org/schema/beans"
xmlns:c
=
"http://www.springframework.org/schema/c"
xmlns:xsi
=
"http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation
=
"http://www.springframework.org/schema/beans htt
p://www.springframework.org/schema/beans/spring-beans.xsd"
>
<!--<bean id="myTimeBean" class="com.powernode.spring6.beans.MyTime"
c:year="1970" c:month="1" c:day="1"/>-->
<
bean id
=
"myTimeBean"
class
=
"lin.spring
.MyTime"
c:_0
=
"2008"
c:_1
=
"8"
c:_2
=
"8"
/>
</
beans
>
注意:不管是p命名空间还是c命名空间,注⼊的时候都可以注⼊简单类型以及⾮简单类型。
3.util命名空间
使⽤util命名空间可以让
配置复⽤
。当两个类需要同样的数据时,例如在数据库的选配上,两个类连接的是同一个数据库
使⽤util命名空间的前提是:在spring配置⽂件头部添加配置信息。如下:
<?xml version="1.0" encoding="UTF-8"?>
<
beans xmlns
=
"http://www.springframework.org/schema/beans"
xmlns:xsi
=
"http://www.w3.org/2001/XMLSchema-instance"
xmlns:util="http://www.springframework.org/schema/util"
xsi:schemaLocation
=
"http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/util http://www.springframework.org/schema/util/spring-util.xsd">
<
util:properties id
=
"prop"
>
<
prop key
=
"driver"
>com.mysql.cj.jdbc.Driver</
prop
>
<
prop key
=
"url"
>jdbc:mysql://localhost:3306/spring</
prop
>
<
prop key
=
"username"
>root</
prop
>
<
prop key
=
"password"
>123456</
prop
>
</
util:properties
>
<
bean id
=
"dataSource1"
class
=
"lin.spring
.MyDataSource1"
>
<
property name
=
"properties"
ref
=
"prop"
/>
</
bean
>
<
bean id
=
"dataSource2"
class
=
"lin.spring
.MyDataSource2"
>
<
property name
=
"properties"
ref
=
"prop"
/>
</
bean
>
</
beans
>
4.根据名称自动装配
<
bean id
=
"userService"
class
=
"lin.spring
.UserService"
autowire
=
"byName"
/>
<
bean id
=
"aaa"
class
=
"lin.spring
.UserDao"
/>
这个配置起到关键作⽤:
UserService Bean中需要添加autowire="byName",表示通过名称进⾏装配。
UserService类中有⼀个UserDao属性,⽽UserDao属性的名字是aaa,
对应的set⽅法是setAaa()
,
正好和UserDao Bean的id是⼀样的。这就是根据名称⾃动装配。
5.根据类型自动装配
<!--byType
表示根据类型⾃动装配
-->
<
bean id
=
"accountService"
class
=
"lin.spring
.AccountService"
autowire
=
"byType"
/>
<
bean class
=
"lin.spring
.AccountDao"
/>
6.spring引⼊外部属性配置文件
编写数据源的时候是需要连接数据库的信息的,例如:driver url username password等信
息。这些信息可以单独写到⼀个属性配置⽂件中,这样⽤户修改起来会更加的⽅便。
第⼀步:写⼀个数据源类,提供相关属性
第⼆步:在类路径下新建jdbc.properties⽂件,并配置信息。
driver
=com.mysql.cj.jdbc.Driver
url
=jdbc:mysql://localhost:3306/spring
username
=root
password
=root123
第三步:在spring配置⽂件中引⼊context命名空间
xmlns:context="http://www.springframework.org/schema/context"
http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd">
第四步:在spring中配置使⽤jdbc.properties⽂件。
<
context:property-placeholder location
=
"jdbc.properties"
/>
<
bean id
=
"dataSource"
class
=
"com.powernode.spring6.beans.MyDataSource"
>
<
property name
=
"driver"
value
=
"${driver}"
/>
<
property name
=
"url"
value
=
"${url}"
/>
<
property name
=
"username"
value
=
"${username}"
/>
<
property name
=
"password"
value
=
"${password}"
/>
</
bean
>