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、使用接口的方式。

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

  • 相关阅读:
    03_ if 练习 _ little2big
    uva 11275 3D Triangles
    uva 12296 Pieces and Discs
    uvalive 3218 Find the Border
    uvalive 2797 Monster Trap
    uvalive 4992 Jungle Outpost
    uva 2218 Triathlon
    uvalive 3890 Most Distant Point from the Sea
    uvalive 4728 Squares
    uva 10256 The Great Divide
  • 原文地址:https://www.cnblogs.com/evilliu/p/8820630.html
Copyright © 2011-2022 走看看