初识 Spring(01)---(浅谈 Spring 框架)
浅谈 Spring 框架
Spring框架是分模块存在,除了最核心的Spring Core Container(即Spring容器)是必要模块之外,其他模块都是可选,视需要而定。大约有20多个模块。Spring的核心是控制反转(IoC)和面向切面(AOP)。
简单来说,Spring是一个分层的JavaSE/EE full-stack(一站式) 轻量级开源框架。
一般来说,Spring主要分为7个模块:
构建项目
文件目录:
代码:
配置文件: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="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.springframework.context.ApplicationContext; import org.springframework.context.support.ClassPathXmlApplicationContext; public class Test { public static void main(String[] args) { /*HelloWorld hw = new HelloWorld(); hw.say();*/ /* ApplicationContext ac = new ClassPathXmlApplicationContext("applicationContext.xml"); 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 ClassPathXmlApplicationContext("applicationContext.xml"); UserDaoOracleImpl ud = (UserDaoOracleImpl)ac.getBean("userDaoOracle"); ud.save(); } }
ClassPathXmlApplicationContext 创建了一个 spring 容器,在容器中加载了一个配置文件(applicationContext.xml)
通过配置文件可以读取到所有的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.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="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.springframework.context.ApplicationContext; import org.springframework.context.support.ClassPathXmlApplicationContext; public class Test { public static void main(String[] args) { ApplicationContext ac = new ClassPathXmlApplicationContext("applicationContext.xml"); /*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.xml中的调用即可
配置文件: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="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>
输出:

低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
初识 Spring(03)---(XML注入方式 / 注入类型)
XML注入方式 1.set 方式注入 2.构造方式注入 3.工厂方式注入 set 方式注入 1.ApplicationContext ac = new ClassPathXmlApplicationContext("applicationContext.xml"); 2.public class UserDaoImpl implements UserDao; 3.private UserDao dao; ClassPathXmlApplicationContext 创建了一个 spring 容器后,产生 UserDao 和 dao 对象,并且将 UserDao对象 设置到 dao对象的属性中,这是通过 set 方法设置的 文件目录: 代码:配置文件:applicationContext.xml <?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSche...
- 下一篇
python的变量
一.变量是什么 变量:就是一个名字,用来代表数据。 二.变量的创建 基本形态 变量名=数据 #举例 a=5 name = "关羽" 变异形态1 变量名=运算表达式 #举例 a=3+2 name = "关"+"羽" 变异形态2 变量名=函数返回值 #举例 def gethero(): return "关羽" name = gethero() 二.变量的命名规范 规则1:第一个字符必须是字母表中字母或下划线,不能是数字,标点等。 规则2:其他部分可以由字母、数字和下划线组成,不能有空格,标点等。 规则3:python对字母大小写敏感。 规则4:python的关键字不能作为变量名。 三.python的关键字 关键字:就是系统自己用的名字,我们不能拿来给变量命名。 ['False', 'None', 'True', 'and', 'as', 'assert', 'break', 'class', 'continue', 'def', 'del', 'elif', 'else', 'except', 'finally', 'for', 'from', 'global', 'if', 'impor...
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
推荐阅读
最新文章
- CentOS7编译安装Cmake3.16.3,解决mysql等软件编译问题
- Linux系统CentOS6、CentOS7手动修改IP地址
- CentOS7,8上快速安装Gitea,搭建Git服务器
- CentOS关闭SELinux安全模块
- SpringBoot2整合Thymeleaf,官方推荐html解决方案
- Docker安装Oracle12C,快速搭建Oracle学习环境
- CentOS8,CentOS7,CentOS6编译安装Redis5.0.7
- Docker快速安装Oracle11G,搭建oracle11g学习环境
- 设置Eclipse缩进为4个空格,增强代码规范
- CentOS8安装MyCat,轻松搞定数据库的读写分离、垂直分库、水平分库