zoukankan      html  css  js  c++  java
  • Spring框架学习-搭建第一个Spring项目

    步骤一:下载Spring开发包。

       官网:https://spring.io/           下载地址:https://repo.spring.io/libs-release-local/org/springframework/spring/

        spring-framework-3.0.2.RELEASE-dependencies和spring-framework-4.2.4.RELEASE-dist 解压第二个,解压目录:

        

    步骤二:搭建项目,引入Spring项目

      

    创建项目:由于Spring是JavaSE/EE一站式框架,所以既可以创建web项目或者java项目,这里创建web项目。

    导入jar:Spring框架搭建肯定需要核心包,上面Core Container里面四个就是核心,其他的,需要什么功能添加哪个jar,在libs里面找。还有spring已经弄好的日志记录包,在dependencies里面log4j和commons包下

    步骤三:引入相关配置文件(在src下创建)

    log4j.properties

    ### direct log messages to stdout ###
    log4j.appender.stdout=org.apache.log4j.ConsoleAppender
    log4j.appender.stdout.Target=System.err
    log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
    log4j.appender.stdout.layout.ConversionPattern=%d{ABSOLUTE} %5p %c{1}:%L - %m%n
    
    ### direct messages to file mylog.log ###
    log4j.appender.file=org.apache.log4j.FileAppender
    log4j.appender.file.File=c:mylog.log
    log4j.appender.file.layout=org.apache.log4j.PatternLayout
    log4j.appender.file.layout.ConversionPattern=%d{ABSOLUTE} %5p %c{1}:%L - %m%n
    
    ### set log levels - for more verbose logging change 'info' to 'debug' ###
    # error warn info debug trace
    log4j.rootLogger= info, stdout

    applicationContext.xml文件(Spring的核心配置文件)

      头部引入:在解压下来的spring-framework-4.2.4.RELEASE-distdocsspring-framework-referencehtmlxsd-configuration.html里面就有配置文件头部schema约束

    <?xml version="1.0" encoding="UTF-8"?>
    <beans 
        xmlns="http://www.springframework.org/schema/beans"
        xmlns:p="http://www.springframework.org/schema/p"
        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">
         
        <!-- 配置,将实现类的对象创建交给Spring管理
            bean标签:
                id:给bean起个名字,唯一,不能重复,不能出现特殊字符,就看做根据面向接口编程new出来的实例
                class:类的全路径,底层根据全路径生成实例
         -->
        <bean id="userDao" class="cn.xxx.dao.impl.UserDaoImpl">
        <!-- 属性依赖注入,底层会自动封装,只要在dao实现类提供属性和set方法就行 -->
            <property name="name" value="张三"></property>
        </bean>
    </beans>

    UserDaoImpl.java(UserDao接口的实现)

    package cn.xxx.dao.impl;
    
    import cn.xxx.dao.UserDao;
    
    /**
    *@param
    *@author cxh
    */
    public class UserDaoImpl implements UserDao {
        private String name;
    
        public void setName(String name) {
            this.name = name;
        }
    
        @Override
        public void insert() {
            
            System.out.println(name+"用户信息插入");
        }
        
    }

    测试类:

      

        @Test
        public void demo1() {
    //        通过加载配置文件创建Spring工厂类(框架默认加载路径在src下,所以完全可以将配置文件放在一个目录下)
            ApplicationContext applicationContext = new ClassPathXmlApplicationContext("/config/applicationContext.xml");
    //        通过工厂来解析XML获取Bean的实例
            UserDao userDao = (UserDao) applicationContext.getBean("userDao");
            userDao.insert();
        }

    运行结果:

    log4j:WARN No appenders could be found for logger (org.springframework.core.env.StandardEnvironment).
    log4j:WARN Please initialize the log4j system properly.
    张三用户信息插入

    上面就是基于Spring的IOC的搭建。

      IOC:控制反转,将对象的创建权交给Spring

      DI:依赖注入,前提必须有IOC的环境,Spring在管理这个类的时候顺便会注入类的依赖的属性。

      对于上面applicationContext.xml文件里面bean标签还要在说:

     bean的生命周期配置(其实就是dao实现类实例的生命周期)

    •   init-method.属性:值可以随便取,Spring会帮创建一个初始化方法,当创建Dao实例时,默认加载,但是方法体为空,需要在dao实现类里面定义该值方法名的方法,里面写一些初始化加载东西。
    •        destroy-method属性:和上面初始化用法一样,不过是销毁Dao实例后才会加载,也就是说工厂关闭了就销毁了。

     bean的作用范围配置(scope属性):

       singleton:默认的,Spring会采用单例模式创建这个对象

        prototype:  多例模式(Spring和Struts2整合时候用到,值栈是需要多例创建)

       request: Spring创建这个类后,将这个类存入到request域中,应用到web项目中。

         session: 同上,将类存到session域中。

       globalSession:应用到web中,必须在porlet环境下使用,其实就是指在一个地方存入信息后,在其子系统中也用该信息,最典型的的是腾讯软件的登录,如qq和qq空间,没有prolet环境就相当普通session。

  • 相关阅读:
    Spring Bean的生命周期
    Java中的Object类
    Java线程池七个参数
    ROS 第五讲 在模拟器中构建第一个机器人
    ROS 第四讲 让小车在RViz与Gazebo模拟器中跑起来
    ROS 第三讲 操控小乌龟
    ROS 第二讲 基本操作
    ROS 第一讲 引入
    自然语言处理(二) 新词发现或非监督词典构建
    递归找到一个复杂对象中的某个值和它的最小层级
  • 原文地址:https://www.cnblogs.com/ends-earth/p/10804899.html
Copyright © 2011-2022 走看看