Spring 入门base
提起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.一个普通类
1 package cn.dawn.day01.service; 2 public class DawnService { 3 4 private String workInfo; 5 private Integer age; 6 public void work(){ 7 System.out.println("info"+workInfo); 8 } 9 10 @Override 11 public String toString() { 12 return "DawnService{" + 13 "workInfo='" + workInfo + '\'' + 14 ", age=" + age + 15 '}'; 16 } 17 18 public String getWorkInfo() { 19 return workInfo; 20 } 21 22 public void setWorkInfo(String workInfo) { 23 this.workInfo = workInfo; 24 } 25 26 public Integer getAge() { 27 return age; 28 } 29 30 public void setAge(Integer age) { 31 this.age = age; 32 } 33 }
3.大配置文件
1 <?xml version="1.0" encoding="UTF-8"?> 2 <beans xmlns="http://www.springframework.org/schema/beans" 3 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 4 xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd"> 5 6 <bean id="service" class="cn.dawn.day01.service.DawnService"> 7 <property name="workInfo" value="第一个Spring程序"></property> 8 <property name="age" value="12"></property> 9 </bean> 10 </beans>
4.单测
1 package cn.dawn.day01; 2 3 import cn.dawn.day01.service.DawnService; 4 import org.junit.Test; 5 import org.springframework.context.ApplicationContext; 6 import org.springframework.context.support.ClassPathXmlApplicationContext; 7 /** 8 * Created by Dawn on 2018/3/3. 9 */public class test20180303 { 10 @Test 11 /*入门案例*/ 12 public void t01(){ 13 ApplicationContext context=new ClassPathXmlApplicationContext("ApplicationContext01.xml"); 14 DawnService service = (DawnService) context.getBean("service"); 15 System.out.println(service); 16 } 17 }
在没有new 的情况下,就拿到了他的实现
ApplicationContext context=new ClassPathXmlApplicationContext("ApplicationContext01.xml");
还记得我提了的IOC吗?我不是说他把创建对象的控制权交给了Spring容器嘛,那么容器在什么时候创建对象呢,是getBean的时候吗?还是。。。。(小实验)
在刚才的那个普通类中,添加一个构造,如下
public DawnService(){
System.out.println("========================DawnService创建=======================");
}
运行结果:
结论就是Spring容器初始化的时候就把bean中的对象实例化了