什么是Spring框架,基本的使用介绍

spring是一种容器管理框架。
 
| 版本问题
 
一定要注意每个依赖(jar)的版本。
 
看评论之后,再运行相关代码。
 
| IoC(控制反转)/DI依赖注入
 
Spring 中的所管理的东西都被称为组件。
 
| 当组件被Spring管理之后,该如何实现注入?有几种方法?
 
一共三种方法;
1.通过构造方法。
2.通过set方法。
3.通过接口注入。
 
小结;
 
首先spring指的是一种容器管理框架,其中的核心概念之一是IOC(控制反转)/DI(依赖注入),该概念需要从依赖注入着手理解,首先是注入两个字,那么首先要解决的问题便是啥是注入?简单理解就是机器a要运行,内部要用到机器b,那么把机器b放到机器a的过程便是注入。紧着的问题便是在哪注入?还是上述例子,就是机器a中声明(这个机器a便是java项目中的类),那么问题就又来了注入是个动词,那么它的宾语什么呢?可以看出它的宾语是 依赖。什么又是依赖呢?上述例子中的机器b便是 依赖,显而易见依赖其实对应的也是java中的类。
 
那么我们要学的重点便都在这个动词上了。怎么注入呢用 spring
在注入之前我们要配置spring的aplication.xml文件。
其中的最重要的一个标签。便是组件标签<bean> ,我们需要用此标签来注册组件。写法如下;
 
其中是有三种解决方法;
    1.构造器注入;
        首先被注入的类中要声明的有依赖类型的属性。
        其次要创建有参的构造器,该构造器中的参数需要是依赖类型数据。
java类中;
----------------------------------------
    private GoodDao  goodDao;

    public GoodService(GoodDao goodDao){
        this.goodDao=gooDao;
    }

 

----------------------------------------
 
aplication.xml文件;
-------------------------------------
    //id 其实是类名,但是首字母要小写。    //要被注册为组件的全类名。
    <bean id="goodDao" class="com.oracle.dao.GoodDao" >
    
    </bean>


    <bean id="goodService" class="com.oracle.srevice.GoodService">
        <Constructor name="goodDao" ref="goodDao">
        </Constructor>
    </bean>

 

    2.set方法注入;
    首先要声明一个依赖类型的属性,
    次之对其创建一个get和set方法(其实只需要set方法即可)。
 
java类中;
----------------------------------------
    private GoodDao  goodDao;

    public void setGoodDao(GoodDao goodDao){
        this.goodDao;
    }
    public GoodDao getGoodDao(){
        return goodDao;
    }
    

 

----------------------------------------
 
 
aplicationContext.xml文件;
-------------------------------------
    //id 其实是类名,但是首字母要小写。    //要被注册为组件的全类名。
    <bean id="goodDao" ref="com.oracle.dao.GoodDao" >
    
    </bean>

    <bean id="goodService" ref="com.oracle.srevice.GoodService"
        <property name="goodDao" ref="goodDao"></property>
    </bean>

 

    3.接口注入;
 
  
| 用Spring生成对象
 
//启动Spring容器,在Spring容器启动时会通过配置文件注册信息
 
    ApplicationContext context  =  new ClassPathXmlApplicationContext("applicationContext.xml");

 

//获取被管理的的组建的实例对象
 
    context.getBean(GoodService.class);                    //两种方式:   1. 通过数据类型的字节码文件反射获取,2.通过指定的名称获取。
----------------------------------
 
注入方式常用的是set注入
java中的接口是可以多实现的,添加一个接口,可以对一个接口提供不同实现。
 
Spring容器;
 
Spring托管组件时会创建一个容器进行装载 每个bean。
 
spring在注册时,是通过类型和名称两种方式注册的,上述两种方式都能找得到对应的组件。
 
 

 
@service  ----业务层注解
@Repository  ------持久层
 
@Autowired  ---- 自动注入 默认按照类型
---不需要在设置set方法
 
@Qualifier(value="gd")
        --- 通过名称的方式注入(在依赖的注释赋值上名称)
@Resource  --默认按照名称做注入
写法  -- @Resouce(name="goodDao")
通过反射获取实体类
 
 
@Primary 主要注入  (在多个接口实现类,以防止出现冲突,不用根据名称,根据类型就可以找到对应的实体类)
 
知识小结
 
下午主要学习了spring框架是如何使用 注解 的方式实现 依赖注入 的。上午我们已经学习了如何用xml文件配置依赖的注入。 那么如果使用注解的话,我们该如何配置呢?首先我们要知道注解是什么?注解也是一种配置方式,通常是在要被注解的类或者其他类型的上一行。 首先第一个dao层的注解之一,  @Repository   声明此dao类是可以被注入的(默认以数据类型的方式注入),然后是service层的注解 @service ,声明此service类是要被注入依赖的类,然后在该类中要被注入依赖的接受属性上方添加 @Autowired 注解,其用意是指用来接收要被注入依赖的。  然后就可以通过调用ApplicatonContext对象的getBean方法获取对象(通过上方的注解配置后,都是以数据类型的方式来实例话对象的)。如果想要通过名称来找的话,只需要把要被实例化的类名首字母小写,其它不变,以字符串的形式填入getBean的参数中即可达到上述效果。       
 
如果要自定义名称的话,有以下思路,首先通过名称找到service层的类,那么就需要修改service注解为 @service("service名") 。即可通过该名称进行实例化数据。然后通过名称注入依赖的话,可以在 @Autowired 的注解之下添加一个 @Qualifier(value =“依赖类名首字母小写”) ,如果写的是其他名称的话,同样要修改dao层依赖上方的注解@Repository为 @Repository("不是默认类名") 。然后还有一点要说的是,在要接收依赖的属性的注解还可以用 @Resource(name="非默认名称") ,此注解默认通过名称进行依赖注入。
 
最后,就是要说的是通过接口注入了,首先接收依赖的数据类型是对应的接口类型,那么要对指定的依赖进行注入的话,需要修改接收依赖的属性之上添加@Autowired和 @Qualifier(value =“指定要注入的默认类名”),还可以通过在要被注入的依赖上方添上@Primary
 
@Controller 控制层注解
 
当不能区分领域是使用下面的注解
@Component  公用的
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值