spring基础及IOC注入

    技术2022-05-19  35

    Spring2.5 (J2EE开源框架.)

    1.Spring是什么?    Spring,J2EE的开源框架.    主要作用:对整个项目的管理.    Spring可以使整个项目的耦合度降低.    Spring可以使项目更加的容易维护.更加容易扩展.    

    2.Spring框架主要分为那几个部分?  七个部分:    1.Spring的核心 BeanFactory.    2.Spring的上下文.(Spring Context-->ApplicationContext)    3.Spring的IOC机制.(依赖注入/控制反转.)    4.Spring的 DAO (Spring对JDBC的支持.)    5.Spring的 ORM (ORM是对象关系映射.hibernate,ibatis等开源框架都是ORM的产品.Spring对hibernate的支持.)        6.Spring的 AOP (面向切面编程/面向方面编程.)     AOP可以开发中间件服务.(设计模式中的代理模式(静态代理,动态代理.).)         7.Spring的WEB(SSH三大框架的整合)

        3.Spring的IOC机制  3.1 什么是IOC?   术语:依赖注入,控制反转.IOC   IOC:Spring通过读取配置文件动态获取实例的机制.    3.2实现IOC机制,Spring提供了那几种方式?   三种方式:    set方式的注入(最常用的.)    基于构造方法的注入    基于接口的注入(已经淘汰.)        在普通的java程序中如何获取实例?     两种:       基于set方法.         User user = new User();         user.setName("jack");         user.setPassword("123");            基于构造方法.        User user = new User("jack","123");      基于SET方式的注入实现IOC机制,必须给实体类的每一个属性提供set方法.    步骤:     1.定义实体类.      必须提供无参数构造方法.      如果有属性,必须给属性提供setter方法.      如: public class User{        private String name;        public User(){}        public void setName(String name){         this.name = name;        }       }          2.编写Spring的配置文件applicationContext.xml文件.(注入bean)      <bean id="userBean" class="User">       <property name="name">        <value>张三</value>       </property>      </bean>          3.编写Spring的代码      //获取资源      Resource resource = new ClassPathResource("applicationContext.xml");      //获取bean工厂实例对象      BeanFactory factory = new XmlBeanFactory(resource);      //调用getBean方法获取实例bean      Object obj = factory.getBean("userBean");       注意:1.BeanFactory可以用下列代码替换.      ApplicationContext factory = new ClassPathXmlApplicationContext("applicationContext.xml");      User user = (User)factory.getBean("userBean");           2.获取实例可以通过Spring配置文件中bean标签的id的值和name的值.           3.Spring的IOC默认情况获取bean都是采用了单例模式.           4.Spring配置文件中配置bean时,给属性赋值,<property>标签可以有两种写法:        第一种写法:         <property name="username" value="张三"></property>        第二种写法:         <property name="password">          <value>123</value>         </property>        注意:bean的属性类型必须是   (基本类型+基本类型包装类+字符串类型)才可以使用value属性赋值.         基于构造器的方式实现IOC机制.    步骤:     1.定义实体类,实体类尽可能多提供构造方法,(构造方法最少应该有一个.)     public class Customer{      private String name;      private String phone;      public Customer(){}      public Customer(String name,String phone){       this.name = name;       this.phone = phone;      }     }          2.写Spring的配置文件     <bean id="customerBean" class="Customer">      <constructor-arg index="0" type="java.lang.String" value="张三" />      <constructor-arg index="0" type="java.lang.String">       <value>12345678</value>       <!--如果属性不是(基本类型+String),需要使用 ref 标签赋值.-->      </constructor-arg>     </bean>         3.写Spring的IOC代码.创建实例         3.3如果实体类的属性是一个集合.应该如何注入?    public class A{     private List list;     private Set set;     private Map map;     private Properties p;    }                <!-- 注入addrBean -->   <bean id="addrBean" class="com.sinojava.spring.po.Address">     <property name="city">       <value>上海</value>     </property>     <property name="street">       <value>浦东</value>     </property>     <property name="zipcode">       <value>10086</value>     </property>   </bean>   <!-- 注入systimeBean -->   <bean id="sysTimeBean" class="java.util.Date"></bean>   <!-- 注入Abean -->   <bean id="A" class="com.sinojava.spring.po.A">      <!-- 未使用泛型的list -->      <property name="list">        <list>          <value>abc</value>          <ref local="addrBean"/>          <value>123</value>          <ref local="sysTimeBean"/>          <value>12.3</value>        </list>      </property>           <!-- 使用了泛型的list -->      <property name="users">        <list value-type="java.lang.String">          <value>username</value>          <value>password</value>          <value>url</value>        </list>      </property>          <!-- set -->     <property name="strs">       <set value-type="java.lang.String">         <value>jack</value>         <value>rose</value>              </set>     </property>          <!-- map -->     <property name="maps">    <map>     <entry key="1">      <value>张三</value>     </entry>     <entry key="2">      <value>李四</value>     </entry>    </map>   </property>             <!-- properties -->      <property name="p">        <props>          <prop key="username">            scott          </prop>          <prop key="password">tiger</prop>          <prop key="url">orale:thin:@localhost:1521;sinojava</prop>        </props>      </property>   </bean>                                 


    最新回复(0)