spring学习笔记

来源:互联网 发布:有淘宝开店条件 编辑:程序博客网 时间:2024/06/05 19:24

2017-10-20

1:有关<property name="" ref="">理解和解释?

   1.1<bean id="persion" class="service.Person">

         <property name="axe" ref="axe"> </person>

      :这里的name和ref虽然是同名的但是name是指Person类中的参数,Person类中有一个Axe类型名叫axe的对象,而ref是当前xml文件中叫做axe的这个bean,把它当作参数传   进Person中.

  </bean>

  为什么要使用<property name="" ref=""></property>中的ref?

 答:

2、有关spring格式,概念的理解?

     项目中有多少个bean类(包含数据库字段名的属性,每个属性包含get和set方法),在spring中就必须配置多少个<bean></bean>

3、spring里面的bean为什么要注册,作用是什么?

       3.1:它注册了,就相当于声明了某个类实例化了,你就不需要再在程序里实例化这个类了,直接用就可以了;几乎Java中的所有框架都需要通过配置文件读取,注册之后程序运行时就直接读取配置去找类和方法,而不是之前那种一个类一个类导入的方式。

      3.2:<!--使用set方法注入属性值-->

     在类中:

   package cn.itcast.property;

  public class Book{

    private String bookname;

 //set方法

 public void setBookname(String bookname){

      thhis.bookname=bookname;

  }

  }

 在spring的配置文xxx.xml里面:

         <bean id="book" class=" cn.itcast.property.Book">

             <property name="bookname" value="java编程思想"></property>

        </bean>

3.3 <!--注入对象类属性-->

 在类中:

   UserDao类:

   package cn.com

  public class UserDao{

     public void add(){

          system.out.println("dao add.......");

    }

}

UserService类:

package    cn.com;

public class UserService{

  private UserDao userDao; //注意属性userDao现在是一个Dao对象了

 public void setUserDao(){    //生成set方法

   this.userDao=userDao;

}


public void add(){

  system.out.println("service add......");

userDao.add();                                 //直接调用UserDao对象userDao中的add()方法【输出将是"dao add......"】

}

}

    spring配置文件xxxx.xml:

    <bean id="userDao" class="cn.com.UserDao"></bean>  //配置service中Dao对象

  <bean>

  <bean id="userService" class="cn.com.UserService"></bean>

      <property name="userDao" ref="userDao"> </property> // name:service类里面属性名称,ref:dao配置中bean的id值。

</bean>

3.4:注入复杂类型输入:list,map,数组,properties[文件类型]

 类中:

   package cn.com;

  public class Person{

   private String pname;

   private String[] arrs;

   private List<String> list;

   private Map<String,String> map;

   private Properties properties;

   public void setArrs( String[] arrs){

      this.arrs=arrs;

 }


   public void setList(List<String> list){

    this.list=list;

}


 public void setMap(Map<String,String> map){

     this.map = map;

 }


  public void setProperties(Properties properties){

       this.properties = properties;

 }

}

  spring中配置文件xxx.xml:

   <bean id="person" class="cn.com.Person">

           <property name="arrs">     //arrs为person类中的一个属性,

                   <list>                              //数组注入【list注入也是一样的,略】

                              <value>张三</value>

                               <value>李四</value>

                              <value>王武</value>

                   </list>

           </property>

           <property name="map">           //map注入

                      <map>

                                  <entry key = "a"  value="lucy"></entry>

                                   <entry key="b"  value="mary"></entry>

                                   <entry key="c"  value="juck"></entry>

                      </map>

          </property>

           <property  name="properties">

                   <props>

                                 <prop  key="driverclass">com.mysql.jdbc.Driver</prop>

                                 <prop key="username">root</prop>

                   </props>

            </property>

  </bean>

3.5;spring中的bean管理【注解】

@component:组件(作用在类上)

  spring中提供@Component的三个衍生注解:

       @Controller    :web成

       @Service        :业务层

        @Repository :持久层

4、spring核心概念:aop(面向切面编程)和ioc(控制反转)。

      4.1 ioc:

        4.1.1:没有ioc之前,如果我们要调用一个类中的方法,要new一个对象,然后才调用;有了spring 中的ioc,对象的创建不是通过new,而是交给spring配置【有待完善代码】。

      4.1.2:ioc底层原理使用的技术【理解:解耦合】:(1)xml配置文件(2)dom4j解决xml(3)工厂设计模式(4)反射;

      4.13:IOC与DI: 1)ioc为控制反转,把对象创建交给spring进行配置;2)di:依赖注入,向类中的属性注入值。

    spring是一站式框架:


    1)spring在javaee三层结构中,每一层都提供不同的解决技术

        web层:springMVC; service层:spring的ioc;dao层:spring的jdbc Template

5:service类的作用?【遗留问题】

6:反射机制?