浅谈 Spring 框架
Spring框架是分模块存在,除了最核心的Spring Core Container(即Spring容器)是必要模块之外,其他模块都是可选,视需要而定。大约有20多个模块。Spring的核心是控制反转(IoC)和面向切面(AOP)。简单来说,Spring是一个分层的JavaSE/EE full-stack(一站式) 轻量级开源框架。
一般来说,Spring主要分为7个模块:
构建项目
文件目录:
代码:
配置文件:applicationContext.
<? version="1.0" encoding="UTF-8"?><beans ns="http://www.spring work.org/schema/beans" ns:xsi="http://www.w3.org/2001/ Schema-instance" xsi:schemaLocation="http://www.spring work.org/schema/beans http://www.spring work.org/schema/beans/spring-beans.xsd"> <bean id="hello" class="com.neuedu.hello.HelloWorld"></bean> <bean id="userDaoOracle" class="com.neuedu.dao.impl.UserDaoOracleImpl"></bean></beans>Test.java
package com.neuedu.test;import com.neuedu.hello.HelloWorld;import com.neuedu.service.UserService;import com.neuedu.dao.impl.UserDaoOracleImpl;import org.spring work.context.ApplicationContext;import org.spring work.context.support.ClassPath ApplicationContext;public class Test { public static void main(String[] args) { /*HelloWorld hw = new HelloWorld(); hw.say();*/ /* ApplicationContext ac = new ClassPath ApplicationContext("applicationContext. "); HelloWorld hw = (HelloWorld)ac.getBean("hello"); hw.say(); HelloWorld hw2 = (HelloWorld)ac.getBean("hello"); System.out.println(hw == hw2);*/ /*UserService us = new UserService(); us.save();*/ ApplicationContext ac = new ClassPath ApplicationContext("applicationContext. "); UserDaoOracleImpl ud = (UserDaoOracleImpl)ac.getBean("userDaoOracle"); ud.save(); } }ClassPath ApplicationContext 创建了一个 spring 容器,在容器中加载了一个配置文件(applicationContext. )
通过配置文件可以读取到所有的bean标签(id/class)
通过 class 可以 new 一个对象,class.forName("com.neuedu.hello.HelloWorld").newInstance();
UserDao.java
package com.neuedu.dao;public interface UserDao { public void save();}UserService.java
package com.neuedu.service;import com.neuedu.dao.UserDao;import com.neuedu.dao.impl.UserDaoOracleImpl;import com.neuedu.dao.impl.UserDaoMysqlImpl;public class UserService { //UserDaoOracleImpl dao = new UserDaoOracleImpl(); //UserDaoMysqlImpl udml = new UserDaoMysqlImpl(); UserDao dao = new UserDaoMysqlImpl();//new UserDaoOracleImpl(); public void save() { dao.save(); //dao.insert(); }} UserDaoMysqlImpl.java
package com.neuedu.dao.impl;import com.neuedu.dao.UserDao;public class UserDaoMysqlImpl implements UserDao{ public void save() { System.out.println("通过mysql数据库将用户信息保存到数据库中"); }}UserDaoOracleImpl.java
package com.neuedu.dao.impl;import com.neuedu.dao.UserDao;public class UserDaoOracleImpl implements UserDao{ public void save() { System.out.println("通过oracle数据库将用户信息保存到数据库中"); } /*public void insert() { System.out.println("通过mysql数据库将用户信息保存到数据库中"); }*/}输出:
改进:控制反转(IOC)
上面的方法,UserDao 注入是通过 UserService 自身 new 一个 dao 实现类 下面方法 将控制权交给 sping 容器,因为Service 和
Dao 都在 spring中,故当 Service 需要 Dao 时,会自动将 dao 的实现类的对象放入 Service 中
配置文件:applicationContext.
<? version="1.0" encoding="UTF-8"?><beans ns="http://www.spring work.org/schema/beans" ns:xsi="http://www.w3.org/2001/ Schema-instance" xsi:schemaLocation="http://www.spring work.org/schema/beans http://www.spring work.org/schema/beans/spring-beans.xsd"> <bean id="hello" class="com.neuedu.hello.HelloWorld"></bean> <bean id="userDaoOracle" class="com.neuedu.dao.impl.UserDaoOracleImpl"></bean> <bean id="userService" class="com.neuedu.service.UserService"> <!-- SQL注入 --> <property name="dao" ref="userDaoOracle"></property> </bean></beans> Test.java
package com.neuedu.test;import com.neuedu.hello.HelloWorld;import com.neuedu.service.UserService;import com.neuedu.dao.impl.UserDaoOracleImpl;import org.spring work.context.ApplicationContext;import org.spring work.context.support.ClassPath ApplicationContext;public class Test { public static void main(String[] args) { ApplicationContext ac = new ClassPath ApplicationContext("applicationContext. "); /*UserDaoOracleImpl ud = (UserDaoOracleImpl)ac.getBean("userDaoOracle"); ud.save();*/ UserService us = (UserService)ac.getBean("userService"); us.save(); } }UserService.java
package com.neuedu.service;import com.neuedu.dao.UserDao;import com.neuedu.dao.impl.UserDaoOracleImpl;import com.neuedu.dao.impl.UserDaoMysqlImpl;public class UserService { //UserDaoOracleImpl dao = new UserDaoOracleImpl(); //UserDaoMysqlImpl udml = new UserDaoMysqlImpl(); //UserDao dao = new UserDaoMysqlImpl();//new UserDaoOracleImpl(); private UserDao dao; public void save() { dao.save(); //dao.insert(); } public UserDao getDao() { return dao; } public void setDao(UserDao dao) { this.dao = dao; }} 输出:
好处:Service 和 Dao 彻底解耦,只需更改配置文件:applicationContext. 中的调用即可
配置文件:applicationContext.
<? version="1.0" encoding="UTF-8"?><beans ns="http://www.spring work.org/schema/beans" ns:xsi="http://www.w3.org/2001/ Schema-instance" xsi:schemaLocation="http://www.spring work.org/schema/beans http://www.spring work.org/schema/beans/spring-beans.xsd"> <bean id="hello" class="com.neuedu.hello.HelloWorld"></bean> <bean id="userDaoMysql" class="com.neuedu.dao.impl.UserDaoMysqlImpl"></bean> <bean id="userDaoOracle" class="com.neuedu.dao.impl.UserDaoOracleImpl"></bean> <bean id="userService" class="com.neuedu.service.UserService"> <!-- SQL注入 --> <property name="dao" ref="userDaoMysql"></property> </bean></beans> 输出:
继续阅读与本文标签相同的文章
-
Android 设置 横屏 竖屏
2026-05-26栏目: 教程
-
uses-permission权限列表
2026-05-26栏目: 教程
-
delegate委托的例子,实现对Form中控件的更新
2026-05-26栏目: 教程
-
C#中用WMI实现对驱动的查询
2026-05-26栏目: 教程
-
WMI_COM_API
2026-05-26栏目: 教程
