一、阐述:

IoC:我们以前写的框架虽然我们已经进行分层,web、业务层、持久层。但是各个层之间的关系。耦合性比较高,那个层调用其他层的时候,需要new对应层的类的对象,这样的话,我们以后做修改的时候,需要更改各个层的调用。

耦合性比较高,不利于维护。

而Spring提出一个IoC的方式管理各个层的资源。

IoC:inverse of  control(控制反转),也就是各个资源的实例的话权限交给spring框架。

底层也是通过工厂模式,通过配置文件方式,将每层需要的资源注入到各个层中。这种方式的开发是目前主流的开发方式。

新老旧对比:

二:入门

1)准备工作:

spring版本:spring-framework-4.2.4.RELEASE-dist.zip

下载地址:http://repo.springsource.org/libs-release-local/org/springframework/spring/

包说明:

1:spring依赖的包,比如说需要导入其他的包,common.io 。。。这个包里有。

2:是spring框架使用需要的包。

其中lib里有我们需要的jar包

这里jar包都是3个:

第一个是我们使用的jar包。

第二个是是文档jar包。

第三个是源码jar包。

3:第三个是我们使用的文档j压缩包。

2)导入的jar包:我们先看下spring的结构

核心core  container:是底层spring  核心容器是(IoC部分)实现任何功能都需要这个核心容器,分别是:Beans配置、Core、Context、以及表达式。

分别对应下面jar包:

导入如上jar包。

日志jar包:

1:是日志规范

2:是日志实现类。

如果在运行的时候报错 文件名太长,请修改目录的文件名字即可。

日志配置文件:log4j.properites 将日志配置文件拷贝到src下面。

配置文件:

 ### 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' ### log4j.rootLogger=info, stdout

使用日志:

测试类:通过静态方法getLogger获取日志的对象。

 package jd.com.log4jtest;

 import org.apache.log4j.Logger;
import org.junit.Test; public class log4jTest {
private Logger logger=Logger.getLogger(log4jTest.class);
@Test
public void test(){
logger.info("输出日志了。");
} }

格式:log4j+class名称。

3)IoC实例:

配置文件:applicationContext.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.xsd"> <bean id="userservice" class="jd.com.IoC.UserServiceImpl"/> </beans>

1、首先约束:在解压包里:spring-framework-4.2.4.RELEASE-dist\spring-framework-4.2.4.RELEASE\docs\spring-framework-reference\html内的html文件:xsd-configuration.html 打开网页在网页的最下面有bean的约束就IoC的约束:

标签bean,内的属性di和class。id是调用的时候名称,需要唯一。class是哪个类需要spring管理。是类的全路径。xml文件放在src下面。

接口:ApplicationContext的实现类ClassPathXmlApplicationContext 参数是xml文件路径。

代码:(以后再写类的时候,最好写一个接口,一个实现类的形式。)

接口:

 package jd.com.IoC;

 public interface UserSerivce {
void sayOk();
}

实现类:

 package jd.com.IoC;

 public class UserServiceImpl implements  UserSerivce {
@Override
public void sayOk() {
System.out.println("OK");
}
}

测试方法:

 package jd.com.IoC;

 import org.junit.Test;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext; public class Testemo {
@Test
public void testUserService(){
UserSerivce userSerivce= new UserServiceImpl();
userSerivce.sayOk();
}
@Test
public void testUserService1(){
ApplicationContext ac=new ClassPathXmlApplicationContext("applicationContext.xml");
UserServiceImpl userSerivc= (UserServiceImpl) ac.getBean("userservice");
userSerivc.sayOk();
} @Test
public void testUserService2(){
ApplicationContext ac=new ClassPathXmlApplicationContext("applicationContext.xml");
UserSerivce userSerivce= (UserSerivce) ac.getBean("userservice");
userSerivce.sayOk();
} }

这里有三个测试方法:

1、是传统以前使用的方法,哪个类在使用哪个资源的时候,哪个类有控制该资源的权限。

2、使用的实现类的方式。

3、使用接口的方式。

推荐第三种方式。原因,如果接口有多个实现类,在调用的时候无需写多个调用方法。

JAVA框架 Spring 入门的更多相关文章

  1. 框架-spring入门总结

    框架-spring入门总结 参考: http://www.cnblogs.com/heavenyes/p/3908546.html http://www.cnblogs.com/heavenyes/p ...

  2. Java框架spring Boot学习笔记(六):Spring Boot事务管理

    SpringBoot和Java框架spring 学习笔记(十九):事务管理(注解管理)所讲的类似,使用@Transactional注解便可以轻松实现事务管理.

  3. Java框架spring 学习笔记(十八):事务管理(xml配置文件管理)

    在Java框架spring 学习笔记(十八):事务操作中,有一个问题: package cn.service; import cn.dao.OrderDao; public class OrderSe ...

  4. Java框架spring 学习笔记(十四):注解aop操作

    回见Java框架spring Boot学习笔记(十三):aop实例操作,这里介绍注解aop操作 首先编写一个切入点HelloWorld.java package com.example.spring; ...

  5. Spring框架---Spring入门

    Spring入门 为了能更好的理解先讲一些有的没的的东西: 什么是Spring Spring是分层的JavaSE/EE full-stack(一站式) 轻量级开源框架 分层 SUN提供的EE的三层结构 ...

  6. 对Java框架spring、hibernate、Struts的粗浅理解

    对 Struts 的理解:1. struts 是一个按 MVC 模式设计的 Web 层框架,其实它就是一个大大的 servlet,这个Servlet 名为 ActionServlet,或是 Actio ...

  7. Java框架spring 学习笔记(六):属性注入

    属性注入:创建对象的时候,向类里面的属性设置值. Java属性注入有三种方法: 使用set方法注入 有参数构造注入 使用接口注入 Spring框架里面的属性注入方式 有参数构造属性注入 set方法属性 ...

  8. Java框架spring 学习笔记(三):Bean 的生命周期

    当一个 bean 被实例化时,它可能需要执行一些初始化使它转换成可用状态.当bean不再需要,并且从容器中移除时,需要做一些清除工作.为了定义安装和拆卸一个 bean,我们只要声明init-metho ...

  9. Java框架spring 学习笔记(二):Bean的作用域

    Spring 框架Bean支持以下五个作用域: 下面介绍两种作用域,singleton和protoype singleton作用域 singleton作用域为默认作用域,在同一个ioc容器内getBe ...

随机推荐

  1. Vue之组件使用(一)

    这仅仅是个人为了防止忘记做的笔记而已,仅供参考,有不对的地方请纠正 组件这种东西用来封装多次使用的控件还是很有用处的,我还是挺喜欢这种模式,优化了前端的工作,写个组件也比较简单.下次有时间记录一下样式 ...

  2. JavaOne 2016主旨演讲畅谈Java近期及远期规划

    在 JavaOne 2016 主题演讲开场,来自 Oracle 的 Java 产品管理负责人 Sharat Chander 指出 Java 盛行于个人和工作的日常生活各个领域,无论是大数据.物联网甚至 ...

  3. python基础训练题1-列表操作

    1,在列表末尾添加一个值 >>> l = [ 10, 20 ] >>> l [10, 20] >>> l.append( 'ghostwu' ) ...

  4. POJ2195&&HDU1533(KB11-D 最小费用最大流)

    Going Home Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 23515   Accepted: 11853 Desc ...

  5. 【学习笔记】--- 老男孩学Python,day3 while 循环 运算符 逻辑、赋值运算

    1. 循环. while循环 while 条件: 代码块(循环体) 执行流程: 1. 判断条件是否为真. 如果真. 执行代码块 2. 再次判断条件是否为真...... 3. 当条件为假.执行else ...

  6. for循环中嵌套setTimeout,执行顺序和结果该如何理解?

    这两天在捣鼓作用域的问题,有的时候知识这个东西真的有点像是牵一发而动全身的感觉.在理解作用域的时候,又看到了一道经典的面试题和例子题. 那就是在for循环中嵌套setTimeout延时,想想之前面试的 ...

  7. Android Studio引用自定义的framework.jar包

    1.在app/libs/目录下添加framework.jar包. 2.打开build->Edit Libraries and Dependencies,把libs/framework.jar放到 ...

  8. [Java][读书笔记]多线程编程

    前言:最近复习java,发现一本很好的资料,<J​a​v​a​2​参​考​大​全​ ​(​第​五​版​)​> ​ ​H​e​r​b​e​r​t​.Schildt.书比较老了,06年的,一些 ...

  9. 标准JSF的生命周期

    JavaServer Faces (JSF) 是一种用于构建Java Web 应用程序的标准框架.它提供了一种以组件为中心的用户界面(UI)构建方法,从而简化了Java服务器端应用程序的开发.它的生命 ...

  10. LeetCode题解之Palindromic Substrings

    1.问题描述 2.问题分析 对于每一个字符,以该字符为中心计算回文个数. 3.代码 int countSubstrings(string s) { ; ) ; ; i < s.size(); i ...