spring初学(1)

来源:互联网 发布:.name域名是什么 编辑:程序博客网 时间:2024/06/05 15:43
1.spring是轻量级框架(一站式)
2.核心有两个部分:
  a.aop  面向切面编程,扩展功能不是修改源码
  b.ioc  控制反转
3.  web层:springMVC
    service层:spring的ioc
    dao层:spring的jdbcTemplate
4.使用的版本 spring4.x

ioc操作
    配置文件
    注解
IOC 底层原理
 (1)xml配置文件
 (2)dom4j解决xml
 (3)工厂设计模式
 (4)反射
 ioc原理
     public class UserService{

     }
     public class Userservlet{
             得到UserService的对象
     }
     第一步:
     创建xml配置文件,配置要创建的对象类
     <bean id="UserService" class="UserService">
     第二步 创建工厂类,使用dom4j解析配置文件+反射
            public class UserFactory{
            public static UserService getService(){
            
                String  classValue="class属性值";
               // 使用反射创建类对象
                Class clazz=Class.forName(classValue);
            //创建类的对象
                UserService service=clazz.newInstance();
                return service;               
            }
            }
spring的bean管理(xml配置文件)
 (1)通过配置文件创建对象
 (2)bean实例化三种方式
    使用类的无参数构造创建(重点)
       类中没有无参构造,会出现错误
       <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="user" class="ioc.User"></bean>
       </beans>
    使用静态工厂创建
        (1)创建静态方法,返回类对象
          <bean id="bean2" class="bean.Bean2Factory" factory-method="getBean2"></bean>
    使用实例工厂创建
        (1)创建不是静态方法,返回类对象
            <bean id="bean3Factory" class="bean.Bean3Factory"></bean>
       <bean id="bean3" factory-bean="bean3Factory" factory-method="getBean3"></bean>


测试类中的内容
        ApplicationContext context=new ClassPathXmlApplicationContext("xml");
        User user= (User) context.getBean("user");
        调用方法
Bean标签常用属性
  1.id    不能包含特殊的符号 根据id得到配置对象
  2.class  创建对象所在类的全路径
  3.name   功能和id一样,id的属性值不能包含特殊符号
  4.scope    singleton:默认值,单例的  
             prototype:多例的
             request:创建对象把对象放到request域里面
             session                  session
             globalSession            globalSession
属性的注入:
   1.创建对象时,向类里面的属性设值
   2.属性注入的方式介绍
     (1)使用set方法 (重要)
     (2)有参数构造注入
     (3)使用接口注入     (不常用)
     spring框架中支持前两种  set常用

     <bean id=""   class="">
      <property name="类中属性名"  value=""></property>
     </bean>

注入对象类型属性(重点)
   1.创建service类和dao类
    在service创建dao对象
   2.具体实现过程
    (1)在service中把dao作为属性类型


    public class UserDao{
         System.out.println("dao...........");
    }


    public class UserService{
        private UserDao userDao;
        public void setUserDao(UserDao userDao){
            this.userDao=userDao;
        }
        public void add(){
            System.out.println("service...........");
            userDao.add();
        }
    }
   配置service和dao对象
    <bean id="userDao" class="UserDao路经"></bean>
     <bean id="UserService" class="UserService路经">
          ref属性:dao配置bean标签中id值
        <property name="userDao"  ref="userDao"></property>
     </bean>
P名称空间的注入
    xmlns:p="http://www.springframework.org/schema/p"
    <bean id="" class="" p:pname=""></bean>
  注入复杂类型属性:
     数组:
     list:
     map:
     properties:
 <bean id="" class="">
    <property name="arrs">         数组中复赋值
       <list>
         <value></value>
         <value></value>
         <value></value>
       </list>
    </property>
    <property name="list">
       <list>
         <value></value>
         <value></value>
         <value></value>
       </list>
    </property>
    <property name="map">
       <map>
           <entry key=""  value=""></entry>
           <entry key=""  value=""></entry>
           <entry key=""  value=""></entry>
       </map>
    </property>
    <property name="properties">
        <props>
            <prop key="driverclass">com.mysql.jdbc.Driver</prop>
            <prop key="username">root</prop>
        </props>
    </property>
 </bean>

 IOC和DI的区别
  (1)IOC:控制反转,把对象创建交给spring进行配置
   (2) DI:依赖注入,向类里面的属性中设置值
   (3) 关系:依赖注入不能单独存在,需要在ioc的基础之上完成操作

加载spring核心配置文件
    ApplicationContext context=new ClassPathXmlApplicationContext("xml");
    功能可以实现,但是效率很低

把加载配置文件和创建对象过程,在服务器启动时完成

实现原理
 ServletContext对象
 监听器
在服务器启动时候,为每个项目创建一个ServletContext对象
在ServletContext对象创建时候,使用监听器可以具体到ServletContext对象在什么时候创建
使用监听器听到ServletContext对象创建时候
加载spring配置文件,把配置文件配置对象创建
把创建出来的对象放到ServletContext域对象里面(setAttribute方法)
获取对象时,到ServletContext域得到(getAttribute方法)
原创粉丝点击