Spring的一些概念

第一天 spring概念和ioc入门(ioc操作和xml配置文件)

第二天 spring的ioc操作(注解)和aop概念

第三天 jdbcTemplate和spring管理事务

第四天 ssh框架整合开发

今天的内容介绍

  1. spring概念

(1) spring核心两部分

(2) spring一站式框架

(3) spring版本

aop

面向切面编程,扩展功能不是修改源代码实现。

ioc

控制反转

比如有一个类,在类里面有方法(不是静态的方法),调用类里面的方法,创建类的对象。
使用对象调用方法,创建类对象的过程,需要new出来对象

把对象的创建不是通过new方式实现,而是交给spring配置创建类对象。

spring是一站式框架

spring在javaee三层结构当中,每一层都提供了不同的解决技术。

hibernate是在DAO层

struts2是在web层

  • web层: springMVC
  • service层:spring IOC
  • DAO层: spring jdbcTemplate

spring版本

hibernate5.x
spring4.x


spring的ioc操作

  1. 把对象的创建交给spring进行管理

  2. ioc操作两部分:

    1. ioc的配置文件方式
    2. ioc的注解的方式

ioc的底层的原理

  1. ioc底层原理使用技术
    1. xml配置文件
    2. dom4j解析xml
    3. 工厂设计模式
    4. 反射

ioc底层原理

public class User{
    public void add(){
        ......
    }
}

//在servlet当中调用类里面的方法

User user = new User();
user.add();

基本缺陷:类名和方法名修改的话,具有耦合性修改。

第一种使用工厂方式来解耦合的操作

public class UserService{
    public void add(){
    }
}

public class UserServlet{
    UserService s = Factory.getService();
    s.add();
}

//解决方案,创建工厂类
public class Factory{
    //提供返回UserService对象的方法
    public static UserService getService(){
        return new UserService();
    }
}

servlet和工厂类耦合

开发思想:高内聚,低耦合

ioc的底层的原理是怎么样的。

把我们的对象创建,用配置文件的方式,进行实现。

public class UserService{
}

public class UserServlet{
    //得到userService对象
    //最原始的做法就是new创建的
    UserFactory.getService
}

第一步操作:创建xml配置文件,配置要创建的对象类

<bean id="userService" class="cn.itcast.UserService"/>
</bean>

第二步操作: 创建工厂类,使用dom4j解析配置文件+反射

public class UserFactory{
    //返回userService对象的方法
    public static UserService getService{
        //1. 使用dom4j解析xml文件
        //根据id值userService,得到id值对应class属性值
        String classValue = "class属性值是类的路径";
        //2. 使用反射创建类的对象
        Class clazz=Class.forName(classValue);
        //创建类对象 
        UserService service = clazz.newInstance();
        return service;
    } 
}
1. xml配置类的id和路径
2. dom4j解析xml 
3. 通过Class.forName通过类的路径创建类
4. 通过反射创建实例

IOC入门案例

第一步 导入jar包

第二步 创建类,在类当中创建方法

第三步 创建spring配置文件,配置创建类

第四步,写代码测试对象创建

spring-framework-4.2.4.RELEASE-dist.zip

jar特点:都有三个jar包

spring-beans-4.2.4-RELEASE.jar
spring-beans-4.2.4-RELEASE.
spring-beans-4.2.4-RELEASE.jar

scope当中的属性值

singleton:单例的,默认值
prototype:多例的,管理action创建的时候,就是prototype
request:创建对象把对象放到request域里面。
session:创建对象把对象放到session域里面。
globalSession:创建对象把对象放到globalSession域里面。

redis数据库来实现单点登录。


什么叫做属性注入

创建对象的时候,向类里面的属性里面设置值。

属性注入方式的介绍

Java代码当中的属性注入

创建对象的时候,向类当中的属性设置值。

  1. 有参构造器
public class User(){
    private String name;
    public User(String name){
        this.name = name;
    }
}

User user = new User("lucy");
  1. set方法
public class User{
    private String name;
    public void setName(String name){
        tihs.name = name;
    }
}

User user = new User();
user.setName("abcd");
  1. 使用接口注入
public interface Dao{
    public void delete(String name);
}

public class DaoImpl implements Dao {
    private String name;
    public void delete(String name){
        this.name = name;
    }
}

在spring框架当中,支持前面两种方式:set方法注入和有参数构造器的方法注入。

那么在spring当中怎么实现呢?

在实际使用当中,使用最多的就是set方法的使用。

使用有参数构造器注入

    <bean name="demo" class="cn.itcast.property.PropertyDemo1">
        <!-- bean标签当中有参数的构造器进行注入 -->
        <constructor-arg name="username" value="小王小马"></constructor-arg>
    </bean>

使用set方式进行注入(重点)

开发当中一般使用的就是这种方法!

    <bean id="book" class="cn.itcast.property.Book">
        <!-- 注入属性值 
            name当中的属性值,就是类当中定义的属性的名称。
            value属性,就是我们设置的具体的值。
        -->
        <property name="bookname" value="易筋经"></property>
    </bean>

注入对象类型属性(重点)

猜你喜欢

转载自blog.csdn.net/weixin_41748874/article/details/80979216
今日推荐