Spring是java web开发中应用很广的java EE框架之一,它的主要思想是IOC(控制反转)和AOP(面向切面编程),它经常和struts、hibernate一起使用,合称ssh。
IOC控制反转
IOC也叫做DI(Dependency Injection,依赖注入)。传统程序中,如果要使用一个类,就要new一个对象Person p1 = new Person("Lily")
;而在Spring中是一种完全不同的方法,下面是个简单的例子(使用maven来管理jar包):
IDao.java:
package com.yeetrack.mavenSpring;public interface IDao{ public String sayHello(String name);}
实现IDao接口,DaoImpl.java:
package com.yeetrack.mavenSpring;public class DaoImpl implements IDao{ public String sayHello(String name) { // TODO Auto-generated method stub return "Hello, "+name; }}
新建业务接口,IService.java:
package com.yeetrack.mavenSpring;public interface IService{ public void sayHello(String name);}
实现IService接口:
package com.yeetrack.mavenSpring;public class ServiceImpl implements IService{ private IDao dao; //定义一个IDao对象 public void sayHello(String name) //实现IService接口中的方法 { // TODO Auto-generated method stub System.out.println(dao.sayHello(name)); } public IDao getDao() { return dao; } public void setDao(IDao dao) { this.dao = dao; }}
下面在applicationContext.xml中配置ServiceImpl和DaoImpl:
OK,现在配置完成,我们可以通过applicationContext来获取ServiceImpl实例了。在贴出自己的pom.xml文件内容:
4.0.0 com.yeetrack mavenSpring war 0.0.1-SNAPSHOT mavenSpring Maven Webapp http://maven.apache.org junit junit 3.8.1 test org.springframework spring-core 3.2.2.RELEASE org.springframework spring-context 3.2.2.RELEASE mavenSpring
测试我们配置的applicationContext文件,新建SpringTest.java文件:
package com.yeetrack.mavenSpring;import org.springframework.context.ApplicationContext;import org.springframework.context.support.ClassPathXmlApplicationContext;public class SpringTest{ public static void main(String[] args) { //获取ApplicationContext容器,会默认寻找classpath路径,如果没找到xml文件,也可以手动指定applicationContext.xml文件的路径 ApplicationContext context = new ClassPathXmlApplicationContext("applicationContext.xml"); IService hello = (IService) context.getBean("service"); hello.sayHello("Good Day!"); }}
OK,运行即可。在代码运行时,spring会根据applicationContext.xml文件的配置来加载相应的java bean,并通过反射机制调用getter和seter方法设置bean之间的依赖。