码迷,mamicode.com
首页 > 编程语言 > 详细

spring框架

时间:2019-09-22 16:40:20      阅读:124      评论:0      收藏:0      [点我收藏+]

标签:文件中   cti   prot   col   request   key   nbsp   函数   入门   

1、spring基于xml的IOC环境的搭建和入门

添加pom文件jar包

<!--spring核心jar包--> 
<dependency> <groupId>org.springframework</groupId> <artifactId>spring-context</artifactId> <version>5.0.2.RELEASE</version> </dependency>

 

spring框架beans配置文件

spring创建bean对象的三种方式

  1、使用默认构造函数

  2、使用普通工厂类的,或其他类的某个方法创建对象,并存入spring容器

  3、使用某个类的静态方法创建对象,并存入spring容器中

  4、bean对象的生命周期

    单例对象:

    容器创建bean对象创建

    容器还在,对象活着

    容器销毁,对象销毁

    多例对象:

    当我们使用对象是对象创建

    对象只要在使用过程中就一直活着

    当对象长时间不用时,有java垃圾回收机制回收而死亡

 

spring的依赖注入

能注入的数据有三类

  1、基本类型和String类型

  2、其他bean类型(在配置文件中或注解配置过得bean)

  3、复杂类型和集合类型

注入的方式有三种

  1、使用构造函数注入

  2、使用set方法注入

  3、使用注解<?xml version="1.0" encoding="UTF-8"?>

<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans.xsd">
<!--把对象的创建交给spring来管理-->
  <!--使用默认构造函数创建bean对象,没有默认函数则无法创建对象-->
<bean id="userDao" class="cn.kgc.dao.impl.userDaoImpl"></bean>
<bean id="userService" class="cn.kgc.service.impl.UserServiceImpl"></bean>
  <!--使用普通工厂类的,或其他类的某个方法创建对象,并存入spring容器-->  

  <!--创建工程类对象,并交由Spring管理-->
  <bean id="instanceFactory" class="cn.kgc.util.InstanceFactory"></bean>
  <!--通过工厂类InstanceFactory的getUserService的方法获取UserService的对象-->
  <bean id="userService" factory-bean="instanceFactory" factory-method="getUserService"></bean>

  <!--通过其类的静态方法创建对象,并交由Spring管理-->
  <bean id="userService" class="cn.kgc.util.InstanceFactory" factory-method="getUserService"></bean>

  <!--bean的作用范围调整
    bean便签的scope属性的作用范围
      singleton:单例的(默认)
      prototype:多例的
      request:作用域web应用的请求范围
      session:作用域web应用的一次会话范围
      global-session:作用于集群环境的会话范围(全局会话范围,当不是集群环境时,他就是session,用于负载均衡)
  -->
  <bean id="userService" class="cn.kgc.service.UserService" scope="prototype"></bean>

  <!--使用构造函数的方法进行依赖注入
    使用标签:constructor-arg
    标签出现的位置bean标签的内部
    标签的属性:
      type:用于指定注入数据的数据类型,一般不用
      index:用于指定注入数据在构造函数中指定的索引位置的参数赋值。索引从0开始。(一般不用)
      name:用于指定给构造函数中指定名称的参数赋值,(常用)
      
      value:用于提供基本类型或String类型的数据
      ref:用于指定其他的bean类型数据,指的是spring容器中出现过的bean对象
    优势:在获取bean时注入数据是必须操作,否则对象无法创建
    弊端:改变了bean对象的实例化方式,使我们在创建对象时。如果用不到这些数据也必须提供(一般不用)
  -->
  <bean id="userService" class="cn.kgc.service.UserService">
    <constructor-arg name="name" value="刘高阳"></constructor-arg>
    <constructor-arg name="sex" value="18"></constructor-arg>
    <constructor-arg name="birthday" ref="new"></constructor-arg>
  </bean>
  <bean id="new" class="java.util.Date"></bean>


  <!--使用set方法注入(常用)
  涉及的标签 property
  出现在bean标签内部
  标签属性:
    name:用于指定调用时的set方法名
    value:用于提供基本类型和String类型的数据
    ref:用于指定spring容器中出现过的bean类型
  -->
  <bean id="userService" class="cn.kgc.service.UserService">
    <property name="name" value="刘高阳"></property>
    <property name="sex" value="18"></property>
    <property name="birthday" ref="new"></property>
  </bean>

<!--集合复杂类型注入



-->
  <bean id="userService" class="cn.kgc.service.UserService">
list结构
    <property name="myStrs">
      <array>
        <value>AAA</value>
        <value>BBB</value>
      </array>
    </property>
list结构
    <property name="myList">
      <list>
        <value>AAA</value>
        <value>BBB</value>
      </list>
    </property>
set结构
    <property name="mySet">
      <set>
        <value>AAA</value>
        <value>BBB</value>
      </set>
    </property>
map结构
    <property name="myMap">
      <map>
        <entry key="testA" value="aaa">
          <value>AAA</value>
        </entry>
        <entry key="testB" value="bbb">
          <value>BBB</value>
        </entry>
      </map>
    </property>
map结构
    <property name="myMap">
      <props>
        <prop key="testC">CCC</prop>
      </props>
    </property>
 

  </bean>


</beans>

ApplicationContext三个常用实现类

  ClassPathXmlApplicationContext:他可以加载类路径下的配置文件要求配置文件必须在类路径下,不在的话加载不了

  FileSystemXmlApplicationContext:它可以加载磁盘任意路径下的配置文件(必须有访问权限)

  AnnotationConfigApplicationContext:他用于读取注解创建容器的

 

核心容器的两个接口引发的问题

  ApplicationContext:在构建容器时,采用立即加载的方式。也就是说只要加载配置文件,立即创建配置文件中配置的对象。在单例情况下使用

  BeansFactiory: 在构建核心容器时,创建对象才用的策略是延迟加载。也就是说什么时候用什么时候加载。在多例情况下使用

package cn.kgc;

import cn.kgc.dao.UserDao;
import cn.kgc.service.UserService;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
import org.springframework.context.support.FileSystemXmlApplicationContext;

public class Test {
    


    public static void main(String[] args) {
        //    获取容器对象,并读取配置文件,用于创建配置的对象
ApplicationContext applicationContext=new ClassPathXmlApplicationContext("bean.xml"); ApplicationContext applicationContext1=new FileSystemXmlApplicationContext("E:\\Eclipse工作空间\\Spring\\Spring_day01\\src\\main\\resources\\bean.xml"); //根据id获取Bean对象 UserDao userDao = (UserDao) applicationContext.getBean("userDao"); UserService userService = (UserService) applicationContext1.getBean("userService"); System.out.println(userDao); System.out.println(userService); } }

 

spring基于注解的IOC环境搭建

注解:

@Component

  作用:将当前类对象存入spring容器中,标注在当前类上

  属性:value 用于指定bean的id,不写时默认为当前类名并把首字母改小写

@Controller用于controller层

@Service用于service层

@Repositrory用于dao层

  以上三个注解的作用域@Component作用一样

@Autowired

  作用:自动按类型注入。只要spring容器中有唯一的一个bean对象类型和要注入的变量类型匹配,就可以注入成功

  出现的位置:可以是变量上也可以是方法上

@Qualifier

  作用:按照类型注入的基础之上再按照名称注入。他在给类名称注入是不能单独使用必须和@Autowired配合使用。但在给方法参数注入时可以使用

  属性:value 用于指定注入bean的id

@Resource

  作用:通过name属性指定唯一的bean的id注入

  属性:name 指定bean的id

@Value

  作用:用于注入基本数据类型和String类型的数据

  属性:value。用于指定数据的值。他可以使用spring的EL表达式($(表达式))

@Scope

  作用:用于指定bean的作用范围,标注在类上

  属性:value:指定范围的取值。常用取值:singleton(单例)   prototype(多例)不写时默认单例

@PreDestroy

  作用:用于指定销毁方法,标注在方法上

@PostConstruct

  作用:用于指定初始化方法,标注在方法上

 

bean文件

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xmlns:context="http://www.springframework.org/schema/context"
       xsi:schemaLocation="http://www.springframework.org/schema/beans
       http://www.springframework.org/schema/beans/spring-beans.xsd
       http://www.springframework.org/schema/context
       http:// www.springframework.org/schema/context/spring-context.xsd">
    <!--告知spring容器创建对象时要扫描的包,用于创建对象并放入spring容器-->
    <context:component-scan base-package="cn.kgc"></context:component-scan>
</beans>

 

spring框架

标签:文件中   cti   prot   col   request   key   nbsp   函数   入门   

原文地址:https://www.cnblogs.com/liugaoyanging/p/11567957.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!