Spring学习

Spring是什么

概念:Spring是分层的Java EE/SE应用full-stack轻量级开源框架,以IOC和AOP为内核
优势:1)方便解耦,简化开发;2)AOP编程支持;3)声明式事务支持;4)方便程序测试;5)方便集成各种优秀框架;6)降低JavaEE API的使用难度;7)Java源码是经典学习范例
##Spring开发步骤
1、导入Spring开发的基本包坐标—>Spring Context
2、编写DAO层
3、创建Spring核心配置文件–applicationContext.xml
4、在Spring配置文件中配置UserDaoImpl

<bean id="userDao" class="com.it.dao.impl.UserDaoImpl"></bean>

5、使用Spring的API获得Bean实例

public class UserDaoDemo {
    public static void main(String[] args) {
        ApplicationContext appli = new ClassPathXmlApplicationContext("applicationContext.xml");
        UserDao userDao = (UserDao) appli.getBean("userDao");
        userDao.save();
    }
}

##Spring配置文件
Bean标签的基本配置
属性
id:Bean实例在Spring容器中的唯一标识
calss:Bean在全路径名称
Bean的标签范围:
| 取值范围 |说明
|singleton |单例,默认
|prototype |多例
|request |web项目中,设置Bean参数到request域
|session |web项目中,设置Bean到session域中
|global session |web项目中,应用在Portlet环境,没有的情况下与session相同

1)当scope的取值范围为singleton时
Bean的实例化个数:1个
Bean的实例化时机:当Spring核心文件被加载时,实例化配置的Bean实例
Bean的生命周期:
对象创建:当应用加载时,创建容器时,对象创建
对象运行:只要容器在,对象一直活着
对象销毁:当应用卸载,销毁容器时,对象销毁

2)当scope的取值范围为prototype时
Bean的实例化个数:多个
Bean的实例化时机:当调用getBean()方法时实例化配置的Bean实例
Bean的生命周期:
对象创建:当使用对象时,对象创建
对象运行:只要对象在使用,对象一直活着
对象销毁:当对象长时间不适用,被Java的垃圾回收器回收

Bean生命周期配置
init-method=“save”:指定类中的初始化方法
destroy-method="":指定类中的销毁方法

Bean实例化三种方式
无参构造方法实例化–常用
工行静态方法实例化

<bean id="userDao" class="com.it.factoy.StaticFactory" factory-method="getUserDao"></bean>
工厂实例方法实例化
<bean id="dynamicFactory" class="com.it.factoy.DynamicFactory" ></bean>
<bean id="userDao" factory-bean="dynamicFactory" factory-method="getUserDao"></bean>

Spring的依赖注入

概念(dependency Injection):他是Spring框架核心IOC的具体实现

将Dao注入给Service

1)构造方法
  <bean id="userDao" class="com.it.dao.impl.UserDaoImpl" ></bean>
    <bean id="userService" class="com.it.service.impl.UserServiceImpl">
        <!--name-->
        <constructor-arg name="userDao" ref="userDao"></constructor-arg>
    </bean>
2)set方法
<bean id="userDao" class="com.it.dao.impl.UserDaoImpl" ></bean>
 <bean id="userService" class="com.it.service.impl.UserServiceImpl" p:userDao-ref="userDao">
 </bean>

p:命名空间引入

xmlns:p="http://www.springframework.org/schema/p"
 <bean id="userService" class="com.it.service.impl.UserServiceImpl" p:userDao-ref="userDao">
    </bean>

注入数据的三种数据类型:

  • 普通数据类型
 <bean id="userDao" class="com.it.dao.impl.UserDaoImpl" >
      <property name="username" value="zhangsan"/>
      <property name="age" value="18"/>
  </bean>
  • 引用数据类型
  • 集合数据类型
 <bean id="userDao" class="com.it.dao.impl.UserDaoImpl" >
     <!--List集合-->
      <property name="list" >
            <list>
                <value>zhangsan</value>
                <value>lisi</value>
                <value>wangwu</value>
                <value>zhaoliu</value>
            </list>
      </property>
  	<!--map属性-->
      <property name="userMap">
          <map>
              <entry key="user" value-ref="user1">
              </entry>
          </map>
      </property>
  	<!--Properties属性-->
      <property name="properties">
          <props>
              <prop key="p1">pp1
              </prop>
              <prop key="p2">pp2
              </prop>
          </props>
      </property>
  </bean>
  <bean id="user1" class="com.it.domain.User">
      <property name="name" value="张三"></property>
      <property name="addr" value="西安市"></property>
  </bean>
  <bean id="userService" class="com.it.service.impl.UserServiceImpl">
      <!--name-->
      <constructor-arg name="userDao" ref="userDao"></constructor-arg>
  </bean>

分模块开发之配置文件引入

   <import resource="applicationContext-product.xml"></import>
    <import resource="applicationContext-user.xml"></import>

Spring的重点配置

<bean>标签:
	*id:Bean实力在Spring容器中的唯一标识
	*class:Bean的全限定名称
	*scope:对象的作用范围,默认singleton,多例prototype
	<property>标签:属性注入
		name属性:属性名称
		value属性:注入普通属性值
		ref属性:注入的对象引用值
		<list>标签
		<map>标签
		<properties>标签
	<constructor-arg>标签
	<import>标签:导入其他的spring文件

Spring相关的API

**applicationContext:接口类型,代表应用的上下文,可以通过其他实例获得Spring容器中的Bean对象
**ClassPathXmlApplicationContext
它是从类的根路径下加载配置文件推荐使用这种
**FileSystemXmlApplicationContext
它是从磁盘路径上加载配置我呢见,配置文件可以在磁盘的任意位置
**AnnotationConfigApplicationContext
当使用注解配置容器对象时,需要使用此类来创建Spring容器,用来读取注解
**getBean()方法;
传Id,允许存在多个的情况使用
UserService userService = (UserService)app.getBean(“userService”);
传字节码文件,只存在一种的情况
UserService userService = app.getBean(UserService.class);

知识要点

ApplicationContext app=new ClassPathXmlApplicationContext("applicationContext.xml");
app.getBean("id");
app.getBean(Class);
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值