Spring的入门

Spring是什么

是javaSE/EE应用full-stack轻量级开源框架

Spring有什么优势

  1. 方便解耦
  2. 方便集成其他框架
  3. 方便程序的测试
  4. AOP编程的支持
  5. 声明式事务的支持
  6. 降低javeEE api的使用难度

IOC控制反转

spring反向控制应用所需要的外部资源
spring控制的资源放置的spring容器中,称为ioc容器

ioc应用案例

案例环境说明
表现层:UserServlet
业务层:UserService

制作步骤

1.导入spring坐标

<dependency>
    <groupId>org.springframework</groupId>
    <artifactId>spring-context</artifactId>
    <version>5.1.9.RELEASE</version>
</dependency>

2.编写业务层与表现层接口与实现类

业务层接口

public interface UserService {
	void save();
}

user实现类

public class UserServiceImpl implements UserService {
    public void save() {
        System.out.println("userService...");
    }
}

3.建立spring配置文件

在resources文件夹中创建applicationContext.xml

<?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
        https://www.springframework.org/schema/beans/spring-beans.xsd">
        <!--以上是头部配置代码 -->  
</beans>

4.配置所需资源(Service)为spring控制的资源

在applicationContext.xml 的beans标签中添加userService资源

    <bean id="userService" class="org.clover.service.impl.UserServiceImpl"/>

5.表现层通过spring获取资源(Service实例)
表现层这里用main方法模拟

    public static void main(String[] args) {
        //加载配置文件
        ApplicationContext ctx = new ClassPathXmlApplicationContext("applicationContext.xml");
        
        //获取资源
        UserService userService = (UserService) ctx.getBean("userService");
		
		//调用方法
        userService.save();
    }

至此,spring简单的案例完成
接下来讲解一下bean标签的其他属性


ioc配置中bean标签的属性

  1. id & name
    bean的名称,可以通过id或者name获取bean。

注意:id要满足xml的命名规范,name可以写多个值,用逗号隔开

  1. class
    bean的类型

  2. scope
    定义bean的作用域

  • singleton:这是Spring默认的scope,表示Spring容器只创建一个bean的实例,Spring在创建第一次后会缓存起来,之后不再创建,全容器共享一个实例

  • prototype:代表线程每次调用这个bean都新创建一个实例

  • request:表示每个request作用域内的请求只创建一个实例

  • session:表示每个session作用域内的请求只创建一个实例

  • application:表示每个application作用域内的请求只创建一个实例

  • websocket:表示每个websocket作用域内的请求只创建一个实例

  1. init-method & destory-method
    定义bean对象初始化或者销毁时完成的工作

DI依赖注入

与ioc相对而言,程序运行所需的资源进入应用程序的方式称为注入

依赖注入的方式

  1. set注入
    基本格式:
<property name="propertyName" value="propertyValue" ref="beanId"/>

示范:

<bean id="userDao" class="org.clover.dao.impl.UserDaoImpl"/>

<bean id="userService" class="org.clover.service.impl.UserServiceImpl">
	<property name="userDao" ref="userDao" />
</bean>

​ name:对应bean中的属性名,要求该属性必须提供可访问的set方法

​ value:设定非引用类型属性对应的值,不能与ref同时使用

​ ref:设定引用类型属性对应bean的id ,不能与value同时使用

  1. 构造器注入
    基本格式:
<bean>
	<constructor-arg name="argsName" value="argsValue" />
</bean>

示范:

<bean id="userDao" class="org.clover.dao.impl.UserDaoImpl"/>

<bean id="userService" class="org.clover.service.impl.UserServiceImpl">
	<constructor-arg name="userDao" ref="userDao" />
	<constructor-arg name="name" value="clover" />
</bean>
  1. 集合类型注入

list props array set map

<property name="list">
    <list>
        <value>clover</value>
        <value>123123</value>
    </list>
</property>

<property name="properties">
    <props>
        <prop key="name">clover</prop>
        <prop key="value">123123</prop>
    </props>
</property>

<property name="array">
    <array>
        <value>123123</value>
        <value>321321</value>
    </array>
</property>

 <property name="hashset">
     <set>
         <value>clover</value>
         <value>123321</value>
     </set>
</property>

<property name="hashmap">
    <map>
        <entry key="name" value="clover"/>
        <entry key="value" value="123321"/>
    </map>
</property>

Spring如何读取properties文件

1、开启context命名空间支持

<?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
        https://www.springframework.org/schema/beans/spring-beans.xsd
		http://www.springframework.org/schema/context
        https://www.springframework.org/schema/context/spring-context.xsd"
>        
</beans>

头部加上三行内容
xmlns:context="http://www.springframework.org/schema/context

http://www.springframework.org/schema/context
https://www.springframework.org/schema/context/spring-context.xsd

2、加载properties文件

<context:property-placeholder location="classpath:jdbc.properties">

3、使用properties中的数据

<property name="driverClassName" value="${jdbc.driver}"/>

spring配置文件中加载第三方资源

<bean id="dataSource" class="com.alibaba.druid.pool.DruidDataSource">
    <property name="driverClassName" value="com.mysql.jdbc.Driver"></property>
    <property name="url" value="jdbc:mysql://localhost:3306/mysql"></property>
    <property name="username" value="root"></property>
    <property name="password" value="root"></property>
</bean>

spring整合mybatis基本配置

<?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
        https://www.springframework.org/schema/beans/spring-beans.xsd
        http://www.springframework.org/schema/context
        https://www.springframework.org/schema/context/spring-context.xsd">

    <!--加载perperties配置文件-->
    <context:property-placeholder location="classpath:*.properties"/>

    <!--加载druid资源-->
    <bean id="dataSource" class="com.alibaba.druid.pool.DruidDataSource">
        <property name="driverClassName" value="${jdbc.driver}"/>
        <property name="url" value="${jdbc.url}"/>
        <property name="username" value="${jdbc.username}"/>
        <property name="password" value="${jdbc.password}"/>
    </bean>

    <!--配置service,注入dao-->
    <bean id="accountService" class="org.clover.service.impl.UserServiceImpl">
        <property name="userDao" ref="userDao"/>
    </bean>

    <!--创建连接用的对象-->
    <bean class="org.mybatis.spring.SqlSessionFactoryBean">
        <property name="dataSource" ref="dataSource"/>
        <property name="typeAliasesPackage" value="org.clover.domain"/>
    </bean>

    <!--加载mybatis映射配置的扫描-->
    <bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
        <property name="basePackage" value="org.clover.dao"/>
    </bean>
</beans>
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值