zoukankan      html  css  js  c++  java
  • JAVA框架 Spring 入门

    一、阐述:

    IoC:我们以前写的框架虽然我们已经进行分层,web、业务层、持久层。但是各个层之间的关系。耦合性比较高,那个层调用其他层的时候,需要new对应层的类的对象,这样的话,我们以后做修改的时候,需要更改各个层的调用。

    耦合性比较高,不利于维护。

    而Spring提出一个IoC的方式管理各个层的资源。

    IoC:inverse of  control(控制反转),也就是各个资源的实例的话权限交给spring框架。

    底层也是通过工厂模式,通过配置文件方式,将每层需要的资源注入到各个层中。这种方式的开发是目前主流的开发方式。

    新老旧对比:

    二:入门

    1)准备工作:

    spring版本:spring-framework-4.2.4.RELEASE-dist.zip

    下载地址:http://repo.springsource.org/libs-release-local/org/springframework/spring/

    包说明:

    1:spring依赖的包,比如说需要导入其他的包,common.io 。。。这个包里有。

    2:是spring框架使用需要的包。

    其中lib里有我们需要的jar包

    这里jar包都是3个:

    第一个是我们使用的jar包。

    第二个是是文档jar包。

    第三个是源码jar包。

    3:第三个是我们使用的文档j压缩包。

    2)导入的jar包:我们先看下spring的结构

    核心core  container:是底层spring  核心容器是(IoC部分)实现任何功能都需要这个核心容器,分别是:Beans配置、Core、Context、以及表达式。

    分别对应下面jar包:

    导入如上jar包。

    日志jar包:

    1:是日志规范

    2:是日志实现类。

    如果在运行的时候报错 文件名太长,请修改目录的文件名字即可。

    日志配置文件:log4j.properites 将日志配置文件拷贝到src下面。

    配置文件:

     1 ### direct log messages to stdout ###
     2 log4j.appender.stdout=org.apache.log4j.ConsoleAppender
     3 log4j.appender.stdout.Target=System.err
     4 log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
     5 log4j.appender.stdout.layout.ConversionPattern=%d{ABSOLUTE} %5p %c{1}:%L - %m%n
     6 
     7 ### direct messages to file mylog.log ###
     8 log4j.appender.file=org.apache.log4j.FileAppender
     9 log4j.appender.file.File=c:mylog.log
    10 log4j.appender.file.layout=org.apache.log4j.PatternLayout
    11 log4j.appender.file.layout.ConversionPattern=%d{ABSOLUTE} %5p %c{1}:%L - %m%n
    12 
    13 ### set log levels - for more verbose logging change 'info' to 'debug' ###
    14 
    15 log4j.rootLogger=info, stdout

     使用日志:

    测试类:通过静态方法getLogger获取日志的对象。

     1 package jd.com.log4jtest;
     2 
     3 
     4 import org.apache.log4j.Logger;
     5 import org.junit.Test;
     6 
     7 public class log4jTest {
     8     private Logger logger=Logger.getLogger(log4jTest.class);
     9     @Test
    10     public void  test(){
    11         logger.info("输出日志了。");
    12     }
    13 
    14 }

     格式:log4j+class名称。

     3)IoC实例:

    配置文件:applicationContext.xml  名字没有固定但是一般都起这个名字。

    文件内容:

    1 <?xml version="1.0" encoding="UTF-8"?>
    2 <beans xmlns="http://www.springframework.org/schema/beans"
    3        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    4        xsi:schemaLocation="
    5         http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd">
    6 
    7 <bean  id="userservice" class="jd.com.IoC.UserServiceImpl"/>
    8 
    9 </beans>

    1、首先约束:在解压包里:spring-framework-4.2.4.RELEASE-distspring-framework-4.2.4.RELEASEdocsspring-framework-referencehtml内的html文件:xsd-configuration.html 打开网页在网页的最下面有bean的约束就IoC的约束:

    标签bean,内的属性di和class。id是调用的时候名称,需要唯一。class是哪个类需要spring管理。是类的全路径。xml文件放在src下面。

     接口:ApplicationContext的实现类ClassPathXmlApplicationContext 参数是xml文件路径。

    代码:(以后再写类的时候,最好写一个接口,一个实现类的形式。)

    接口:

    1 package jd.com.IoC;
    2 
    3 public interface UserSerivce {
    4     void sayOk();
    5 }

    实现类:

    1 package jd.com.IoC;
    2 
    3 public class UserServiceImpl implements  UserSerivce {
    4     @Override
    5     public void sayOk() {
    6         System.out.println("OK");
    7     }
    8 }

     测试方法:

     1 package jd.com.IoC;
     2 
     3 
     4 import org.junit.Test;
     5 import org.springframework.context.ApplicationContext;
     6 import org.springframework.context.support.ClassPathXmlApplicationContext;
     7 
     8 public class Testemo {
     9     @Test
    10     public void testUserService(){
    11       UserSerivce userSerivce=  new UserServiceImpl();
    12       userSerivce.sayOk();
    13     }
    14     @Test
    15     public  void testUserService1(){
    16         ApplicationContext  ac=new ClassPathXmlApplicationContext("applicationContext.xml");
    17         UserServiceImpl userSerivc= (UserServiceImpl) ac.getBean("userservice");
    18         userSerivc.sayOk();
    19     }
    20 
    21 
    22     @Test
    23     public  void testUserService2(){
    24         ApplicationContext  ac=new ClassPathXmlApplicationContext("applicationContext.xml");
    25         UserSerivce  userSerivce= (UserSerivce) ac.getBean("userservice");
    26         userSerivce.sayOk();
    27     }
    28 
    29 
    30 }

     这里有三个测试方法:

    1、是传统以前使用的方法,哪个类在使用哪个资源的时候,哪个类有控制该资源的权限。

    2、使用的实现类的方式。

    3、使用接口的方式。

    推荐第三种方式。原因,如果接口有多个实现类,在调用的时候无需写多个调用方法。

  • 相关阅读:
    FreeRTOS移植到Cortex-M3-M4
    码位颠倒C程序
    开平方与魔数0x5F3759DF:Quake III 开源代码
    MathJax: Web 页面显示数学公式
    Notepad++ NppExport: 让你在Microsoft word 中粘贴语法高亮代码
    [转]matlab 函数三种定义方式
    机器上的几种Eclipse
    自己开发CC3000模块
    Java中的线程的生命周期大体可分为5种状态
    srand和rand的用法和联系
  • 原文地址:https://www.cnblogs.com/evilliu/p/8820630.html
Copyright © 2011-2022 走看看