Spring(1)—初识
来源:互联网 发布:狸窝mp4视频转换器mac 编辑:程序博客网 时间:2024/06/04 19:08
- Spring是一个开放源代码的设计层面框架,他解决的是业务逻辑层和其他各层的松耦合问题,因此它将面向接口的编程思想贯穿整个系统应用。
- 特点:
轻量——从大小与开销两方面而言Spring都是轻量的。
控制反转——Spring通过一种称作控制反转(IoC)的技术促进了低耦合。
面向切面——Spring提供了面向切面编程的丰富支持,允许通过分离应用的业务逻辑与系统级服务(例如审计(auditing)和事务(transaction)管理)进行内聚性的开发
容器——Spring包含并管理应用对象的配置和生命周期
其中最重要的就是AOP和IOC - 一个HelloWorld案例
1.jar包
commons-logging-1.1.1.jarspring-aop-4.0.0.RELEASE.jarspring-beans-4.0.0.RELEASE.jarspring-context-4.0.0.RELEASE.jarspring-core-4.0.0.RELEASE.jarspring-expression-4.0.0.RELEASE.jar
2.类HelloWorld
public class HelloWorld { public void hello(){ System.out.println("欢迎学习Spring框架!"); }}
3.新建配置文件applicationContext.xml(已经安装了Spring插件),并添加配置
<?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-3.2.xsd"><!-- 配置Bean --> <bean id="helloWorld" class="com.test.hello.HelloWorld"></bean></beans>
4.测试类TestHelloWorld
import org.springframework.context.ApplicationContext;import org.springframework.context.support.ClassPathXmlApplicationContext;public class TestHelloWorld { public static void main(String[] args) { //1.加载applicationContext.xml文件 ApplicationContext ctx = new ClassPathXmlApplicationContext("applicationContext.xml"); //2.获取配配置中的实例 HelloWorld helloWorld = (HelloWorld) ctx.getBean("helloWorld"); helloWorld.hello(); }}
运行结果:
Biz's setter...(这行字符是下一个案例中输出的,用于说明,一旦加载了applicationContext.xml配置文件中的Bean不管有没有执行这段代码,Spring容器都会立即向setter方法中执行注入)欢迎学习Spring框架!
4 . 一个login案例
因为上一个案例已经把jar包导进来了所以直接上代码
①目录结构
②接口及接口的实现类
接口:UserBiz、UserDAO
实现类:UserBizImpl、UserDAOImpl
//UserBizpublic interface UserBiz { public boolean login(String username, String password);}//UserBizImplimport com.test.login.Biz.UserBiz;import com.test.login.dao.UserDAO;public class UserBizImpl implements UserBiz { //使用userDAO接口声明一个对象 UserDAO userDAO; //并为其添加set方法,用于依赖注入 public void setUserDAO(UserDAO userDAO) { this.userDAO = userDAO; System.out.println("Biz's setter..."); } @Override public boolean login(String username, String password) { return userDAO.login(username, password); }}//UserDAOpublic interface UserDAO { public boolean login(String username, String password);}//UserDAOImplimport com.test.login.dao.UserDAO;public class UserDAOImpl implements UserDAO { @Override public boolean login(String username, String password) { if(username.equals("admin") && password.equals("123")){ return true; } return false; }}
③配置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-3.2.xsd"><!-- 配置Bean --> <bean id="helloWorld" class="com.test.hello.HelloWorld"></bean><!-- 配置创建UserDAOImpl的实例 --> <bean id="userDAO" class="com.test.login.dao.Impl.UserDAOImpl"></bean><!-- 配置创建UserBizImpl的实例,其实现原理是使用反射机制 --> <bean id="userBiz" class="com.test.login.Biz.Impl.UserBizImpl"> <!-- 引用UserDAOImpl的Bean实例,其实现原理是使用setter方法 --> <property name="userDAO" ref="userDAO"></property> </bean></beans>
④测试类TestSpringDI
import org.springframework.context.ApplicationContext;import org.springframework.context.support.ClassPathXmlApplicationContext;import com.test.login.Biz.UserBiz;public class TestSpringDI { public static void main(String[] args) { ApplicationContext ctx = new ClassPathXmlApplicationContext("applicationContext.xml"); UserBiz userBiz = (UserBiz) ctx.getBean("userBiz"); System.out.println(userBiz.login("admin", "123")); }}
⑤结果:
Biz's setter...true
阅读全文
0 0
- Spring(1)—初识
- 【Spring3】(1)初识Spring
- Spring学习1-初识Spring
- Spring学习笔记(1)——初识Spring
- 初识Spring——whySpring
- 初识Spring——AOP
- 001——初识Spring
- 菜鸟学习Spring——初识Spring
- Spring笔记——初识Spring
- Spring学习笔记(1)---------初识Spring
- Spring(1)--初识Spring之HelloWorld
- Spring学习(1)------初识Spring
- 初识spring
- 初识Spring
- 初识Spring
- Spring初识
- Spring 初识
- 初识Spring
- Qualcomm平台camera调试移植
- ios auto sizing cell遇到的坑(estimatedRowHeight的重要性)
- 共同学习Java源代码-数据结构-HashMap(十六)
- MyBatis的Mapper接口以及Example的实例函数及详解
- 软件测试中我们一般会遇到三角形和年月日的问题
- Spring(1)—初识
- Uva 10391
- JAVA 基础知识 数组
- 设计模式(4)-抽象工厂模式及抽象工厂与工厂模式的区别
- Javascript模块化编程(三):require.js的用法
- mysql(10):基础,ORDER 子句的语法介绍
- MobileNets: Efficient Convolutional Neural Networks for Mobile Vision Applications论文笔记
- jQuery –AJAX
- day04_innerHTML属性