Spring简介
- Spring是一个轻量级框架,用于代替EGB。主要目的是使Java EE和已经存在的其他技术能被更方便的使用,通过配置管理机制(xml文件)来识别业务对象。
- Spring框架是一个基于Java的开源开发平台,目标在于通过POJO-based基于简单java对象来进行一个良好的编程实践,提供一个简单方法来配置和解决依赖关系,通过控制反转IoC来实现。
目的: - 减少关联性很强的编码/研究工作:减轻许多关于处理依赖关系的请求,把依赖关系分离到xml文件而不是业务逻辑代码中,可以更好地管理依赖关系。
- 灵活性:提供了和其他几个框架的继承接口,开发人员可以自由选择适合他们的模型
Spring框架组成部分
由7个件/模块来组成,每个模块都有明确的功能定义,可以独立使用。Spring为每个模块提供集成接口来和其他框架协同工作。
- AOP的全称是Aspect-Oriented Programming,即面向切面编程(也称面向方面编程)。它是面向对象编程(OOP)的一种补充,目前已成为一种比较成熟的编程方式。
- Spring Core:所有Spring框架都依赖于core组件,也可以作为控制反转IoC,支持创建、管理对象和其他共通应用服务。主要package包括:Core package:BeanFactory(为依赖注入提供支持)、Context package:Application Context(提供应用框架服务)
- MVC框架是一个对于建立web应用的功能全面的MVC实现。
配置Beans
把所有beans聚集在一起在Spring容器中被叫做wiring,wiring可以通过xml来实现。支持wiring的多种BeanFactories和ApplicationContext对象有:
- XmlBeanFactory
- ClassPathXmlApplicationContext
- FileSystemXmlApplicationContext
- XmlWebApplicationContext
属性的详细信息看这里
Set注入
hello.xml
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN/EN" "http://www.springframework.org/dtd/spring-beans.dtd">
<beans>
<bean id="hello" class="com.spring.HelloImpl" singleton ="false">
<property name="greeting">
<value>Good morning!...</value>
</property>
</bean>
<bean id="s" class="com.spring.SecondBean" />
<bean id="t" class="com.spring.ThirdBean" />
<bean id="f" class="com.spring.FirstBean">
<property name="s">
<ref bean="s" />
</property>
<property name="t">
<ref bean="t" />
</property>
<property name="list">
<list>
<value>aaa</value>
<value>bbb</value>
<value>bbb</value>
</list>
</property>
</bean>
</beans>
Hello.java
package com.spring;
public interface Hello {
public String sayHello(String s);
}
HelloImpl.java
package com.spring;
public class HelloImpl implements Hello {
private String greeting;
@Override
public String sayHello(String s) {
// TODO Auto-generated method stub
return greeting+s;
}
// 重点!设置属性的时候会调用这个set方法
public void setGreeting(String a) {
greeting = a;
}
public HelloImpl() {
super();
// TODO Auto-generated constructor stub
System.out.println("Creating!");
}
};
HelloClient.java
package com.spring;
import org.springframework.beans.factory.BeanFactory;
import org.springframework.beans.factory.xml.XmlBeanFactory;
import org.springframework.core.io.ClassPathResource;
import org.springframework.core.io.Resource;
public class HelloClient {
public static void main(String[] args) {
Resource res = new ClassPathResource("hello.xml");
BeanFactory fact = new XmlBeanFactory(res);
// 面向接口编程,h代表具体实现类的方法
Hello h =(Hello)fact.getBean("hello");
String s = h.sayHello("User");
System.out.println(s);
Hello h1 =(Hello) fact.getBean("hello");
String s1 = h1.sayHello("User1");
System.out.println(s1);
FirstBean num = (FirstBean) fact.getBean("f");
System.out.println(num.sayHello("Go!"));
}
}
Constructor注入
在xml文件中配置
<constructor-arg index = "1"><ref bean = "firstBean"/></constructor-arg>
前端控制器
- 提供了所有请求都会调用的共通处理
- 处理关于管理内容提取、安全、视图或导航的请求
- 代表了一个可以调度视图或调用命令的调度组件。
简单的说就是接受所有的请求,调度servlet,进行后续的分发。
DispatcherServlet是MVC的前端控制器
@RequestMapping 代表了处理器映射