spring框架简介
来源:互联网 发布:淘宝货到付款怎样开通 编辑:程序博客网 时间:2024/06/06 02:01
Spring是分层的JavaSE/EE full-stack(一站式) 轻量级开源框架。是为了解决企业应用程序开发复杂性而创建的。框架的主要优势之一就是其分层架构,分层架构允许您选择使用哪一个组件,同时为 J2EE 应用程序开发提供集成的框架。
Spring 框架由来 :
在2002 年 Rod Johnson 推出 Expert One-to-One J2EE Design and Development
在2004 年 推出 Expert One-to-One J2EE Development without EJB
Spring 出现,解决EJB 存在一些问题 , 因为EJB 比较繁重,复杂, Spring 比较轻便
Spring 好处 :
方便解耦,简化开发
AOP
声明式事务管理
方便程序测试, 整合junit (内嵌优秀测试框架)
Spring 几乎可以整合 业界所有优秀框架 (struts2 、hibernate 、 mybatis)
内置大量工具类,简化应用开发 ,例如:JdbcTemplate 、 javamail、 RMI
Spring 核心:
IOC(Inverse of Control) 控制反转
AOP ( Aspect Oriented Programming) 面向切面编程
IOC 和 AOP:
控制反转的基本概念是:不创建对象,但是描述创建它们的方式。在代码中不直接与对象和服务连接,但在配置文件中描述哪一个组件需要哪一项服务。容器 (在 Spring 框架中是 IOC 容器) 负责将这些联系在一起。
AOP,是一种编程技术,它允许程序员对横切关注点或横切典型的职责分界线的行为(例如日志和事务管理)进行模块化。
IOC和DI
IoC 反转控制的概念,就是将原本在程序中手动创建HelloService对象的控制权,交由Spring框架管理,简单说,就是创建HelloService对象控制权被反转到了Spring框架
对象创建权被反转到了容器
DI:Dependency Injection 依赖注入,在Spring框架负责创建Bean对象时,动态的将依赖对象注入到Bean组件
容器提供对象时,将依赖的对象一起提供给你
spring 入门demo:
spring开发的最少jar包
spring-beans
spring-core
spring-context
spring-expression
Spring开发,必须依赖commons-logging 日志包 (可以独立使用,也可以整合jdk日志或者 log4j 日志 )
整合log4j 复制jar到lib 、在src 建立log4j.properties
代码实现:
UserService接口:
package com.my.service;public interface UserService { // 登陆方法 public void login(); // 设置姓名 public void setUsername(String name);}
UserServiceImpl实现类:
package com.my.service;public class UserServiceImpl implements UserService{ // username 就是 UserServiceImpl 依赖一个对象 private String username; public UserServiceImpl() { System.out.println("user service 被构造..."); } @Override public void login() { System.out.println(username + " 用户登陆"); } public void setUsername(String username) { this.username = username; }}
配置文件,放置在src下:
log4j.properties
### direct log messages to stdout ###log4j.appender.stdout=org.apache.log4j.ConsoleAppenderlog4j.appender.stdout.Target=System.outlog4j.appender.stdout.layout=org.apache.log4j.PatternLayoutlog4j.appender.stdout.layout.ConversionPattern=%d{ABSOLUTE} %5p %c{1}:%L - %m%n### direct messages to file mylog.log ###log4j.appender.file=org.apache.log4j.FileAppenderlog4j.appender.file.File=c:/mylog.loglog4j.appender.file.layout=org.apache.log4j.PatternLayoutlog4j.appender.file.layout.ConversionPattern=%d{ABSOLUTE} %5p %c{1}:%L - %m%n### set log levels - for more verbose logging change 'info' to 'debug' ###log4j.rootLogger=info, stdout
applicationContext.xml
<?xml version="1.0" encoding="UTF-8"?><beans xmlns="http://www.springframework.org/schema/beans" xmlns:p = "http://www.springframework.org/schema/p" 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"> <!-- 1. 快速入门 --> <!-- 提供对象创建权 --> <!-- id 属性 bean唯一标识, class 创建对象完成类名 --> <bean id="userService" class="com.my.service.UserServiceImpl"> <!-- 在创建对象时,将其依赖属性 ,自动注入 --> <property name="username" value="testSpring"></property> </bean></beans>
测试文件:
package com.my.service;import org.junit.Test;import org.springframework.context.support.ClassPathXmlApplicationContext;public class Test2 { //没有spring容器 @Test public void demo1() { UserService service = new UserServiceImpl(); // 设置用户姓名(手动设置依赖) service.setUsername("test"); service.login(); } //使用Spring 容器管理UserService 实现对象 @Test public void demo2(){ // 1、 初始化Spring容器对象 //如果Spring配置文件 在src ---- 使用 ClassPathXmlApplicationContext 读取//如果Spring配置文件 在WEB-INF ---- 使用 FileSystemXmlApplicationContext 读取 ClassPathXmlApplicationContext applicationContext = new ClassPathXmlApplicationContext("applicationContext.xml"); // 2、 从容器获得需要Bean <bean id="userService" ..> // applicationContext对象 类似工厂对象 // 在Ioc 控制对象过程,根据属性依赖关系,完成自动注入 UserService service = (UserService) applicationContext.getBean("userService") ;// 从spring容器得到管理Bean对象 // 3、 调用业务 service.login(); } //使用BeanFactory 获得容器对象 @Test public void demo3(){ // 1、 初始化容器 BeanFactory beanFactory = new XmlBeanFactory(new ClassPathResource("applicationContext.xml")); // 2、 获得目标对象 UserService service = (UserService) beanFactory.getBean("userService"); // 3、 调用业务 service.login(); }}
Spring 容器对象
BeanFactory ,就是Bean管理工厂,是Spring顶级容器接口
ApplicationContext 接口只是BeanFactory 接口的子接口(扩展后)
区别: BeanFactory 延迟加载配置文件中声明Bean对象,当getBean时候,才会创建Bean对象, ApplicationContext 会在加载配置文件时,完成对象创建和依赖注入 ;
ApplicationContext 提供国际化处理、 事件传递、 自动装配 … 更多功能
企业开发时,基本上都是使用ApplicationContext 接口
- Spring 框架简介
- Spring 框架简介
- Spring 框架简介
- Spring 框架简介
- Spring 框架简介
- Spring 框架简介
- Spring 框架简介
- Spring 框架简介
- Spring 框架简介
- Spring框架简介
- Spring 框架简介
- Spring 框架简介
- Spring 框架简介
- Spring 框架简介
- Spring 框架简介
- Spring Web 框架简介
- Spring 框架简介
- Spring 框架简介
- 肠炎后如何补充营养
- Something to read
- 浅谈栈帧
- File创建的操作
- 学习Java过程时慕课网上的知识总结(自用)
- spring框架简介
- (1) PHP 使用 PDO 连接ORACLE、MYSQL、和SQLSERVER
- 找到一本不错的Linux电子书,附《Linux就该这么学》章节目录
- Tr A (矩阵快速幂(模板))
- 欢迎使用CSDN-markdown编辑器
- fragment中添加fragment与activity中添加fragment的不同
- Struts2工作原理详解,从Struts2的角度来理解MVC模型
- 计算两点间的距离(HDU)
- 城市浅谈