提起Spring,就会想到企业级框架这个词

  企业级系统:

    1.大规模:用户数量多,数据规模庞大,数据众多

    2.性能和安全性要求更高

    3.业务复杂

    4.灵活应变

我觉得先了解一下Spring的地位和他的作者比较好

Spring 的作者:Rod Johnson

 他是SpringFramework创始人,interface21 CEO

  丰富的C/C++背景,丰富的金融行业背景

  1996年开始关注java服务器端技术

  2002年著写《Expoert one-on-oneJ2EE设计与开发》,改变了Java世界

  技术主张以实用为本,音乐学博士

接下来讲讲Spring的内容,放俩张图片

Spring 的官网

官网:Spring.io

Spring的核心IOC和AOP(本处详解IOC)

  IOC:控制反转:(Inverse Of Control)
      控制反转(Inversion of Control),是一个重要的面向对象编程的法则来削减计算机程序的耦合问题,也是轻量级的Spring框架的核心,beans。
      理解一:将组件对象(业务对象)的控制权从代码本身转移到外部容器()
      理解二:IOC控制反转:说的是创建对象实例的控制权从代码控制剥离到IOC容器(spring容器)控制,实际就是你在xml文件控制,侧重于原理。

  AOP:面向切面编程;  (Aspect Oritend Programming)

  提及一下对象间的关系把

由于在此我使用 的meven  所以在此 我提供一下我的jar包

<!--单元测试的依赖  ctrl+shif+/-->

        <dependency>

            <groupId>junit</groupId>

            <artifactId>junit</artifactId>

            <version>4.12</version>

            <scope>test</scope>

           </dependency>

        <!--Spring-->

        <dependency>

            <groupId>org.springframework</groupId>

            <artifactId>spring-beans</artifactId>

            <version>4.2.0.RELEASE</version>

        </dependency>

        <dependency>

            <groupId>org.springframework</groupId>

            <artifactId>spring-context</artifactId>

            <version>4.2.0.RELEASE</version>

        </dependency>

        <!--aop使用的jar-->

        <dependency>

            <groupId> org.aspectj</groupId >

            <artifactId> aspectjweaver</artifactId >

            <version> 1.8.7</version>

        </dependency>    

2.一个普通类

 package cn.dawn.day01.service;
public class DawnService { private String workInfo;
private Integer age;
public void work(){
System.out.println("info"+workInfo);
} @Override
public String toString() {
return "DawnService{" +
"workInfo='" + workInfo + '\'' +
", age=" + age +
'}';
} public String getWorkInfo() {
return workInfo;
} public void setWorkInfo(String workInfo) {
this.workInfo = workInfo;
} public Integer getAge() {
return age;
} public void setAge(Integer age) {
this.age = age;
}
}

   3.大配置文件

 <?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="service" class="cn.dawn.day01.service.DawnService">
<property name="workInfo" value="第一个Spring程序"></property>
<property name="age" value="12"></property>
</bean>
</beans>

  4.单测

 package cn.dawn.day01;

 import cn.dawn.day01.service.DawnService;
import org.junit.Test;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
/**
* Created by Dawn on 2018/3/3.
*/public class test20180303 {
@Test
/*入门案例*/
public void t01(){
ApplicationContext context=new ClassPathXmlApplicationContext("ApplicationContext01.xml");
DawnService service = (DawnService) context.getBean("service");
System.out.println(service);
}
}

在没有new 的情况下,就拿到了他的实现

ApplicationContext context=new ClassPathXmlApplicationContext("ApplicationContext01.xml");

  还记得我提了的IOC吗?我不是说他把创建对象的控制权交给了Spring容器嘛,那么容器在什么时候创建对象呢,是getBean的时候吗?还是。。。。(小实验)

    在刚才的那个普通类中,添加一个构造,如下

  public DawnService(){

   System.out.println("========================DawnService创建=======================");

   }

 运行结果:

结论就是Spring容器初始化的时候就把bean中的对象实例化了

最新文章

  1. redis 操作
  2. lr中switch的应用
  3. Flat UI
  4. 开放产品开发(OPD):开篇
  5. GDC2016 【巫师3 狂猎】的游戏事件工作流
  6. 阻止PHP彩蛋信息泄漏 [转]
  7. Oracle 通过触发器 来创建 同步临时表 及处理 通过 自治事务 来解决 查询 基表的问题
  8. MongoDb 2.4 beta新特性——全文索引
  9. java 覆盖hashCode()深入探讨 代码演示样例
  10. Redis 性能测试
  11. 看文档要看仔细,英语要加强啊... cocos2d-x 的 API 和 对应版本的 cocos2d-js 的 API 没有完全对应
  12. tcp_tw_recycle和tcp_timestamps的文章汇总
  13. iOS开发实战-时光记账Demo 本地数据库版
  14. win10 安装docker
  15. CPU UsageTimes Profile (cpu=times)
  16. 杀掉所有 skynet 进程
  17. bzoj4807 車
  18. bzoj千题计划159:bzoj2055: 80人环游世界(有源汇上下界可行最小费用流)
  19. Matlab绘图基础——利用axes(坐标系图形对象)绘制重叠图像 及 一图多轴(一幅图绘制多个坐标轴)
  20. 基于ASP.NET生成条形码(code128)

热门文章

  1. mysql_用户_操作
  2. JavaScript正则中\1\2的作用
  3. HTML页面布局
  4. jenkins配置SVN报错
  5. 我的Android进阶之旅------>Android的ListView数据更新后,如何使最新的条目可以自动滚动到可视范围内?
  6. hdu 2112 HDU Today(map与dijkstra的结合使用)
  7. RemoveDuplicatesfromSortedArray
  8. 爬虫、网页测试 及 java servlet 测试框架等介绍
  9. Java设计模式之《单例模式》及应用场景(转发:http://www.cnblogs.com/V1haoge/p/6510196.html)
  10. C#数组实践