springIoC语文初中教育教育专区

上传人:仙*** 文档编号:52242639 上传时间:2022-02-07 格式:PPT 页数:75 大小:188KB
返回 下载 相关 举报
springIoC语文初中教育教育专区_第1页
第1页 / 共75页
springIoC语文初中教育教育专区_第2页
第2页 / 共75页
springIoC语文初中教育教育专区_第3页
第3页 / 共75页
点击查看更多>>
资源描述
SpringSpringn重点内容Spring框架概述框架概述nSpring是什么?Spring框架概述框架概述nSpring是什么?Spring框架概述框架概述nSpring的历史Spring框架概述框架概述 Spring框架概述框架概述n面向切面Spring提供了面向切面编程的丰富支持,允许通过分离应用的业务逻辑与系统级服务(例如权限、日志和事务管理等)进行内聚性的开发。应用对象只实现它们应该完成的业务功能,不考虑其它的系统级关注点,例如日志或事务支持。 n容器Spring包含并管理应用对象的配置和生命周期,在这个意义上它是一种容器,可以配置每个bean如何被创建(bean可以创建一个单独的实例或者每次需要时都生成一个新的实例),以及它们是如何相互关联的。Spring框架概述框架概述n框架Spring可以将简单的组件配置、组合成为复杂的应用。在Spring中,应用对象被声明式地组合,典型地是在一个XML文件里。Spring也提供了很多基础功能(事务管理、持久化框架集成等等),将应用逻辑的开发留给了你。 Spring框架概述框架概述nSpring包含的模块Spring框架概述框架概述n这是Spring框架最基础的部分,它提供了依赖注入(Dependency Injection)特征来实现容器对Bean的管理。这里最基本的概念是BeanFactory,它是任何Spring应用的核心。BeanFactory是工厂模式的一个实现,它使用IoC将应用配置和依赖说明从实际的应用代码中分离出来。nWeb上下文模块建立于应用上下文模块之上,提供了一个适合于Web应用的上下文。另外,这个模块还提供了一些面向服务支持。例如:实现文件上传的multipart请求,它也提供了Spring和其它Web框架的集成,比如Struts、WebWork。Spring框架概述框架概述nSpring带来了复杂的J2EE开发的春天。nSpring具有如下优点:IoC (DI)nInverse of ControlnDependency Injectionn示例分析User.javapublic class User private Long id; private String name; private String password; private String group; public User(String name,String password) this.name = name; this.password = password;/相应的相应的get/set方法方法.MemoryUserPersist.javapublic class MemoryUserPersist private static Map users = new HashMap(); static User defaultAdmin = new User(Mike,“mm123); users.put(defaultAdmin.getName(),defaultAdmin); public MemoryUserPersist () public void saveUser(User user) users.put(user.getName(),user); public User LoadUser(String userName) return (User)users.get(userName); MemoryUserPersist userPersist = new MemoryUserPersist ( );userPersist.saveUser(user); 开发初期,将用户持久化到内存中,用于系统演示n新需求:如果要持久化到文本文件中?n面向接口编程public interface UserDao public void save(User user); public User load(String name);public class MemoryUserDao implements UserDao private static Map users = new HashMap(); static User user = new User(“Mike”,“mm123); users.put(user.getName(),user); public void save(User user) users.put(user.getId(),user); public User load(String name) return (User)users.get(name); UserDao userDao = new MemoryUserDao();userDao.save(user);public class TextUserDao implements UserDaopublic void save(User user) 打开数据文件 写入数据 关闭文件 public User load(String name) 打开文件; 读取数据到User u中; 关闭文件; return u; 持久化到文本文件中UserDao userDao = new TextUserDao();userDao.save(user);n工厂模式public class UserDaoFactory public static UserDao createUserDao() return new MemoryUserDao(); 客户端UserRegister代码片段如下:UserDao userDao = UserDaoFactory. CreateUserDao( );userDao.save(user);现在如果再要更换持久化方式,比如使用文本文件持久化用户信息。就算有再多的客户代码调用了用户持久化对象我们都不用担心了。因为客户端和用户持久化对象的具体实现完全解耦。我们唯一要修改的只是一个UserDaoFactory类。n进一步改进:public class UserDaoFactory public static UserDao createUserDao( ) String className = ; className=从属性文件中取得这个UserDao的实现类全名。 UserDao userDao = null; try userDao = (UserDao)Class.forName(className).newInstance(); catch (Exception e) e.printStackTrace(); return userDao; 如果要改变持久化方案,只需要修改配置文件n引入工厂模式,带来的额外工作:n组件纳入容器管理。组件的实例由容器创建,并根据依赖关系进行注入。public class UserRegister private UserDao userDao = null;/由容器注入的实例对象 public void setUserDao(UserDao userDao) this.userDao = userDao; / UserRegister的业务方法String idStr=.; /解析元素的id,获取其字符串为userRegister;/idStr=“userReigster”String classStr=.;/解析,获取class为com.dev.spring.simple.UserRegister;/classStr=“com.dev.spring.simple.UserRegister”Class clazz=Class.forName(classStr); Object obj=clazz.newInstance( );/建立UserRegister的一个对象;container.put(idStr,obj);String propertyName=.;/解析的name,获取属性名为userDao;/propertyName=“userDao”;String refStr=.; /解析的ref,获取值为userMemoryDao;/refStr=“userMemoryDao”String setterName=set+propertyName.substring(0,1).toUpperCase( )+propertyName.substring(1); /生成setUserDao方法名;Object paramBean=container.get(refStr);Method setter=clazz.getMethod(setterName,paramBean.getClass( );setter.invoke(obj,paramBean);使用使用Spring的的IoCn在工程中引入Spring框架使用使用Spring管理管理beann使用Spring管理Bean在在XML文件中配置文件中配置BeanReference:Spring3.0 reference chp3-3.2为为Bean配置依赖配置依赖 Reference:Spring3.0 reference chp3-3.2初始化初始化Spring容器容器nApplicationContext是Spring最常使用的容器接口,常用的实现类有初始化初始化Spring容器并获取容器并获取beanApplicationContext context =new ClassPathXmlApplicationContext( new String “applicationContext.xml“ );PetStoreServiceImpl service = context.getBean(petStore, PetStoreServiceImpl.class);从从Spring中获取中获取BeannObject getBean(String id):根据容器中Bean的id来获取,返回的Object需要强制类型转换;nT getBean(String id, Class requiredType):带一个泛型参数,通过id来获取Bean,返回结果不需要强制类型转换Spring配置详解配置详解nSpring配置详解配置详解n Spring配置详解配置详解nBean的作用域Spring配置详解配置详解n如果不显式执行bean的作用域,默认为singleton作用域Spring配置详解配置详解nSpring注入方式构造方法注入构造方法注入n请参考spring3.0 reference 文档3.4 Dependencies Constructor-based dependency injectionset方法设值注入方法设值注入n为需要注入的属性设置set方法;n在配置文件中,使用子元素配置nSpring先调用无参数的构造方法,实例化Bean,然后会检测其所有的元素,并调用对应的set方法,为各个配置的属性注入 set方法注入方法注入n任何类型的数据,只要提供set方法,都可以接受spring注入set方法注入方法注入n设置普通属性值1com.mysql.jdbc.Driverset方法注入方法注入n注入其他Beanset方法注入方法注入n注入嵌套Beann将配置为或的子元素,则该仅作为setter注入、构造器注入的参数,不能被容器获取,不能被用到其他ban的注入中set方法注入方法注入n注入集合nnnn示例:Chinese.java bean.xmlset方法注入方法注入n,等集合中的元素可以是基本值类型,也可以是其他Bean或嵌套bean,甚至是另一个集合。因此,,元素可以有以下子元素:set方法注入方法注入n集合的每个元素是key-value构成的entry;可以使用基本类型或者字符串作为key,也可以使用另一个Bean作为key;同理,value可以是一个基本类型的值,也可以是另一个bean。因此,集合中的元素支持4中属性:set方法注入方法注入n泛型集合public class Test private Map prices; /* setPrices */public class Test private Map prices; /* setPrices */ set方法注入方法注入n组合属性的注入n自动装配自动装配Autowiren无须显式指定bean的依赖关系,由spring自动根据某种规则为容器中的bean注入依赖n,为所有的bean指定一个默认的自动装配规则n, 为单独的一个bean配置自动装配规则自动装配自动装配n自动装配策略自动装配自动装配nbyNamen示例:chinese.javabean.xmlBean的生命周期方法的生命周期方法nsingleton类型的Bean,其创建和销毁都是由Spring容器负责,Spring可以精确地知道该Bean何时被创建、何时被初始化、何时销毁该Bean;nprototype类型的Bean,容器创建后,就将其交给客户端,容器不再跟踪器生命周期Bean的生命周期方法的生命周期方法nsingleton类型的bean,可以管理其生命周期行为让让Bean获取获取Spring容器容器n将spring容器注入给Bean使用使用Annotation配置配置IoC基于基于Annotation的的IoCn启用Spring AnnotationIoC AnnotationnComponentn标注一个普通的Java组件( Bean)IoC Annotationn为Bean指定名称(id)IoC Annotationn指定Bean的作用域: ScopeIoC Annotationn配置依赖:ResourceComponentpublic class LoginAction extends ActionSupportprivate UserDao userDao; Resource(name=“userDaoHibernateImpl”)public void setUserDao(UserDao userDao) this.userDao=userDao; IoC Annotationn配置依赖:ResourceIoC Annotationn设置Bean的生命周期方法IoC AnnotationnDependsOnDependsOn(“steelAxe”,”abc”)Componentpublic Class Chinese implements PersonIoC AnnotationnLazyComponentLazy(true)public class Chinese implements PersonIoC Annotationn自动装配:AutowiredComponentpublic class Chinese implements PersonAutowiredpublic void prepare(Axe axe, Dog dog) IoC Annotationn自动装配:AutowiredComponentpublic class Chinese implements Person Autowired private Axe axe; Autowired private Dog dog; Componentpublic lcass Chinese implements Person Autowired private Axe axes; IoC AnnotationnQualifierComponentpublic class Chinese implements Person Autowired Qualifier(“steelAxe”) private Axe axe; private Dog dog;
展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 压缩资料 > 基础医学


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!