spring 学习笔记1
来源:互联网 发布:有关人工智能爱情电影 编辑:程序博客网 时间:2024/05/19 23:57
spring的好处不用多说,无数的大中小企业都在用它。
万事开头难,从写一个spring控制台程序开始;
第一步:搭配学习环境; 我在家使用的是MyEclipse6.5集成环境,并且MyEclipse6.5自带了jre, 所以连jre都不用安装了。在xunlei上有下载,但是如果你也使用MyEclipse,希望你可以明白为什么MyEclipse自带的jre可以工作。
新建一个web project, 名字就叫作springapp。
右键点击springapp,察看java build path -> libraries属性:
正如你所看到的,开发环境自动把jre system lib放到本项目了, 所以自带的jre可以work,不过你开始可以点击Java Compiler来切换jre;如果你还不会安装jdk和jre, 建议你自己安装一个试试看。
第二步:获取spring; 在http://www.springsource.org/download下面选择下载最新的•Spring Framework 2.5.6.SEC01 ,建议下载spring-framework-2.5.6.SEC01-with-dependencies.zip,因为这个版本包含所有spring源码和第三方依赖包。必要的时候察看spring源码很重要。
解压刚下载的spring包。这个包有几个很重要的文件夹, 我用红色的标记出来。
第三步:拷贝必要的jar包; 把dist/modules下面的spring-beans,spring-context,spring-core,spring-orm, spring-jdbc, spring-web,spring-webmvc都拷贝到WebRoot/WEB-INF/lib下面;之所以拷贝这么多jar包,是因为他们都将很快被用到, 等你有经验之后你就知道哪些jar包都有哪些用处, 就可以随便添加,减少了。
第四步:编写bean定义文件;在src根目录下面建一个bean-test.xml,
- <beans xmlns="http://www.springframework.org/schema/beans"
- xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xmlns:context="http://www.springframework.org/schema/context"
- xmlns:tx="http://www.springframework.org/schema/tx"
- xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.5.xsd
- http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-2.5.xsd
- http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-2.5.xsd">
- <bean id="myBook" class="model.Book">
- <property name="id" value="000002" />
- <property name="name" value="Thinking in java" />
- <property name="author" value="Bruce Eckel" />
- <property name="price" value="2222" />
- </bean>
- </beans>
spring2.55 bean定义文件的命名空间臭长臭长,不容易记住,但是也没有必要记住,在spring解压目录下面有sample,在里面找一个applicationContext.xml,把内容拷贝过来,把里面去掉里面配置的bean和注释。
在src目录下面新建一个package,叫做model,以后所有的域对象都放在这个package里面;在里面新建一个pojo(普通的java bean),叫作Book;并且给他一个有参构造函数和toString方法以方便测试。
- package model;
- public class Book {
- private String id;
- private String name;
- private String author;
- private double price;
- public Book() {}
- public Book(String id, String name, String author, double price) {
- this.id = id;
- this.name = name;
- this.author = author;
- this.price = price;
- }
- public String getId() {
- return id;
- }
- public void setId(String id) {
- this.id = id;
- }
- public String getName() {
- return name;
- }
- public void setName(String name) {
- this.name = name;
- }
- public String getAuthor() {
- return author;
- }
- public void setAuthor(String author) {
- this.author = author;
- }
- public double getPrice() {
- return price;
- }
- public void setPrice(double price) {
- this.price = price;
- }
- public String toString(){
- return "id: " + id + "/nname: " + name + "/nauthor: " + author + "/nprice: " + price + "/n";
- }
- }
然后在bean-test.xml中配置一个bean,如上面xml文件所示,
第五步:写第一个主程序; 叫做TestSpring.java; 我喜欢把所有的测试类都放在一个叫做test的package里面
- package test;
- import model.Book;
- import org.springframework.context.ApplicationContext;
- import org.springframework.context.support.ClassPathXmlApplicationContext;
- public class TestSpring {
- public static void main(String[] args) {
- ApplicationContext context = new ClassPathXmlApplicationContext("bean-test.xml");
- Book book = (Book)context.getBean("myBook");
- System.out.println(book.toString());
- }
- }
运行代码,发现抛错,是找不到LogFactory,这是因为spring使用了apache的commons-logging包来写日志。在spring解压目录的lib/jakarta-commons下面把commons-logging, commons-dbcp, commons-io, commons-pool都拷贝到WEB-INF/lib目录,因为剩下几个jar也很快就会被用到。以后因为缺少jar包报错的事情还会有很多,要随即应变,把jar包拷贝过来即可。
现在程序可以运行了,并且打印出了book的信息。
现在我们来分析一下这个spring控制台程序。
添加几个jar包,写一个配置文件,然后写一个主程序,spring已经开始运行了,看来没有想象中的神秘;这个程序作了这样几个工作:启动一个IOC容器,ApplicationContext就是我们的IOC容器,这个容器从指定的classpath下面的配置文件中读取bean配置,并且实例化他们,然后context.getBean("bean name")就可以得到想要的bean, 然后就可以使用这个bean. 这个程序与传统的程序最大的不同,就是不再使用new来创造对象, 就是说对象之间的依赖关系不再明文写在代码中,而是采用配置文件来配置他们,然后由IOC容器来装配他们,这就是spring最重要的概念之一:依赖注入.
明天将继续讲IOC容器.
- Spring学习笔记1
- Spring学习笔记1
- spring学习笔记1
- Spring学习笔记1
- Spring学习笔记(1)
- spring学习笔记1
- spring学习笔记1
- Spring学习笔记(1)
- Spring学习笔记(1)
- Spring学习笔记(1)
- Spring学习笔记1
- spring学习笔记1
- spring学习笔记1
- Spring学习笔记1
- Spring 学习笔记 - 1
- spring学习笔记1
- Spring学习笔记1
- spring 学习笔记1
- Improving neural networks by preventing co-adaptation of feature detectors (译文)
- android——RelativeLayout相对布局 相对对齐各属性值
- MonkeyDevice API 教程
- TUTK p2p视频流H.264 iOS平台解码成功
- 新学期 开学‘礼’- 迅为iTOP-4412开发板 初学嵌入式首选
- spring 学习笔记1
- Bean的两种依赖注入方式
- Linux下使用MySQL"load data infile"出错的问题
- iis访问数据的问题
- Unity3D架构系列之- FSM有限状态机设计四
- Cocos2d-x从入门到精通第八课《坐标系统》
- hdu5416 树上XOR
- LeetCode -- WordBreak II
- Linux的信号 SIGALRM和SIGINT的使用示例