Spring高级进阶

Java代码

1. <?xml version="1.0" encoding="UTF-8"?>
2. <!DOCTYPE beans Public "-//SPRING//DTD BEAN//EN"
3. "http://www.springframework.org/dtd/spring-beans.dtd">
4. <beans>
5. <bean id ="HelloWorld" class="com.jnotnull.HelloWorld">
6. <property name ="message">
7. <value>HelloWorld</value>
8. </property>
9. <bean>
10. </beans>

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE beans Public "-//SPRING//DTD BEAN//EN"
"http://www.springframework.org/dtd/spring-beans.dtd">
<beans>
<bean id ="HelloWorld" class="com.jnotnull.HelloWorld">
<property name ="message">
<value>HelloWorld</value>
</property>
<bean>
</beans>


这里在配置bean的时候都指明了id,id是这个bean在配置文件中的唯一标识,当然也可以使用name,下面说说它们之间的区别:
id属性是在配置文件中标识Bean的,name属性则可以用来指定这个Bean的别名。因为XML规范对于id的合法字符有严格的规定,所以当用非法字符来配置id时候就不行了,这个时候可以通过name属性来解决。同时通过name属性可以指定多个id,这些id要用都好或者分号分割。
正如上面的代码中提到的格式
<bean id ="HelloWorld" class="com.jnotnull.HelloWorld">
id属性用来表示整个bean,class属性用来表示这个bean真正代表的类,它是由路径加;类名组成。

在Spring中,Bean可以被定义为两种模式:单例模式和非单例模式(singleton or non-singleton)。而Spring默认的是单例模式,何谓单例模式,就是这个Bean只有一个实例存在,而不管有多少个对这个Bean的请求。而非单例模式则回在每次对这个Bean的请求中产生新的实例。简单的说就是:singleton只会被new一次,而non-singleton却在每次请求的时候都new一次。这就是区别。
上面提到,Spring中,Bean默认的模式是单例模式,我们来看看它的代码:
Java代码

1. <?xml version="1.0" encoding="UTF-8"?>
2. <!DOCTYPE beans Public "-//SPRING//DTD BEAN//EN"
3. "http://www.springframework.org/dtd/spring-beans.dtd">
4. <beans>
5. <bean id ="HelloWorld" class="com.jnotnull.HelloWorld">
6. <property name ="message">
7. <value>HelloWorld</value>
8. </property>
9. <bean>
10. </beans>

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE beans Public "-//SPRING//DTD BEAN//EN"
"http://www.springframework.org/dtd/spring-beans.dtd">
<beans>
<bean id ="HelloWorld" class="com.jnotnull.HelloWorld">
<property name ="message">
<value>HelloWorld</value>
</property>
<bean>
</beans>


当然我们可以显式的配置为singleton模式
Java代码

1. <?xml version="1.0" encoding="UTF-8"?>
2. <!DOCTYPE beans Public "-//SPRING//DTD BEAN//EN"
3. "http://www.springframework.org/dtd/spring-beans.dtd">
4. <beans>
5. <bean id ="HelloWorld" class="com.jnotnull.HelloWorld" singleton="true">
6. <property name ="message">
7. <value>HelloWorld</value>
8. </property>
9. <bean>
10. </beans>

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE beans Public "-//SPRING//DTD BEAN//EN"
"http://www.springframework.org/dtd/spring-beans.dtd">
<beans>
<bean id ="HelloWorld" class="com.jnotnull.HelloWorld" singleton="true">
<property name ="message">
<value>HelloWorld</value>
</property>
<bean>
</beans>


而要改为non-singleton模式则把singleton属性改为false就行了


在Spring的配置文件中,我们完成了对类的属性的注入:看看下面的代码:
Java代码

1. <?xml version="1.0" encoding="UTF-8"?>
2. <!DOCTYPE beans Public "-//SPRING//DTD BEAN//EN"
3. "http://www.springframework.org/dtd/spring-beans.dtd">
4. <beans>
5. <bean id ="HelloWorld" class="com.jnotnull.HelloWorld">
6. <property name ="message">
7. <value>HelloWorld</value>
8. </property>
9. <bean>
10. </beans>

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE beans Public "-//SPRING//DTD BEAN//EN"
"http://www.springframework.org/dtd/spring-beans.dtd">
<beans>
<bean id ="HelloWorld" class="com.jnotnull.HelloWorld">
<property name ="message">
<value>HelloWorld</value>
</property>
<bean>
</beans>


这里的propeity标签对应于类中的属性,但是如何对其注入null值呢:
看看下面的代码:
Java代码

1. <?xml version="1.0" encoding="UTF-8"?>
2. <!DOCTYPE beans Public "-//SPRING//DTD BEAN//EN"
3. "http://www.springframework.org/dtd/spring-beans.dtd">
4. <beans>
5. <bean id ="HelloWorld" class="com.jnotnull.HelloWorld">
6. <property name ="message">
7. <value>null</value>
8. </property>
9. <bean>
10. </beans>

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE beans Public "-//SPRING//DTD BEAN//EN"
"http://www.springframework.org/dtd/spring-beans.dtd">
<beans>
<bean id ="HelloWorld" class="com.jnotnull.HelloWorld">
<property name ="message">
<value>null</value>
</property>
<bean>
</beans>


或者
Java代码

1. <?xml version="1.0" encoding="UTF-8"?>
2. <!DOCTYPE beans Public "-//SPRING//DTD BEAN//EN"
3. "http://www.springframework.org/dtd/spring-beans.dtd">
4. <beans>
5. <bean id ="HelloWorld" class="com.jnotnull.HelloWorld">
6. <property name ="message">
7. <null/>
8. </property>
9. <bean>
10. </beans>

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE beans Public "-//SPRING//DTD BEAN//EN"
"http://www.springframework.org/dtd/spring-beans.dtd">
<beans>
<bean id ="HelloWorld" class="com.jnotnull.HelloWorld">
<property name ="message">
<null/>
</property>
<bean>
</beans>


配置同样非常方便
下面我们来看看如何实现依赖 depends-on
先看一下代码
Java代码

1. <?xml version="1.0" encoding="UTF-8"?>
2. <!DOCTYPE beans Public "-//SPRING//DTD BEAN//EN"
3. "http://www.springframework.org/dtd/spring-beans.dtd">
4. <beans>
5. <bean id ="HelloWorld" class="com.jnotnull.HelloWorld" depends="date">
6. <property name ="message">
7. <value>HelloWorld</value>
8. </property>
9. <property name ="date">
10. <ref local="date"/>
11. </property>
12. <bean>
13. <bean id="date" class="java.util.Date">
14. </beans>

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE beans Public "-//SPRING//DTD BEAN//EN"
"http://www.springframework.org/dtd/spring-beans.dtd">
<beans>
<bean id ="HelloWorld" class="com.jnotnull.HelloWorld" depends="date">
<property name ="message">
<value>HelloWorld</value>
</property>
<property name ="date">
<ref local="date"/>
</property>
<bean>
<bean id="date" class="java.util.Date">
</beans>


在这里我们在调用HelloWorld之前我们就必须调用date,对date进行初始化。这就是depends-on的工作方式。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值