步骤一:下载Spring开发包。

   官网:https://spring.io/           下载地址:https://repo.spring.io/libs-release-local/org/springframework/spring/

    spring-framework-3.0.2.RELEASE-dependencies和spring-framework-4.2.4.RELEASE-dist 解压第二个,解压目录:

    

步骤二:搭建项目,引入Spring项目

  

创建项目:由于Spring是JavaSE/EE一站式框架,所以既可以创建web项目或者java项目,这里创建web项目。

导入jar:Spring框架搭建肯定需要核心包,上面Core Container里面四个就是核心,其他的,需要什么功能添加哪个jar,在libs里面找。还有spring已经弄好的日志记录包,在dependencies里面log4j和commons包下

步骤三:引入相关配置文件(在src下创建)

log4j.properties

### direct log messages to stdout ###
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.Target=System.err
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=%d{ABSOLUTE} %5p %c{}:%L - %m%n ### direct messages to file mylog.log ###
log4j.appender.file=org.apache.log4j.FileAppender
log4j.appender.file.File=c\:mylog.log
log4j.appender.file.layout=org.apache.log4j.PatternLayout
log4j.appender.file.layout.ConversionPattern=%d{ABSOLUTE} %5p %c{}:%L - %m%n ### set log levels - for more verbose logging change 'info' to 'debug' ###
# error warn info debug trace
log4j.rootLogger= info, stdout

applicationContext.xml文件(Spring的核心配置文件)

  头部引入:在解压下来的spring-framework-4.2.4.RELEASE-dist\docs\spring-framework-reference\html\xsd-configuration.html里面就有配置文件头部schema约束

<?xml version="1.0" encoding="UTF-8"?>
<beans
xmlns="http://www.springframework.org/schema/beans"
xmlns:p="http://www.springframework.org/schema/p"
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.xsd"> <!-- 配置,将实现类的对象创建交给Spring管理
bean标签:
id:给bean起个名字,唯一,不能重复,不能出现特殊字符,就看做根据面向接口编程new出来的实例
class:类的全路径,底层根据全路径生成实例
-->
<bean id="userDao" class="cn.xxx.dao.impl.UserDaoImpl">
<!-- 属性依赖注入,底层会自动封装,只要在dao实现类提供属性和set方法就行 -->
<property name="name" value="张三"></property>
</bean>
</beans>

UserDaoImpl.java(UserDao接口的实现)

package cn.xxx.dao.impl;

import cn.xxx.dao.UserDao;

/**
*@param
*@author cxh
*/
public class UserDaoImpl implements UserDao {
private String name; public void setName(String name) {
this.name = name;
} @Override
public void insert() { System.out.println(name+"用户信息插入");
} }

测试类:

  

    @Test
public void demo1() {
// 通过加载配置文件创建Spring工厂类(框架默认加载路径在src下,所以完全可以将配置文件放在一个目录下)
ApplicationContext applicationContext = new ClassPathXmlApplicationContext("/config/applicationContext.xml");
// 通过工厂来解析XML获取Bean的实例
UserDao userDao = (UserDao) applicationContext.getBean("userDao");
userDao.insert();
}

运行结果:

log4j:WARN No appenders could be found for logger (org.springframework.core.env.StandardEnvironment).
log4j:WARN Please initialize the log4j system properly.
张三用户信息插入

上面就是基于Spring的IOC的搭建。

  IOC:控制反转,将对象的创建权交给Spring

  DI:依赖注入,前提必须有IOC的环境,Spring在管理这个类的时候顺便会注入类的依赖的属性。

  对于上面applicationContext.xml文件里面bean标签还要在说:

 bean的生命周期配置(其实就是dao实现类实例的生命周期)

  •   init-method.属性:值可以随便取,Spring会帮创建一个初始化方法,当创建Dao实例时,默认加载,但是方法体为空,需要在dao实现类里面定义该值方法名的方法,里面写一些初始化加载东西。
  • destroy-method属性:和上面初始化用法一样,不过是销毁Dao实例后才会加载,也就是说工厂关闭了就销毁了。

 bean的作用范围配置(scope属性):

   singleton:默认的,Spring会采用单例模式创建这个对象

    prototype:  多例模式(Spring和Struts2整合时候用到,值栈是需要多例创建)

   request: Spring创建这个类后,将这个类存入到request域中,应用到web项目中。

     session: 同上,将类存到session域中。

   globalSession:应用到web中,必须在porlet环境下使用,其实就是指在一个地方存入信息后,在其子系统中也用该信息,最典型的的是腾讯软件的登录,如qq和qq空间,没有prolet环境就相当普通session。

Spring框架学习-搭建第一个Spring项目的更多相关文章

  1. Spring框架学习(7)spring mvc入门

    内容源自:spring mvc入门 一.spring mvc和spring的关系 spring mvc是spring框架提供的七层体系架构中的一个层,是spring框架的一部分,是spring用于处理 ...

  2. Spring框架学习(1)Spring简介

    内容源自:Spring 框架简介 Spring 是一个开源框架,是为了解决企业应用程序开发复杂性而创建的.框架的主要优势之一就是其分层架构,分层架构允许您选择使用哪一个组件,同时为 J2EE 应用程序 ...

  3. Spring框架学习(4)spring整合hibernate

    内容源自:spring整合hibernate    spring整合注解形式的hibernate 这里和上一部分学习一样用了模板模式, 将hibernate开发流程封装在ORM层提供的模板类Hiber ...

  4. Spring框架学习(5)spring整合struts2

    内容源自:spring整合struts2 一.spring框架对struts等表现层框架的整合原理 : 使用spring的ioc容器管理struts中用于处理请求的Action 将Action配置成i ...

  5. Spring框架学习(10)Spring中如何使用事务?

    内容源自:Spring中如何使用事务? 一.为什么要使用事务? 如果我们一个业务逻辑只执行一次sql,是不需要使用事务的.但如果要执行多条sql语句才能完成一个业务逻辑的话,这个时候就要使用事务了. ...

  6. Spring框架学习(8)spring mvc上传下载

    内容源自:spring mvc上传下载 如下示例: 页面: web.xml: <?xml version="1.0" encoding="UTF-8"?& ...

  7. Spring框架学习(3)spring中使用jdbc

    内容源自:spring中使用jdbc spring dao层中对jdbc进行了封装,使用模板模式的设计模式,通过ioc被动注入的方式将jdbcTemplate这个模板类注入到数据对象中,进行数据库操作 ...

  8. spring框架学习(八)spring管理事务方式之注解配置

    1.DAO AccountDao.java package cn.mf.dao; public interface AccountDao { //加钱 void increaseMoney(Integ ...

  9. spring框架学习(七)spring管理事务方式之xml配置

    1.DAO AccountDao.java package cn.mf.dao; public interface AccountDao { //加钱 void increaseMoney(Integ ...

随机推荐

  1. 使用python转换markdown to html

    起因 有很多编辑器可以直接将markdown转换成html,为什么还要自己写呢?因为我想写完markdown之后,即可以保存在笔记软件中(比如有道),又可以放到github进行版本管理,还可以发布到博 ...

  2. 设计模式C++实现_2_简单工厂模式

    简单工厂模式 主要用于创建对象. 新加入类时. 不会影响曾经的系统代码. 核心思想是用一个工厂来依据输入的条件产生不同的类,然后依据不同类的 virtual 函数得到不同的结果. 以下以苹果手机的生产 ...

  3. com.squareup.timessquare.CalendarPickerView

    com.squareup.timessquare.CalendarPickerView https://github.com/square/android-times-square

  4. 利用shuf对数据记录进行随机采样

    最近在用SVM为分类器做实验,但是发现数据量太大(2000k条记录)但是训练时间过长...让我足足等了1天的啊!有人指导说可以先进行一下随机采样,再训练,这样对训练结果不会有太大影响(这个待考证).所 ...

  5. Activity并行网关和排他网关

    说一说activiti中的排他网关和并行网关 activiti工作流中我们经常用到的网关有两种: 1. Exclusive Gateway 排他网关 排他网关.png 排他网关(也叫异或(XOR)网关 ...

  6. [Codeforces 545E] Paths and Trees

    [题目链接] https://codeforces.com/contest/545/problem/E [算法] 首先求 u 到所有结点的最短路 记录每个节点最短路径上的最后一条边         答 ...

  7. python-----flask项目端口设置无效

    最近在做flask项目时发现了一个问题,在项目里写: app.run(host='0.0.0.0',port=9000) 但启动时,还是使用5000端口启动的. 后来经过测试,解决方法有两个: 如果启 ...

  8. Git 仓库结构 (二)***

    一.GIT工作流程 了解git,首先要弄清楚对象在被git管理过程中所处的4个阶段,分别是: 工作目录 index(又称为暂存区) 本地仓库 远程仓库. 从时间先后来讲,工作目录的内容是你当前看到的, ...

  9. Gym 100531G Grave(水题)

    题意:给定一个大矩形,再给定在一个小矩形,然后给定一个新矩形的长和高,问你能不能把这个新矩形放到大矩形里,并且不与小矩形相交. 析:直接判定小矩形的上下左右四个方向,能不能即可. 代码如下: #pra ...

  10. 洛谷P3569 [POI2014]KAR-Cards(线段树)

    传送门 蠢了…… 我们用线段树,记$w0$为该区间最左端取小值时,最右端最小能取大还是小还是无解,$w1$表示最左端取大值时,最右端最小能取大还是小还是无解 然后只要把交换看做修改就好了 这么说可能很 ...