先前粗浅地学过Spring框架,但当时忙于考试及后期实习未将其记录,因而趁着最近还有几天的空闲时间,将其稍微整理一下,以备后期查看。java
spring是J2EE应用程序框架,是轻量级的IoC和AOP的容器框架,主要是针对javaBean的生命周期进行管理的轻量级容器。可单独使用,一般也与其余框架整合使用,例如SSH、SSM。
spring
IOC:控制反转session
控制权由对象自己转向容器;由容器根据配置文件去建立实例并建立各个实例之间的依赖关系。等同于DI依赖注入app
AOP:面向切面框架
下面举个例子HelloWOrld:学习
1 package per.zww.spring.beans; 2 3 public class HelloWorld { 4 public HelloWorld() { 5 // TODO Auto-generated constructor stub 6 System.out.println("Constractor..."); 7 } 8 9 private String name; 10 11 public void setName(String name) { 12 System.out.println("setter..."); 13 this.name = name; 14 } 15 16 public void hello() { 17 System.out.println("hello:"+name); 18 } 19 }
若是咱们不使用IOC而调用类里面的hello()的话,咱们的Main类会这样写:this
1 public class Main { 2 public static void main(String[] args) { 3 HelloWorld helloWorld=new HelloWorld(); 4 helloWorld.setName("zhaoww"); 5 helloWorld.hello(); 6 } 7 }
而当咱们使用IOC,则不须要自行new一个对象,也不需setName。只须要这样写:spa
public class Main { public static void main(String[] args) { //建立IOC容器,类路径加载配置文件 ApplicationContext applicationContext=new ClassPathXmlApplicationContext("applicationContext.xml"); //获取bean,也可用其余方法 HelloWorld helloWorld2= (HelloWorld) applicationContext.getBean("helloWorld"); helloWorld2.hello(); } }
固然咱们仍是要配置xml文件的,配置文件以下:prototype
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 --> 7 <bean id="helloWorld" class="per.zww.spring.beans.HelloWorld"> 8 <property name="name" value="zhaoww"></property> 9 </bean> 10 11 </beans>
具体来看:
Spring提供两种的IOC容器
1.BeanFactory
2.ApplicationContext [基本都用这个]
是BeanFactory的子接口code
注入方式
1.属性注入 最经常使用
2.构造器注入
默认index顺序
同时也可经过指定参数类型以区分重载的构造器
3.工厂注入[不常使用]
bean的配置要点
1.经过反射的机制,因此必须有无参构造器
2.name 必须与getter相对应
3.property除了value,还能用ref指向一个对象
4.可用p标签等简化书写
自动装配[我的以为不建议使用]
autowire(一样是在xml文件里的)
1.byType >1 抛出异常
2.byName setter属性名匹配则装配,不然不装配(ref)
3.构造器(不推荐)
Bean之间关系
1.继承
parent属性
2.依赖
depends-on属性,依赖的Bean必须在本Bean实例化以前建立好
Bean的做用域 scope 默认的做用域,Bean是单例的 <bean id="" class="" scope="singleton/prototype(原型)/request(少)/session(少)"></bean> singleton:容器初始化时是便已建立好Bean,单例 prototype:容器初始化时不建立Bean实例,而在每次请求时建立新的实例 (ps:struts2整合)