Spring简单入门

复制对程序中的对象进行集中管理  方便维护和解耦
            
    Spring:是一个分层的JavaSE/EE应用的全栈轻量级开源框架。
        主要作用:完成对象创建 集中管理创建好的对象
    
        Spring主要用于Service层
            
        Spring全家桶:
            SpringMVC:        web
            Spring:        service
            Spring JDBC:    dao
    IOC:控制反转  
        原来:对象的创建在调用方【应用程序】中完成
        现在:对象的创建时交由Spring完成,对象创建好存入到IOC容器
        体现:将对象的创建权有调用方变成了Spring 就进行了一个反转。
        

    DI注入:
        set注入:
            1.在类中声明属性 提供set方法
            2.在bean标签中使用property标签为属性注入数据
                name:属性名称
                value:简单类型数据
                ref:注入IOC容器中管理的数据
        
        构造器注入:
            1.在类中声明属性 提供带参构造方法
            2.在bean标签中使用constructor-arg标签为构造方法参数注入数据
                name:参数名称
                value:简单类型数据
                ref:注入IOC容器中管理的数据
        
        注入方式:        
            set注入:
            构造器注入:
        注入不同的数据类型:
            简单类型数据【基本数据类型+String】:value
            IOC容器管理的数据:使用ref

1.IOC使用
        IOC概念:控制反转,之前要使用一个对象需要再调用方法直接new,
                           现在,由Spring工厂来去创建,相当于将对象的创建权由应用程序交给了Spring
        使用步骤:
            1.创建Maven工厂 导入spring-context依赖
            2.创建接口和实现类
            3.在applicationContext.xml中使用bean标签配置要创建的对象
            4.测试
                3.1:创建工厂对象
                3.2:找工厂要对象
                3.3:调用方法
    
    2.DI使用
        DI概念:依赖注入,由于使用了IOC之后,对象的创建及管理都属于IOC容器,应用程序想使用某个对象需要依赖IOC容器给到
        使用步骤:
            注入方式:
                1.setter注入
                    1.在类中定义属性 提供set方法
                    2.在bean标签中使用property标签为属性赋值
                    <bean>
                        <property name="属性名称" value="简单类型数据" />
                        <property name="属性名称" ref="IOC容器中管理的对象"/>
                    </bean>
                2.构造器注入
                    1.在类中定义属性 提供带参构造方法
                    2.在bean标签中使用constructor-arg标签为构造方法参数赋值
                        <bean>
                            <constructor-arg name="参数名称" value="简单类型数据"/>
                            <constructor-arg name="参数名称" ref="IOC容器中管理的对象"/>
                        </bean>
        使用properties配置文件中的数据为对象的属性注入数据:
            1.准备一个properties配置文件
            2.在applicationContext.xml中引入properties配置文件
                <context:property-placeholder location="classpath:db.properties"/>
                注意:要引入完整的context命令空间
            3.使用${properties.key}获取数据 完成注入   


    1.概念性问题 不需要 了解
    2.UserServiceImpl01 us = context.getBean(UserServiceImpl02.class);
        这个等式不成立!
      UserService us = context.getBean(UserServiceImpl02.class);  成立
    3.实际开发中主流方式使用注解90%
        SSM:大概率会使用XML方式配置
    4.构造器注入  根据构造方法的参数【个数和名称和类型】去调用指定的构造方法    
        javabean实体类:建议给一个空参的和一个全参的构造方法。
    5.自动装配:在需要从IOC容器中获取对象注入到某个bean中就可以使用   【随时】    
    6.注解方式和XML配置方式实现IOC|DI原理必须一样的
        XML方式:直接在XML配置文件中声明
        注解方式:在java类中通过注解标识声明
    
    


Spring整合MyBatis
    目标:希望能够通过Spring获取dao接口的代理对象并加入到IOC容器中管理, 直接注入到service层进行使用即可
    代码编写:
        dao:
        public interface UserDao{
            @Select("select * from user")
            List<User> findAll();
        
        }
        
        service:
        public class UserService{
        
            public List<User> findAll(){
                //1.获取SqlSessionFactory对象
                //2.获取SqlSession对象
                //3.获取dao接口代理对象
                //4.调用方法
            }
        
        }
        
        现在:Spring整合MyBatis之后
        public class UserService{
        
            @Autowired
            private UserDao userDao;
            
            public List<User> findAll(){
                
                //4.调用方法
                userDao.findAll();
            }
        
        }
第一步:SqlSessionFactoryBuilder  -加载配置文件【mybatis-config.xml】-> SqlSessionFactory --> SqlSession
    如何在Spring中得到SqlSession对象?
        让Spring管理创建SqlSessionFactory对象  从而就可以获取到SqlSession对象了
第二步:使用SqlSession对象根据dao接口获取代理对象
    如何通过SqlSession对象根据dao接口得到代理对象?
        让Spring扫描dao接口所在的包,从而得到dao接口代理对象放入到IOC容器中管理
第三步:调用方法   

AOP:面向切面编程
        作用:在不改变方法源代码的基础上为方法增加新的功能,对方法进行增强。
        底层实现:动态代理 增强
            
            目标对象 --增强功能  -->增强后的代理对象
            
    
    UserServiceImpl:    
    public void add(){
        system.out.print("打印日志");
        "..."
        
    }    
    
    public void update(){
        system.out.print("打印日志");
        "..."
    }    
    
    public void delete(){
        system.out.print("打印日志");
        "..."
    }    
    
    public void select(){
        system.out.print("打印日志");
        "..."
    }    
    
    ...


    数据库事务 :事务管理应该在dao层  因为Service层表示进行业务功能处理,往往一个业务功能处理包含多个数据库操作
            想将多个数据库操作作为一个整体执行,就需要添加事务,刚好Spring主要用在Service层,
            所以,在Spring中就为我们提供了事务的管理策略。
    
    Spring 事务管理:声明式事务
    转账业务:
        service:
            public void transfer(){
            
                //1.获取connection对象 开启事务
                conn.setAutoCommit(false);
                
                try{
                    //调用dao 钱减少
                    kouqian();
                    
                    //调用dao 钱增加
                    jiaqian();
                    //2.1:执行成功
                    conn.commit();
                    
                }catch(){
                    
                    //2.2:执行出现异常
                    conn.rollback();
                }
                
            }
            
        dao:
        
            public int kouqian(){
            
            ...
            
            }
            
            public int jiaqian(){...}
    
    
    public void m1(){
    
        m2();
        
    }
    
    
    public void m2(){
        ...
    }

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值