一、Spring介绍
作用:项目管理(Object, Controller, Service, DAO)
设计模式:工厂模式
二、Spring工程搭建
1.创建demo项目:
mvn archetype:generate
2.添加依赖:
<dependencies> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-context-support</artifactId> <version>5.2.7.RELEASE</version> </dependency> </dependencies>
包括beans, core, context, expression等
3.创建接口demo.dao.UserDAO.java:
package demo.dao; public interface UserDAO { public void insertUser(); }
4.创建实现类demo.dao.UserDAOImpl.java:
package demo.dao; public class UserDAOImpl implements UserDAO { public void insertUser() { System.out.println("insert user..."); } }
5.添加资源文件resources/applicationContext.xml:
<?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="userDAO" class="demo.dao.UserDAOImpl"></bean> </beans>
6.编写main方法:
package demo; import org.springframework.context.ApplicationContext; import org.springframework.context.support.ClassPathXmlApplicationContext; import org.springframework.context.ConfigurableApplicationContext; import demo.dao.UserDAO; public class App { public static void main( String[] args ) { ApplicationContext context = new ClassPathXmlApplicationContext("applicationContext.xml"); UserDAO userDAO = context.getBean("userDAO", UserDAO.class); userDAO.insertUser(); ((ConfigurableApplicationContext)context).close(); } }
基本的demo就完成了。
可能有人会觉得奇怪,“你做了这么多工作,其结果不就是new了一个UserDAO对象嘛”,在这里,spring这么做是为了解决项目中的强耦合问题。
例如,增加一个UserDAOImpl2的实现,对应的bean的创建完全由spring来完成,其他对UserDAO引用的类无需做任何修改,这就是设计模式中的开闭原则:“对扩展开放,对修改关闭”。
补充:解决The compiler compliance specified is 1.5 but a JRE 1.8 is used警告问题,在pom.xml中添加:
<build> <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-compiler-plugin</artifactId> <version>3.8.1</version> <configuration> <source>1.8</source> <target>1.8</target> </configuration> </plugin> </plugins> </build>