spring02依赖注入DI
来源:互联网 发布:项城市乡镇人口数据 编辑:程序博客网 时间:2024/04/23 23:09
Ioc的另外一个名字叫依赖注入,讲的是同一个事情,只是站在不同的角度看待问题。
1.依赖注入 dependency injection
依赖:指bean对象的创建依赖于容器。bean对象的依赖资源。
注入:指bean对象依赖的资源由容器来设置和装配。
2.spring注入:构造器的注入·
3.spring注入:setter注入
要求被注入的属性必须有set方法,set方法的方法名由set+首字母大写。如果是boolean,没有get方法,是is.
a)常量注入:
package vo;public class Student {private String name;public void setName(String name) {this.name = name;}public void show(){System.out.println("name="+name);}}
<bean name="student" class="vo.Student"><property name="name" value="张三丰" /></bean>b)对象注入(bean注入)
package vo;
public class Student {private String name;private Address addr;public void setName(String name) {this.name = name;}public void setAddr(Address addr) {this.addr = addr;}public void show(){System.out.println("name="+name);System.out.println("name="+addr);}}
package vo;public class Address {private String address;public String getAddress() {return address;}public void setAddress(String address) {this.address = address;}}<bean id="address" class="vo.Address"></bean>
<bean id="student"class="vo.Student">
<property name="name" value="zhangsanfeng"></property>
<property name="address" ref="address"></property>
</bean>
c)数组注入
package vo;public class Student {private String name;private Address addr;private String[] books;public void setName(String name) {this.name = name;}public void setAddr(Address addr) {this.addr = addr;}public void show(){System.out.println("name="+name);System.out.println("name="+addr.getAddress());System.out.println("books="+books[0]);}public void setBooks(String[] books) {this.books = books;}}
<property name="books">
<array>
<value>三毛</value>
<value>1毛</value>
</array>
</property>
</bean>d)List注入
Student.java
private List<String> hobbys;
public void setHobbys(List<String> hobbys) {
this.hobbys = hobbys;
}beans.xml
<property name="hobbys">
<list>
<value>看书</value>
<value>写字</value>
</list>
</property>e)map的注入:
<property name="cards">
<map>
<entry key="中国银行" ></entry>
<entry>
<key><value>工商银行</value></key>
<value>123424342323</value>
</entry>
<entry key="农业银行" value="123435345"></entry>
</map>
</property>f)set 注入:
<property name="games">
<set>
<value>lol</value>
<value>saaed</value>
</set>
</propertyg)Null注入:
<property name="wife"><null></null></property>
h)Properties注入:
<property name="info">
<props>
<prop key="学号">3020432</prop>
<prop key="sex">男</prop>
</props>
</property>I)p-namespace p命名空间注入
需要在头文件中加入:xml
xmlns:p="http://www.springframework.org/schema/p"
<!-属性依然要设置set方法->
<bean id="user" class="vo.User" p:name ="namespace" p:age="23">
J) c注入
需要在头文件中加入:xml
xmlns:c="http://www.springframework.org/schema/c"
<bean id="u1" class="vo.User" c:name="noto" c:age="21" ></bean>
要求有对应参数的构造方法
package vo;public class User {private String name;private String age;public User() {}public void setName(String name) {this.name = name;}public void setAge(String age) {this.age = age;}@Overridepublic String toString() {return "User [name=" + name + ", age=" + age + "]";}}
bean的作用域:scope:singleton 单例(单例模式,整个容器中只有1个对象的实例)默认是单例的<bean id="u1" class="vo.User" scope="singleton"></bean>
prototype:原型每次获取bean的时候都产生1个新的对象
<bean id="u1" class="vo.User" scope="prototype"></bean>
request:每次请求时,创建一个新的对象
<bean id="u1" class="vo.User" scope="request"></bean>
session: 在会话的范围内是1个对象
<bean id="u1" class="vo.User" scope="session"></bean>
global session 只在portlet下应用 表示application
application 在一个应用范围中是1个对象(spring4中特有的)
注:在整合struts2和spring时 需要将action设置为scope=“prototype”
- spring02依赖注入DI
- spring(依赖注入-DI)
- Spring DI 依赖注入
- DI依赖注入
- Spring-DI(依赖注入)
- Spring依赖注入DI
- Spring 依赖注入(DI)
- Spring DI[依赖注入]
- Spring DI(依赖注入)
- Spring依赖注入(DI)
- 依赖注入DI
- Spring依赖注入DI
- 依赖注入(DI)
- 依赖注入(DI)
- 依赖注入IOC/DI
- 依赖注入DI
- spring依赖注入(DI)
- Spring 依赖注入(DI)
- H: Skiing
- 前端面试经
- Hibernate 基于List集合映射
- 浅析Javascript匿名函数与自执行函数
- 2017 ACM-ICPC 亚洲区(乌鲁木齐赛区)网络赛-H Skiing
- spring02依赖注入DI
- 字符串碎片问题,例如“aaabbaaac”是由下面碎片组成“aaa”,"bb","c",则计算所有碎片的平均长度
- web.xml
- Hibernate 基于map集合映射
- redis 基本类型
- 背包问题(0-1背包、完全背包、多重背包)详解
- 最大长方形(二)nsoj 258
- 2017ACM新疆区域赛网络赛A题和C题
- 2017 ACM-ICPC 亚洲区(乌鲁木齐赛区)网络赛(G. Query on a string)kmp+线段树