Spring框架基础知识(一)

目录

1.IOC和DI

1.1DI的两种用法

1.2IOC和DI的区别

2.bean的操作

3.spring注解开发

4.spring在web中的应用

5.junit测试



需要的基本jar包 
在这里插入图片描述

一、IOC和DI

   (1)IOC—Inversion of Control,即“控制反转”,不是什么技术,而是一种设计思想。

本来由我们自己创建实例化对象,现在交给spring来管理。

测试用例:

//(1)在application.xml配置文件中配置bean
<bean id="Admins" class="dao.Admin"></bean>  
//id:是调用的名称。  class:是javabean的全包路

//(2)测试:使用Juint测试
//使用org.springframework的包,进行获取application.xml文件。
ApplicationContext ap = new ClassPathXmlApplicationContext("spring/application.xml");

//使用 .getBean("") 的方法,获取到对应的javabean
Admin bean = (Admin) ap.getBean("Admins");  //交给spring进行实例化对象

   (2)DI—Dependency Injection,即“依赖注入”。

   由容器在运行期间,动态的将某个依赖关系注入到组件中。

依赖注入的两种用法

   (1)Setter注入

  1. 普通注入
//name : 是javabean的属性名称。 value : 是赋值
<bean id="Admins" class="dao.Admin">
        <property name="username" value="黄"></property>
</bean>
  1. List注入
//可以存入多个值, 也可以使用 ref 导入其他的bean
<bean id="Admins" class="dao.Admin">
    <property name="ms">
        <list>
          <value>灿灿</value>  (1)直接注入
          <ref bean="password"/>2)外链注入
        </list>
    </property>
</bean>
  1. map注入
//nap注入。有三种方式。
<property name="ms">//属性名。
<map>
     <entry key="" value=""></entry> //(1)键、值

     <entry key="" >  //(2)键、外链值
       <ref bean=""/>
     </entry>

   //(3)外链键、外链值
     <entry key-ref="" value-ref="" ></entry>
</map>
  1. propertie注入
<property name="ms">

   <props>  //键是key  值写在里面
     <prop key=""> </prop>
   </props>

</property>

   (2)构造注入:
//注意构造的注入,要根据构造函数的参数的多少。要输入对应的值。
//还有 type、ref等属性可以使用
<bean id="Admins" class="dao.Admin">
  //(1)直接存入的值,默认从第一个参数存入
  <constructor-arg name="id" value="99999"></constructor-arg>
  //(2)使用index进行构造函数的参数的定位。
  <constructor-arg index="1" value="huang"></constructor-arg>

</bean>

注意点:如果结构相同,那么标签就可以互换使用。

返回顶部

IOC和DI的区别

      IOC:是指对象实例化的权利交给spring容器来管理

      DI:在spring创建bean对象的过程中,动态的将对象所依赖的属性通过配置注入对象中。


二、spring中bean的操作

  
  1. Bean的实例化

      (1)无参构造器

          Javabean类中,如果有有参构造器。则一定要把无参构造器写上。

      (2)静态工厂方法:

          定义一个工厂类,工厂类中提供一个静态的static。并返回bean对象的方法。(不常用)

//id 调用名称;  class 静态工厂类路径; factory-method 静态工厂的方法 
<bean id="" class=""  factory-method=""></bean>

      (3)实例化工厂方法:

          定义一个工厂类。有非static的创建并返回bean对象。需要配置工厂。还需要配置bean(不常用)

//(1)注册bean   class : 实例化工厂类路径
<bean id="" class=""></bean>
//(2)调用  id 调用名; factory-bean: 上面的id; factory-method 工厂中的方法。
<bean id="" factory-bean="" factory-method=""></bean>

返回顶部

Bean的作用域

      bean的作用域是通过scope属性来描述bean的。

  • (1)Singleton : 单列; 代表spring容器中只有一个bean的实例 (默认的scope属性)
  • (2)Prototype: 多列; 每一次从spring容器中获取时,都会返回一个新的实例。
  • (3)Request: 用在web开发中,将bean对象 request. setAttribute()存储在request域中。
  • (4)Session : 用在web开发中,将bean对象 session.setAttribute()存储在session域中。
Bean的声明周期

在这里插入图片描述
 分情况:

  1. 单例:
    容器创建,对象就生成;只要容器存在,对象就一直存在;容器销毁,对象消亡。
  2. 多例:
    每次使用都会创建新的对象;只要对象在使用,就一直存在;当对象长时间不被使用,就由java进行垃圾回收。

返回顶部

三、注解开发

      使用注解开发需要在配置文件中进行配置注解;

<!-- 开启注解开发 -->
<context:annotation-config/>
    
<!-- 在类中写了注解。还需要进行包的扫描找到 -->
<context:component-scan base-package="dao"></context:component-scan>

base-package:是扫描需要注解的包的全包名路径

注解标签
  1. 创建Bean的注解 
    (1)@Componet   在当前的bean不知道在那一层的时候使用
    (2)@Repository  用于dao层。
    (3)@Service   用于service层。
    (4)@Controller  用于表现层。

  2. 注入注解
    (1)@Value("")   简单注入:
        可以在变量属性中注入,也可以在setter方法中注入。 (写在属性中,可以不创建get、set方法)
    (2)@ Autowired 复杂注入:自动装配。
        (默认是根据类型来装配的。如果在容器中类型不唯一,就把变量名作为bean的id,在容器中查找,找到成功注入。否则,报错)
    (3)@ Qualifier("") 预防多个bean自动装配分别不了。
        在自动在按照类型注入的基础上,再按照bean的id注入。
    (4)@Resource(name = “”)
        直接按照bean的id注入。

  3. 其他注解  
    (1)@Scope(" ")   其实这个属性和想xml中的bean的Scope属性的配置。可以设置为 单列、多列等。
    (2)@PostConstruct 初始化;
    (3)@PreDestroy 销毁方法;

返回顶部

四、spring在web中的应用

      需要导入spring-web的jar包

  1. 在web.xml中配置监听器
<listener>
    <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>

      这个ContextLoaderListener实现了servletContextListener接口,在这个监听器中,当服务器启动时,

      会找applicationContext对象,其实它是一个实现类webApplicationContext对象存入servletContext中。


  1. 在web.xml中配置applicationContext.xml配置文件

      默认情况下,会在WEB-INF目录下找applicationContext文件。如果该路径下没有这个文件,则,就需要进行配置。

//classpath: 配置文件的路径。
<context-param>
      <param-name>contextConfigLocation</param-name>
      <param-value>classpath:spring/application.xml</param-value>
</context-param>

返回顶部

五、junit测试

      需要导入spring-text的jar包。可以进行Junit测试

@RunWith(SpringJUnit4ClassRunner.class) //使用RunWith  然后找到配置文件
@ContextConfiguration(locations = "classpath:spring/application.xml")
public class text {
    
    @Autowired  //使用动态装配进行
    ways way;   //需要装配的类
    
    @Test    //需要
    public void texting() {
        
        way.text();  //需要测试的方法。
    }
}

返回顶部

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值