8Spring初步----青软S2SH(笔记)






例子:
bean.xml
<?xml version="1.0" encoding="UTF-8"?>
<beans
xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="
http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-4.1.xsd">
<bean id="book" class="com.qst.chapter08.Book">
<property name="name" value="SSH开发" />
<property name="author" value="qst" />
<property name="publishHouse" value="某出版社" />
<property name="price" value="70.25" />
</bean>
</beans>
测试代码
import org.springframework.beans.factory.support.DefaultListableBeanFactory;
import org.springframework.beans.factory.xml.XmlBeanDefinitionReader;
import org.springframework.core.io.ClassPathResource; public class BeanFactoryExample { public static void main(String[] args) {
// 根据配置文件创建ClassPathResource对象
ClassPathResource resource = new ClassPathResource("com/qst/chapter08/bean.xml");
// 创建BeanFactory对象
DefaultListableBeanFactory factory = new DefaultListableBeanFactory();
XmlBeanDefinitionReader reader = new XmlBeanDefinitionReader(factory);
reader.loadBeanDefinitions(resource);
// 从BeanFactory对象中,根据id获取具体对象
Book book = (Book) factory.getBean("book"); System.out.println(book.getName());
System.out.println(book.getAuthor());
System.out.println(book.getPublishHouse());
System.out.println(book.getPrice());
}
}




ApplicationContext的例子
public class ApplicationContextExample {
public static void main(String[] args) {
ClassPathXmlApplicationContext context = new ClassPathXmlApplicationContext("com/qst/chapter08/bean.xml");
Book book = (Book) context.getBean("book");
System.out.println(book.getName());
System.out.println(book.getAuthor());
System.out.println(book.getPublishHouse());
System.out.println(book.getPrice());
context.close();
}
}




例如
<?xml version="1.0" encoding="UTF-8"?>
<beans
xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="
http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-4.1.xsd">
<!--配置bean-->
</beans>




测试类不变,需要改变bean和配置文件,测试类里的调用方法不变:
bean中加一个构造方法,配置文件中加入这个构造方法的相关配置
public class Order {
private int id;
private String orderNo; // 订单编号
private double amount; // 订单金额
private Object[] myArray;
private List<?> myList;
private Set<?> mySet;
private Map<?, ?> myMap;
private Properties myProp;
public Order(int id, String orderNo) {
this.id = id;
this.orderNo = orderNo;
}
//其他省略
}
<bean id="order" class="com.qst.chapter08.config.Order">
<constructor-arg name="id" value="100" />
<constructor-arg name="orderNo">
<value>ABCDEF</value>
</constructor-arg>
<property name="amount">
<value>5678.123</value>
</property> <!--其他省略-->
</bean>





示例如下:
public class Order {
private int id;
private String orderNo; // 订单编号
private double amount; // 订单金额
private Object[] myArray;
private List<?> myList;
private Set<?> mySet;
private Map<?, ?> myMap;
private Properties myProp;
public Order(int id, String orderNo) {
this.id = id;
this.orderNo = orderNo;
}
public int getId() {
return id;
}
public String getOrderNo() {
return orderNo;
}
public void setOrderNo(String orderNo) {
this.orderNo = orderNo;
}
public double getAmount() {
return amount;
}
public void setAmount(double amount) {
this.amount = amount;
}
public Object[] getMyArray() {
return myArray;
}
public void setMyArray(Object[] myArray) {
this.myArray = myArray;
}
public List<?> getMyList() {
return myList;
}
public void setMyList(List<?> myList) {
this.myList = myList;
}
public Set<?> getMySet() {
return mySet;
}
public void setMySet(Set<?> mySet) {
this.mySet = mySet;
}
public Map<?, ?> getMyMap() {
return myMap;
}
public void setMyMap(Map<?, ?> myMap) {
this.myMap = myMap;
}
public Properties getMyProp() {
return myProp;
}
public void setMyProp(Properties myProp) {
this.myProp = myProp;
}
}
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="
http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-4.1.xsd">
<bean id="order" class="com.qst.chapter08.config.Order">
<constructor-arg name="id" value="100" />
<constructor-arg name="orderNo">
<value>ABCDEF</value>
</constructor-arg>
<property name="amount">
<value>5678.123</value>
</property> <property name="myArray">
<array>
<value>1234</value>
<ref bean="orderItem1" />
</array>
</property> <property name="myList">
<list>
<value>1234</value>
<ref bean="orderItem1" />
</list>
</property> <property name="mySet">
<set>
<value>1234</value>
<ref bean="orderItem1" />
</set>
</property> <property name="myMap">
<map>
<entry key="1" value="1234" />
<entry key="2" value-ref="orderItem1" />
</map>
</property> <property name="myProp">
<props>
<prop key="aaa">AAA</prop>
<prop key="bbb">BBBBB</prop>
</props>
</property>
</bean> <bean id="orderItem1" class="com.qst.chapter08.config.OrderItem" >
<property name="id" value="1" />
<property name="product" value="电视机" />
<property name="price" value="3000" />
<property name="count" value="4" />
</bean> </beans>

这里的继承指的是配置信息的重用,跟面向对象里的继承毫无关系.


前置依赖是指,有时要求Bean A的初始化必须在Bean B的初始化之后,而B并不是A的属性.这种情况下,无法通过ref来保证B先初始化,所以Spring提供了depends-on.




这里重点说一下by Type,by Type方式只根据类型与否匹配来决定是否注入依赖关系,加入A实例有setB(B b)方法,而Spring配置文件中恰好有一个类型B的Bean实例,则Spring会注入此实例,如果容器总没有一个类型为B的实例或多于一个的B实例,则都会抛出异常.
8Spring初步----青软S2SH(笔记)的更多相关文章
- 5Hibernate入门----青软S2SH(笔记)
这里有个问题,就是这本书第五章的示例代码中的hibernate的jar包有问题,各种找不到类,把lib下的包后换成第六章里的包就好了. 换成5.1的就好了,而且如果只是简单使用hibernate的话, ...
- 1JavaEE应用简介----青软S2SH(笔记)
这本书主要是讲解Struts2,spring,Hibernate框架的, 因为工作中用的较多的是SpringMVC,Struts2用的较少,所以想系统学习一下,就买了这本书. 这本书是青软的,虽然是培 ...
- GIFT-EMS礼记----青软S2SH(笔记)
这个S2SH的项目,是这本书的一个贯穿项目,所以这里要记录一下, 看这个项目有两个目的: 1.借助这个项目,学习一下S2SH的综合配置及使用 2.借助这个项目练习一下如何做需求分析和项目架构设计. P ...
- 10Spring高级----青软S2SH(笔记)
- 9Spring进阶----青软S2SH(笔记)
- 7Hibernate高级----青软S2SH(笔记)
- 6Hibernate进阶----青软S2SH(笔记)
关于关联关系的配置,用注解配置如下(这里引用的jar包是javax.persistence) // @ManyToOne(fetch=FetchType.LAZY) @ManyToOne(fetch= ...
- 5Hibernate配置及使用方法----青软S2SH(笔记)
关于hibernate的简单配置,先看结构图,我们需要 1.还要弄一下需要的 jar包. 2.配置两个文件(hibernate配置文件和映射文件),不过映射文件可以用注解替代. 3.写一个pojo类, ...
- 4Struts2标签库----青软S2SH(笔记)
这里弄错了,这一堆属性是<datetimepicker>标签的,不是<doubleselect>标签的 输出错误信息这个不错,挺方便的. 这个树形标签,也用了好多网络,分析如下 ...
随机推荐
- JavaScript错误/异常处理
JavaScript Try...Catch 语句 介绍:JavaScript中的try...carch语句的作用和C#中的try...catch语句的作用一样, 都是捕获并处理异常. 语法: try ...
- MTU(Maximum transmission unit) 最大传输单元
最大传输单元(Maximum transmission unit),以太网MTU为1500. 不同网络MTU如下: 如果最大报文数据大小(MSS)超过MTU,则会引起分片操作. 路径MTU: 网路 ...
- Prometheus 系统监控方案 二 安装与配置
下载Prometheus 下载最新安装包,本文说的都是在Linux x64下面内容,其它平台没尝试过,请选择合适的下载. Prometheus 主程序,主要是负责存储.抓取.聚合.查询方面. Aler ...
- 3-EM的安装和使用
EM的安装和使用 一.EM工具的安装和使用 1.保证数据库启动 2.保证侦听启用 3.通过这个命令可以查看到侦听端口1521的状态信息 4.启动em工具 5.查看em工具是否运行 6.登陆网站并进行操 ...
- 用C++开发Binder服务
用C++来实现Binder服务比较麻烦,原因是没有AIDL的辅助,必须手工来写中间的代码. 首先写一个服务类ExampleServer的代码: class ExampleServer : public ...
- WPF 开发 WebBrowser
WebBrowser WebBrowser 报错如何屏蔽 CEF(Chromium Embedded Framework) 参考 WPF, Chrome Embedded and WebA ...
- Hibernate入门学习-安装hibernate插件
最近一直在学习ssh框架,为了更方便hibernate的使用,所以在eclipse下载hibernate插件,安装插件有两种方法 第一种:本地安装 1).插件的官网下载地址:http://tools. ...
- 一枚招聘信息——微信支付web前端开发工程师【已招到】
已招到 工作地点: 深圳 职位类别: 技术类 招聘人数: 1人 工作职责: 负责微信支付h5应用产品的前端开发:负责微信支付营销活动,h5游戏的开发:负责微信支付内部平台的开发与日常维护 工作要求: ...
- LLDB基础知识
LLDB基础知识 LLDB控制台 Xcode中内嵌了LLDB控制台,在Xcode中代码的下方,我们可以看到LLDB控制台. LLDB控制台平时会输出一些log信息.如果我们想输入命令调试,必须让程序进 ...
- Salesforce Apex 开发环境设置和Hello World示例
本文介绍了Salesforce Apex开发环境的设置以及一个简单的Hello World示例的实现过程. Salesforce开发环境 Salesforce通过http://developer.fo ...