Spring 学习:一

欢迎加入it技术交流群内部有丰厚的程序相关的书籍,CSDN里面需要下载的也可以联系,基本大部分的书我已经下载下来了 ,还有各种资料,欢迎加q裙+ :638809320

Spring :
储存bean对象的容器
spring是一个轻量级的控制反转(ioc)和面向切面(AOP)的容器框架。

####好处:
方便解耦

  • Spring就是一个大工厂,专门负责生成Bean对象,可以将对象创建和依赖关系维护由Spring管理

Aop编程的支持

  • Spring提供面向切面编程,可以方便的实现程序进行权限拦截、运行监控等功能

声明式事务的支持

  • 只需要通过配置就可以完成对事务的管理,而无需手动编程

  • Spring对Junit支持,可以通过注解方面的测试Spring程序

方便集成各种优秀框架

  • Spring 不排除各种优秀的开源框架,其内部提供了各种优秀款那个价的支持 (Struts、Hibernate、mybatis等)

降低JavaEE API的使用难度Spring:

  • 对JavaEE 开发中一些难用的API提供了封装,使用这些API应用难度大大降低。(JDBC、JavaMail等)

##Spring入门
spring.io下载对应的jar包

###Spring核心jar包

  1. Spring-core-3.2.2.RELEASE.jar
    包含Spring框架基本的核心工具类,Spring其他组件要都使用到这个包里的类,是其他组件的基本核心
  2. Spring-beans-3.2.2.RELEASE.jar
    所有应用都要用到,他包含访问配置文件、创建和管理bean 以及进行inversion of Control(ioc)、dependency injection(DI)操作相关的所有类
  3. Spring-Context-3.2.2.RELEASE.jar
    Spring 提供在基础IOC功能上的扩展服务,此外还提供许多企业级服务的支持 如邮件服务、任务调度、JNDI定位、EJB集成、远程访问、缓存以及各种视图框架的封装等
  4. Spring-expression-3.2.2.RELEASE.jar
    Spring 表达语言
  5. com.Springsource.org.apache.commons.logging-1.1.1.jar
    第三方的主要用于处理日志
    在这里插入图片描述
    ###入门案例
    pom.xml依赖配置
	 <dependencies>
        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <version>4.12</version>
            <scope>test</scope>
        </dependency>
        <dependency>
            <groupId>log4j</groupId>
            <artifactId>log4j</artifactId>
            <version>1.2.17</version>
        </dependency>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-core</artifactId>
            <version>5.1.2.RELEASE</version>
        </dependency>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-context</artifactId>
            <version>5.1.2.RELEASE</version>
        </dependency>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-beans</artifactId>
            <version>5.1.2.RELEASE</version>
        </dependency>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-expression</artifactId>
            <version>5.1.2.RELEASE</version>
        </dependency>

    </dependencies>

接口


package com.fnuo.dao;

public interface UserMapper {
    void sayHello();
}

实现类

package com.fnuo.dao.impl;

import com.fnuo.dao.UserMapper;

public class UserMapperImpl implements UserMapper {

    public void sayHello() {
        System.out.println("第一次使用Spring hello world");
    }

}

测试类

import com.fnuo.dao.UserMapper;
import org.junit.Test;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;

public class MyTest {

    @Test
    public void test() {
        //加载beans.xml配置文件
        ApplicationContext context = new ClassPathXmlApplicationContext("beans.xml");
        //从Spring容器获取对象
        UserMapper service = (UserMapper) context.getBean("userService");
        //调用方法
        service.sayHello();

    }
}

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

<bean id="userService" class="com.fnuo.dao.impl.UserMapperImpl"></bean>
</beans>

##ioc
ioc : inverse of control 控制反转的概念:
将原来在程序中手动创建UserService对象的控制权限,交由Spring框架管理,简单说,就是创建UserService 对象控制被反转到了Spring框架

##DI解释
DI:dependency injection 依赖注入 在Spring框架负责创建bean对象时,动态的将依赖对象注入到bean组件。

##Spring容器加载有三种方式

  1. ClassPathXmlApplication: 类路径
  2. 文件西永路径获得配置文件:FileSystemXMLApplicationContext
  3. 使用BeanFActory:XMLBeanFactory:

###Spring内部创建对象原理

  1. 解析xml文件,获取类名,id,属性
  2. 通过反射,用类型创建对象
  3. 给创建的对象赋值

###BeanFactory与ApplicationContext对比
BeanFactory:延时加载,第一次getbean时才会初始化bean
ApplicationContext:即时加载
ApplicationContext是对BeanFactory扩展,提供更多功能

  • 国际化处理
  • 事件传递
  • bean自动装配
  • 各种不同应用层的context实现

###装配bean的三种方式

  1. new实现类
  2. 静态工厂方法
  3. 通过实例工厂方法

###bean的作用域

  1. singleton:在Spring ioc容器中仅存在一个bean实例,bean以单例方式存在,默认值
  2. prototype:每次从容器中调用bean时,都返回一个新的实例,即每次都调用getbean()时,相当于执行new XxxBean()

###bean的生命周期

在这里插入图片描述

  1. instantiate bean对象实例化
  2. populate properties 封装属性
  3. 如果Bean实现BeanNameAware 执行 setBeanName
  4. 如果Bean实现BeanFactoryAware 执行setBeanFactory ,获取Spring容器
  5. 如果存在类实现 BeanPostProcessor(后处理Bean) ,执行postProcessBeforeInitialization
  6. 如果Bean实现InitializingBean 执行 afterPropertiesSet
  7. 调用 指定初始化方法 init
  8. 如果存在类实现 BeanPostProcessor(处理Bean) ,执行postProcessAfterInitialization
    执行业务处理
  9. 如果Bean实现 DisposableBean 执行 destroy
  10. 调用 指定销毁方法 customerDestroy

###SpEL:Spring 表达式

<property name="" vlaue="{#表达式}"

#{123}、#{'tom'}数字字符串
#{beanId}:应用另一个bean对象
#{beanId.参数名}:操作数据
#{beanId.方法名}:执行方法
#{T(类).字段|方法}:静态方法或字段

###Spring 注解
spring 默认情况下注解不生效
context:annotation-cofig/开启注解
<context:component-scan base-package=“包”>主街位置

1.@Component相当于代替

2.1 @Repository dao下类的注解
2.2.1 @Autowired @Service service下的注解 自动注 入XxxDao的值
2.2.2 @Qualifier //根据指定的id注入属性

3 @Controller Servlet下的注解

4.@scope //多例,默认单例
5. @PostContruct //相当于 -init-method
6. @PerDestroy //相当于 -destroy-method

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值