您现在的位置是:主页 > news > 广东工厂网站建设/青岛seo代理计费
广东工厂网站建设/青岛seo代理计费
admin2025/4/22 5:16:50【news】
简介广东工厂网站建设,青岛seo代理计费,苹果风格网站,做网站的文章bean标签的配置和Spring的属性注入 1.1 id和name的配置 id:使用了约束中的唯一约束,里面不能出现特殊字符name:没有使用约束中的唯一约束,(理论上可以出现重复,实际开发不能重复),…
广东工厂网站建设,青岛seo代理计费,苹果风格网站,做网站的文章bean标签的配置和Spring的属性注入
1.1 id和name的配置
id:使用了约束中的唯一约束,里面不能出现特殊字符name:没有使用约束中的唯一约束,(理论上可以出现重复,实际开发不能重复),…
bean标签的配置和Spring的属性注入
1.1 id和name的配置
- id:使用了约束中的唯一约束,里面不能出现特殊字符
- name:没有使用约束中的唯一约束,(理论上可以出现重复,实际开发不能重复),可以使用特殊字符
①name在Spring与Struts1整合的时候使用
②
1.2 Bean标签的生命周期的配置(了解)
init-method
在bean初始化的时候会运行destroy-method
工厂关闭的时候才会运行<bean是单例创建的>
1.3 Bean的作用范围的配置(重点)
scope Bean的作用范围
singleton
:默认的,Spring采用单例模式创建这个对象propotype
:多例模式(Struts2和Spring整合的时候用到)request
:应用在在web项目中,Spring创建这个对象后,将这个类存入到request中session
:应用在在web项目中,Spring创建这个对象后,将这个类存入到session中globalsession
:应用在在web项目中,必须在porlet环境下使用(比如map.baidu;wangpan.baidu等这种baidu的子域名),如果没有这种环境,如果配置了globalsession
和session
作用相同。
单例模式下,工厂关闭的时候对象才会被销毁
多例模式下,工厂关闭的时候对象无法被销毁
<bean id="customerIntImpl" class="demo2.CustomerIntImpl" init-method="setUp" destroy-method="destroy" scope="prototype"/>
1.4 Spring的属性注入
给Bean中的属性设置值
- 构造方法方式
public class test {private String name;private String password;public void test(String name,String password){this.name=name;this.password=password;}
}
- set方法方式
public class test {private String name;private String password;public void setName(String name){this.name=name;}public void setPassword(String password){this.password=password;}
}
- p名称空间注入
只有set方法方式初始化的类才能p注入
构造方法方式初始化的类不能p注入
applicationContext.xml
p名称空间注入普通属性
<!-- p名称空间注入方式======================== --><bean id="car201" class="demo3.Car2" p:name="奇瑞QQ" p:city="北京"/>
p名称空间注入对象属性
<!-- p名称空间注入方式======================== --><bean id="employee01" class="demo3.Employee" p:car-ref="car" p:name="东哥"/>
- SpEl的属性注入
SpEl:Spring Expression Language,Spring的表达式语言
SpEL注入只需要使用name+value就可实现对属性,对象,方法等的注入 |
---|
SpEL注入不需要使用ref即可实现对对象和方法的注入 |
---|
SpEL相对其它注入方式比较灵活,支持调用其他类的方法属性等 |
---|
SpEL相比p空间,p空间可以单行增加多个属性,SpEL比较灵活,但是需要多行 |
---|
SpEL注入普通属性
<!-- SpEL注入普通属性 --><bean id="car202" class="demo3.Car2"><property name="name" value="#{'三蹦子'}"/><property name="city" value="#{'宝鸡'}"/></bean>
SpEL注入对象,方法等属性
<!-- SpEL注入对象,方法,其他对象的属性等 --><bean id="employee02" class="demo3.Employee"><property name="name" value="#{'phyger'}"/><property name="car" value="#{car}"/></bean><!-- 创建一个CarInfo类,并且交给Spring进行管理 --><bean id="carInfo" class="demo3.CarInfo"/><!-- 调用上面的CarInfo类的属性和方法使用SpEL方式进行注入 --><bean id="car203" class="demo3.Car2"><property name="name" value="#{carInfo.name}"/><property name="city" value="#{carInfo.local()}"/></bean>
CarInfo类
public class CarInfo {private String name;public String getName() {return "摩托车";}public String local(){return "日本";}}
- 接口注入的方式(Spring不支持这种模式的注入)
接口
public interface Injection{public void setName(String name);}
实现类
public class tets implements Injection{private String name;@Overridepublic void setName(String name) {this.name=name;}
}
1.5 举个栗子(对象注入)
不难发现我们上面注入的都是普通类型的参数,对于对象属性注入如下:
Car类
package demo3;/*** Car类,使用构造方法方式进行属性注入** @author phyger* @project SpringLearning* @package demo3* @create 2018-11-28 14:35**/
public class Car {private String name;private Double price;public Car(String name, Double price) {this.name = name;this.price = price;}@Overridepublic String toString() {return "Car{" +"name='" + name + '\'' +", price=" + price +'}';}
}
给Car对象注入name和price属性
applicationContext.xml
<!-- ①构造方法的方式 --><bean id="car" class="demo3.Car"><constructor-arg name="name" value="宝马"/><constructor-arg name="price" value="2000000"/></bean>
Employee类
package demo3;/*** 员工类,含有对象属性** @author phyger* @project SpringLearning* @package demo3* @create 2018-11-28 15:00**/// Employee类有Car对象属性
public class Employee {private String name;private Car car;public void setName(String name) {this.name = name;}public void setCar(Car car) {this.car = car;}@Overridepublic String toString() {return "Employee{" +"name='" + name + '\'' +", car=" + car +'}';}
}
给Employee对象注入name和car属性
applicationContext.xml
<!-- set方法注入对象类型的属性 --><!-- value:设置普通类型的值;ref:这是其他类型的id或name --><!-- 这里注入了上面的car对象 --><bean id="employee" class="demo3.Employee"><property name="name" value="涛哥"/><property name="car" ref="car"/></bean>
编写测试方法
@Test/*** set方法进行对象属性的注入*/public void demo3(){ApplicationContext applicationContext =new ClassPathXmlApplicationContext("applicationContext.xml");Employee employee = (Employee) applicationContext.getBean("employee");System.out.println(employee);}
运行结果
Employee{name='涛哥', car=Car{name='宝马', price=2000000.0}}
1.6 举个栗子(集合注入)
附上src文档结构图
E:\ZZZZZZZZZZ\WORKSPACE\SPRINGLEARNING\SRC
│ applicationContext.xml
│
├─com
│ └─phyger
│ SpringTest.java
│ UserInt.java
│ UserIntImpl.java
│ UserIntImplNew.java
│
├─demo1
│ SpringDemo1.java
│ UserDAO.java
│ UserDAOHibernateImpl.java
│ UserDAOImpl.java
│
├─demo2
│ CustomerInt.java
│ CustomerIntImpl.java
│ Demo2Test.java
│
├─demo3
│ Car.java
│ Car2.java
│ CarInfo.java
│ Employee.java
│ SpringDemo.java
│
├─demo4
│ demo4Test.java
│ JiHeClass.java
│
└─testInjection.javatest.java
applicationContext.xml在根目录
接口,实现类,测试类都在同一包(路径)下
编写一个集合类
- 这个类中有一个数组arrs
- 一个列表list
- 一个集合set
- 一个字典map
package demo4;import java.util.Arrays;
import java.util.List;
import java.util.Map;
import java.util.Set;/*** 集合类型的属性注入** @author phyger* @project SpringLearning* @package demo4* @create 2018-11-29 20:16**/
public class JiHeClass {private String[] arrs;private List<String> list;private Set<String> set;private Map<String,String> map;public void setArrs(String[] arrs) {this.arrs = arrs;}public void setList(List<String> list) {this.list = list;}public void setSet(Set<String> set) {this.set = set;}public void setMap(Map<String, String> map) {this.map = map;}@Overridepublic String toString() {return "JiHeClass{" +"arrs=" + Arrays.toString(arrs) +", list=" + list +", set=" + set +", map=" + map +'}';}
}
将这个集合类交由Spring管理并且给这些集合注入值
applicationContext.xml
<!--集合类型的属性注入--><bean id="jihe" class="demo4.JiHeClass"><property name="arrs"><list><value>李老板</value><value>攀攀攀</value><value>贺老板</value></list></property><property name="set"><set><value>北京</value><value>西安</value><value>成都</value></set></property><property name="list"><list><value>China</value><value>American</value><value>Japan</value></list></property><property name="map"><map><entry key="aaa" value="111"/><entry key="bbb" value="222"/><entry key="ccc" value="333"/></map></property></bean>
编写测试类
demo4test.java
package demo4;import org.junit.Test;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;/*** demo4的测试类** @author phyger* @project SpringLearning* @package demo4* @create 2018-11-29 20:24**/
public class demo4Test {@Testpublic void demo4_01(){ApplicationContext applicationContext = new ClassPathXmlApplicationContext("applicationContext.xml");JiHeClass jiHeClass = (JiHeClass) applicationContext.getBean("jihe");System.out.println(jiHeClass);}
}
运行结果
JiHeClass{arrs=[李老板, 攀攀攀, 贺老板], list=[China, American, Japan], set=[北京, 西安, 成都], map={aaa=111, bbb=222, ccc=333}}