zoukankan      html  css  js  c++  java
  • IOC入门

    Spring六大模块

    1、SpringCore  spring的核心功能:IOC容器,解决对象的创建及依赖关系

    2、SpringWeb   spring对Web模块的支持

    3、SpringDAO  spring对JDBC的支持

    4、SpringORM  spring对ORM的支持

    5、SpringAOP  切面编程

    6、SpringEE  spring对JavaEE其他模块的支持

    准备工作:从Spring官网上下载Spring的jar包,我这里下载的是4.1.6的版本 (这里分享一下http://pan.baidu.com/s/1gf67MDl,如果链接失效就去官网下载。)

    从SpringCore开始

    1、在eclipse中建立一个web项目,命名为HelloSpring.

    2、导入SpringCore需要的jar包

    spring-core-4.1.6.RELEASE.jar           Spring核心功能
    spring-context-4.1.6.RELEASE.jar        Spring上下文节点
    spring-expression-4.1.6.RELEASE.jar     Sring表达示相关
    spring-beans-4.1.6.RELEASE.jar          Spring bean节点
    commons-logging-1.1.3.jar Spring依赖的日志包,该包需要单独下载

    3、Spring配置文件

    applicationContext.xml

    <!--在src下建包命名为com.isoftstone.xml.在该包下新建一个xml文件命名为applicationContext.xml
    
    这里需要引入applicationContext的约束,其位置在
    spring-framework-4.1.6spring-framework-4.1.6.RELEASEdocsspring-framework-referencehtmlsingleindex.html

    这是一个schema约束,可直接搜索xmlns:,这里找的是一个带p名称空间的。搜索xmlns:p找到需要的约束
    --> <?xml version="1.0" encoding="UTF-8"?>
    <beans xmlns="http://www.springframework.org/schema/beans"
        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
        xmlns:p="http://www.springframework.org/schema/p"
        xmlns:context="http://www.springframework.org/schema/context"
        xsi:schemaLocation="
            http://www.springframework.org/schema/beans
            http://www.springframework.org/schema/beans/spring-beans.xsd
            http://www.springframework.org/schema/context
            http://www.springframework.org/schema/context/spring-context.xsd">
    </beans>

    4、声明一个实体类

    package com.isoftstone.bean;
    
    public class User {
    
        private int id;
        private String name;
        public int getId() {
            return id;
        }
        public void setId(int id) {
            this.id = id;
        }
        public String getName() {
            return name;
        }
        public void setName(String name) {
            this.name = name;
        }
    }

    5、声名一个action,但此时对象的创建交由Spring完成

    <!-- IOC容器配置,要创建的所有对象都配置在这里 -->
     <bean id="user" class="com.isoftstone.bean.User"></bean>
       @Test
        public void testIOC(){
            /*new创建对象*/
            //User user = new User();
            
            //现在把对象的创建交给IOC容器
            Resource resource = new ClassPathResource("com/isoftstone/xml/applicationContext.xml");
            
            //创建容器对象(Bean的工厂)
            BeanFactory factory = new XmlBeanFactory(resource);
            
            //得到容器创建的对象
            User user = (User)factory.getBean("user");
            System.out.println(user.getId());
        }
        
        //方法二,这种方法更方便
        @Test
        public void testIC(){
            ApplicationContext ac = new ClassPathXmlApplicationContext("com/isoftstone/xml/applicationContext.xml");
            User user = (User)ac.getBean("user");
            System.out.println(user);
        }

     IOC创建对象的细节

    1、单例与多例
    <!--IOC默认以单例模式创建对象
    在bean里还有一个属性是 scope="singleton"。单例模式下可以不用写
    如果是多例模式就需要加上 scope="prototype"-->
    <bean id="user" class="com.isoftstone.xml.User" scope="prototype"> <!--多例模式下创建对象-->
    
    
    2、对象的创建时机
    单例模式下在启动(容器初始化前),就已经创建了bean,且整个应用只有一个
    多例模式下在用到对象的时候才创建对象
    
    
    
    3、懒加载 lazy-init
    lazy-init="true" 配合单例模式使用,在用到对象的时候再创建对象
    
    
    4、初始化方法与销毁方法
    init-method="init_user"
    destory-method="destory_user"
    在用这两个属性前需要先在User实体类中编写好对应的方法
  • 相关阅读:
    一起来学Java注解(Annotation)
    Intellij IDEA在maven项目中添加外部Jar包运行
    Java反射Reflect的使用详解
    Java泛型使用的简单介绍
    聊一聊Java的枚举enum
    Java集合 HashSet的原理及常用方法
    对比分析HashMap、LinkedHashMap、TreeMap
    TreeMap原理实现及常用方法
    关于红黑树(R-B tree)原理,看这篇如何
    百度地图-中国地图
  • 原文地址:https://www.cnblogs.com/StanLong/p/6917491.html
Copyright © 2011-2022 走看看