• 第一节 Spring的环境搭建


     正在构建,扫一扫,敬请期待

    和玩得来的人在一起玩才叫玩!

    和玩不来的人在一起玩,那种感觉就像加班啊!

    关注胖个人微信公众账号,希望对各位学生有所帮助!

     

    --胖先生

       

    Spring框架,什么是Spring框架? SpringIoCAOP容器框架, -->Tomcat[Servlet的容器]

    什么是IoC?控制反转 --->> DI 依赖注入

    1.控制

    2.反转

    3.把生命交给别人来维护 -->JavaBean的类的生命周期交给Spring的容器框架来维护

    作者: Rob Johson

    什么是AOP 面向切面编程

    面向过程编程 -->面对对象编程【面向切面编程-】->在不改变原来的代码的基础上,增加新的功能】-->面向服务编程SOA[普元]

    Spring是一个开源框架,FULL-STACK(全栈)框架 WEB 持久化层 事务 定时 【NodeJS/Python/RxJava】,一站式服务

    MyBatis是一个开源框架 ORM框架和持久层框架

    领域模型[DOMAIN]: 贯穿于控制层/业务逻辑层/数据访问层[持久化层],用来承载数据的模型【实体Bean|持久化类】 百度|Google: domain pojo bo vo po 关系图

    ----------------------------------------------------------------------

    Spring的环境搭建

    • 引入20Jar
    • 获取方式

    <!-- 1.使用属性ID进行获取,保持唯一 推荐-->

    <!-- 相当于 User user1 = new User(); -->

    <bean id="user1" class="com.shxt.model.User"/>

    <!-- 2.通过name命名可以任意命名,不用遵循规则,不推荐使用 -->

    <!-- 相当于 User 123shxt = new User(); #user=123shxt -->

    <bean name="#user,123shxt" class="com.shxt.model.User"/>

    <!-- 3.没有使用name和id,就需要使用全路径,不推荐 -->

    <!-- 相当于 User com.shxt.model.User = new User() -->

    <bean class="com.shxt.model.User"/>

    //获取方式有两种形式
    User u1 =
    (User) factory.getBean("123shxt");

    //推荐
    User u2 =
    factory.getBean("com.shxt.model.User", User.class);

      

    • 注意关于注释 不允许使用 连续的 --
    • 加载核心配置文件的方式
      • BeanFactory factory = new ClassPathXmlApplicationContext("beans.xml");这个是心脏
      • ApplicationContext ac = new ClassPathXmlApplicationContext("beans.xml");组成了人
    • 关于<bean> 标签的scope的属性 默认值是什么?有什么特点 prototype怎么使用?有什么特点?
    • 关于注入方式说明[重中之重]
      • setter注入方式

        <!-- 为类中对应的set方法后的首字母小写 -->
        <!-- 如果有空格出现,那么会保留 -->
        <!-- 如何处理特殊字符: & &amp; < &lt; > &gt; " &quot; ' &qust;
        1.第一种方式: 转义

        2.第二种方式:<![CDATA[悟空&齐天大圣]]>

        -->

        <!-- 如何复制NULL有两种方式,推荐使用<null/>标签 -->

        <!-- 变量的时候如果要生成get和set方法,那么该变量前两个字母一定为两个小写 -->

    <bean id="user1" class="com.shxt.model.User" >

    <!-- 为类中对应的setter方法的首字母小写 -->

    <property name="account">

    <value>wukong</value>

    </property>

    <!--

    <property name="user_name" >

    <value>悟空齐&amp;天大圣</value>

    </property>

    -->

    <property name="user_name">

    <value><![CDATA[悟空&齐天大圣]]></value>

    </property>

    <!-- 不推荐方式

    <property name="shxt">

    <value>null</value>

    </property>

    -->

    <property name="shxt"><null/></property>

     

    </bean>

    • 构造函数的注入方式

    <bean id="user1" class="com.shxt.model.User" >

    <!-- 类型方式 -->

    <!--

    <constructor-arg type="int">

    <value>500</value>

    </constructor-arg>

    <constructor-arg type="java.lang.String" value="悟空"/>

    -->

    <!-- 索引方式:

    <constructor-arg index="0" value="悟空"/>

    <constructor-arg index="1" value="wukong"/>

    -->

    <!-- 如果使用构造函数方式,只是推荐混合模式 -->

    <constructor-arg index="0" type="java.lang.String" value="悟空"/>

    <constructor-arg index="1" type="java.lang.String" value="wukong"/>

    <constructor-arg index="2" type="double" value="5000"/>

    </bean>

    package com.shxt.model;

       

    import java.io.Serializable;

    // --> 构造函数测试类

    public class User implements Serializable {

    private String user_name;

    private String account;

    private int num;

       

    private double price;

    public User() {

    System.out.println("对User进行实例化");

    }

    public User(String user_name, String account, double price) {

    System.out.println("&&&&&&&&&&&&&&");

    this.user_name = user_name;

    this.account = account;

    this.price = price;

    }

    public User(String user_name, String account, int num) {

    System.out.println("88888888");

    this.user_name = user_name;

    this.account = account;

    this.num = num;

    }

    public User(String user_name, int num) {

    System.out.println("User(String "+user_name+", int "+num+")");

    this.user_name = user_name;

    this.num = num;

    }

       

    public User( int num,String user_name) {

    System.out.println("****");

    this.user_name = user_name;

    this.num = num;

    }

    }

      

    • 静态工厂[不推荐使用]
    • 在以后的学习当中,XML文件都会有如下的问题: 五个特殊的字符需要进行处理 & &amp; < &lt; > &gt; " &quot; ' &qust;
    • 使用Setter方式注入复杂的数据类型[没有包含对象方式或者接口方式]

    package com.shxt.model;

       

    import java.util.List;

    import java.util.Map;

    import java.util.Properties;

    import java.util.Set;

       

    public class Person {

    private String name;

    private List<String> hobbys;

    private Set<Integer> nums;

    private Map<String, Object> maps;

    private Properties ps = new Properties();

    public Person() {

    System.out.println("Person注入");

    }

    public String getName() {

    return name;

    }

    public void setName(String name) {

    this.name = name;

    }

    public List<String> getHobbys() {

    return hobbys;

    }

    public void setHobbys(List<String> hobbys) {

    this.hobbys = hobbys;

    }

    public Set<Integer> getNums() {

    return nums;

    }

    public void setNums(Set<Integer> nums) {

    this.nums = nums;

    }

    public Map<String, Object> getMaps() {

    return maps;

    }

    public void setMaps(Map<String, Object> maps) {

    this.maps = maps;

    }

    public Properties getPs() {

    return ps;

    }

    public void setPs(Properties ps) {

    this.ps = ps;

    }

       

    }

      

    <bean id="person" class="com.shxt.model.Person">

    <property name="name" value="张三"/>

    <property name="hobbys">

    <list>

    <value>篮球</value>

    <value>足球</value>

    </list>

    </property>

    <property name="nums">

    <set>

    <value>100</value>

    <value>200</value>

    <value>100</value>

    </set>

    </property>

    <property name="maps">

    <map>

    <entry key="shxt" value="四海兴唐"/>

    <entry key="xy37" value="祥云37"/>

    <entry key="xy37" value="悟空"/>

    </map>

    </property>

    <!-- 简单统一异常处理 -->

    <property name="ps">

    <props>

    <prop key="url">数据路径</prop>

    <prop key="user_name">root</prop>

    </props>

    </property>

    </bean>

       

       

       

       

       

       

       

       

       

       

       

       

       

       

       

       

       

       

       

       

       

       

       

       

       

       

  • 相关阅读:
    个人项目(零)
    个人项目
    H5页面键盘弹出,遮挡输入框问题(转文)
    UEditor 使用setContent()遇到的奇葩问题
    限制textarea每行输入N个字符串
    权限管理简易实现
    使用git上传github遇到的问题
    跟随鼠标移动的遮罩层
    Web字体大揭秘
    @media的使用
  • 原文地址:https://www.cnblogs.com/pangxiansheng/p/5422878.html
Copyright © 2020-2023  润新知