浅谈Spring框架的应用

1.Spring是一个轻量级开源框架.

轻量级:与EJB对比,依赖资源少,销毁的资源少

2.Spring的核心是控制反转(IOC)和面向切面(AOP)

3.Spring的优点:

a.方便解耦:IOC容器,依赖注入方式不必实例化类.
b.AOP编程的支持-面向切面编程
c.声明事务的支持
d.整合各种框架
e.方便程序的测试

f.降低Java EE API的使用难度

4.IOC:控制反转,将对象创建的权利转移到第三方的容器来管理.通过xml文件方式获取对象---体现出解耦

5.如何搭建IOC:
1)导包4(核心)+1(依赖);
dist--libs--:beans、core、context、expression
dependenices(整合后的)--apache.commons--commons.logging--logging-1.1.1.jar
schema--头部
/*<bean>:狭义: 类中私有属性的set/get()
  广义:就是一个实体类*/
2)src下创建配置文件applicationContext.xml .

    3) 编写xml设置头部

6.获取对象
  //配置这里的每一个bean,Spring容器都会帮我们创建对象,并且给创建出来的对象取一个唯一的标识(id)-- 自己取,没要求(建议和属性名一致)
  //class="全类名"        
    <bean id="userBizId" class="com.qf.biz.impl.UserBizImpl"></bean>  
 //取对象
ApplicationContext context=new ClassPathXmlApplicationContext("xml名称");
ApplicationContext--beanFactory
        //id:userBizId:通过表示Id获取对象  

IUserBiz userbiz=(IUserBiz)context.getbean("userBizId");

7.属性的依赖注入

  依赖:一个对象需要使用另一个对象.
  注入:通过第三方来对另一个对象进行实例化
    eg:BizImpl 类中有DaoImpl的对象作为属性.
     
    1) UserBizImpl有另一个类对象名称-userDao
        public class UserBizImpl implements IUserBiz {
private IUserDao userDao;
   2)<bean id="userBizId" class="com.qf.biz.impl.UserBizImpl">
      /*name="userDao":  对应类中需要注入实现的属性(另一个对象)名称
       ref="userDaoId":对应引用创建出来的对象的标识id
      */
<property name="userDao" ref="userDaoId"></property>
 </bean>

 <bean id="userDaoId" class="com.qf.dao.impl.UserDaoImpl"></bean>

8.bean的创建:在主配置文件中去配置
1.默认无参方法的构造---反射
2.静态工厂:所有方法都static-注入实现的对象需要set/get()
3.实例工厂: 注入实现的对象需要set/get()
//静态工厂
<!--静态工厂 -->
<bean id="userDaoId2" class="com.qf.factory.StaticFactory"factorymethod="createUserDao"></bean>
      
<!-- 实例工厂:先创建工厂实例,创建对象 -->
1)<!-- 工厂对象 -->
  <bean id="userDaoFactory" class="com.qianfeng.factory.UserDaoFactory"></bean>
2)<bean id="userDao3" factory-bean="userDaoFactory" factory-method="createUserDaoImpl"></bean>

9.作用域:用于确定spring创建bean实例个数是否是同一个  <bean>标签属性 scope
scope="singleton":单例
scope="prototype":多列
默认是单列

10.属性的自动依赖注入-autowire
autowire:属性依赖自动注入
      1)autowire="byName":通过名称来注入,通过类中需要注入实现的对象的名称与主配置文件中的bean 的id名称 进行匹配,匹配上就注入
        //以userDao去匹配 id的值,匹配上则找到.
       public class UserBizImpl implements IUserBiz {
  private IUserDao userDao; 
       <bean id="userBizId" class="com.qf.biz.impl.UserBizImpl" autowire="byName">
<!-- <property name="userDao" ref="userDaoId3"></property> -->
  </bean>
       <bean id="userDao" class="com.qf.dao.impl.UserDaoImpl"></bean>

      2)autowire="byType":通过类型来注入,注意点:类型必须唯一(不然报错,因此只写一种创建bean).

      3)与class的映射文件有关:知道找的是哪一个类型。  
//通过类型类匹配,匹配出来的是多个类.
<bean autowire="byType"> 

11.基于注解方式实现bean

1)dist---xsd.config--申明配置--The context schema

2)xml文件中:只写这个配置.
<!-- 扫描所有添加了注解的类 -->
<context:component-scan base-package="com.qf">
3)类中:
/*@Component(value="userBiz")*/  //也可以这样写组件的注解
@Service(value="userBiz")        //分层的注解
@Scope(value="singleton")
public class UserBizImpl implements IUserBiz {
@Resource(name="userName")  //这里的userName对应的是UserDaoImpl中对应的userName
private IUserDao userDao;
 
  /*@Autowired     --默认是以byType的方式属性自动注入
private IUserDao userDao1;*/

}  

@Component(value="userName")
public class UserDaoImpl implements IUserDao{}
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值