栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

java | (二十九)String框架

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

java | (二十九)String框架

目录
  • 体系结构
    • String框架上下文对象
    • 多个spring配置文件
    • 配置管理bean对象
  • 注解
  • log4j
    • 基本配置

体系结构


IOC(Inversion Of Control)控制反转

String框架上下文对象

spring上下文是spring framework运行时在JVM中使用的内存区域
spring上下文必需在使用前首先创建
spring上下文最核心的作用是创建、管理应用程序中的Bean对象
BeanFactory接口是spring上下文的顶级接口
BeanFactory子接口:
ApplicationContext:非Web应用Spring上下文接口(键结集成BeanFactory)
WebApplicationContext:Web应用spring上下文接口(直接继承ApplicationContext)

这次我们用maven来配置String
一般项目,要配置String应该要导入20多个jar包,用maven可以下载到仓库,具体教程参考这篇博文
在这篇博文基础上,我多下了个spring-web

maven的pom.xml




  4.0.0

  org.example
  springBasic
  1.0-SNAPSHOT

  springBasic
  
  http://www.example.com

  
    UTF-8
    1.7
    1.7
    5.0.10.RELEASE
  



  
    
      junit
      junit
      4.11
      test
    
    
    
    
      org.springframework
      spring-expression
      ${springVersion}
    
    
      
      org.springframework
      spring-core
      ${springVersion}
    
    
      
      org.springframework
      spring-beans
      ${springVersion}
    
    
      
      org.springframework
      spring-context
      ${springVersion}
    

    
      
      org.springframework
      spring-web
      ${springVersion}
    

  

  
    
      
        
        
          maven-clean-plugin
          3.1.0
        
        
        
          maven-resources-plugin
          3.0.2
        
        
          maven-compiler-plugin
          3.8.0
        
        
          maven-surefire-plugin
          2.22.1
        
        
          maven-jar-plugin
          3.0.2
        
        
          maven-install-plugin
          2.5.2
        
        
          maven-deploy-plugin
          2.8.2
        
        
        
          maven-site-plugin
          3.7.1
        
        
          maven-project-info-reports-plugin
          3.0.0
        
      
    
  

web.xml配置上下文加载路径和Spring监听接口



    
    
        contextConfigLocation
        
            classpath:com/model/conf/spring/ApplicationContext.xml
        
    
    
    
    
        
            org.springframework.web.context.ContextLoaderListener
        
    

其中,ApplicationContext是自己创建的,根据那篇博文,maven下载好后可以直接创建。
如果spring的监听找不到,原因可能是包没有导到位,这里应该是spring-web包,可以在下图位置将相关包加到lib路径下

多个spring配置文件

在原有的基础上,又多建了一个

web.xml配置

    
    
        contextConfigLocation
        
            classpath:com/model/conf/spring/ApplicationContext.xml,
            classpath:com/model/conf/spring/spring-client.xml
        
    

第二种方法:
在ApplicationContext.xml用import导入



        
    

配置管理bean对象

bean常用属性:
id:bean对象在spring上下文中的唯一标识
name:bean对象别名,可有多个
class:bean对象的类型名称
scope:bean对象的存储范围
autowire:bean对象注入方式
init-method:bean对象在创建时调用的初始化方法名称
depends-on:bean对象所依赖的对象名称
lazy-init:设置典型是否延迟初始化
constructor-arg:创建bean对象使用的有参构造器参数设置,常用属性:index,ref,type,value
property:
设置bean对象成员属性
常用属性:nane,ref,value

在xml文件中
首先创建一个Bean类Person及其依赖注入类Printer
Person.java

package com.model.user;

public class Person {
    private String name;
    private int age;
    private String sex;
    private Printer printer;

    public Printer getPrinter() {
        return printer;
    }

    public void setPrinter(Printer printer) {
        this.printer = printer;
    }

    public Person(String name, int age, String sex) {
        this.name = name;
        this.age = age;
        this.sex = sex;
    }

    public Person() {
    }

    public void init(){
        System.out.println("调用init初始化方法");
        this.name = "liang";
        this.age = 22;
        this.sex = "男";
    }
}

Printer.java(用于测试,先不写内容)

package com.model.user;
public class Printer {
}

ApplicationContext.xml


        
    

    

init是初始化方法,表示创建时就调用;depend-on属性为依赖注入类的名称;在Person类下,其依赖注入类Printer要有set方法。
构造子方式注入bean对象
完善上面的printer类,并加上Ink类

package com.model.user;
public class Printer {
    private Ink ink;//依赖的Ink类型javabean对象

    public Printer(Ink ink) {
        System.out.println("构造器方式注入依赖的bean对象");
        this.ink = ink;
    }

    public Printer() {
    }

    public void printFile(){
        System.out.println("正在打印" + ink.getColor());
    }
}
package com.model.user;

public class Ink {
    private String color;

    public Ink(String color) {
        this.color = color;
    }

    public Ink() {
    }

    public String getColor() {
        return color;
    }

    public void setColor(String color) {
        this.color = color;
    }
}

在xml中


        
        
    

    
        
    
注解

使用注释标识java类
@Conponent javabean通用注释,涵盖所有类型bean,应用在类上
@Repository 数据处理层组件注释,应用在类上,通常标识Dao组件
@Service 服务层组件注释,应用在类上,通常标识控制器组件
@Controller 控制层组件注释,应用在类上,通常标识控制器组件
@Lazy 是头延迟初始化注释,应用在类上
@DependsOn 设置依赖的组件集合注释,应用在类上
以上都应用在类上
@Resource 设置依赖bean注释,应用在属性或set方法上
@Autowired 设置按类型自动注入依赖bean注释,应用在属性或set方法上
@Scope 设置bean的作用域范围,应用在类上
@Value 设置属性默认初始值,应用在属性或set方法

例子:
使用@Repository,UserDao.java,其相关的IUserDao不列出来了

package com.model.dao;

import org.springframework.stereotype.Repository;

@Repository(value = "UserDaoBean")
public class UserDao implements IUserDao {

    @Override
    public void addUser() {
        System.out.println("向数据库存入User");
    }
}

service层

package com.model.server;

import com.model.dao.IUserDao;
import com.model.dao.UserDao;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

@Service("UserServiceImpBean")
public class UserServer implements IUserServer{

    @Autowired
    private IUserDao userDao;
    @Override
    public void addUser() {
        new UserDao().addUser();
    }
}

@Autowired 保证当前spring上下文中只有一个此类型的bean对象

servlet:

package com.model.controller;

import com.model.server.IUserServer;
import com.model.server.UserServer;
import org.springframework.stereotype.Service;
import org.springframework.web.context.WebApplicationContext;
import org.springframework.web.context.support.WebApplicationContextUtils;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;

public class UserController extends HttpServlet {
    @Override
    protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        WebApplicationContext context = WebApplicationContextUtils.getWebApplicationContext(this.getServletContext());
        IUserServer userServer = (UserServer)context.getBean("UserServiceImpBean");
        userServer.addUser();

    }
}

结果:

@Resource注入方式
在原有代码加入SystemDaoImp

package com.model.dao;

import org.springframework.stereotype.Repository;

@Repository(value = "SystemDaoImp")
public class SystemDaoImp implements ISystemDao {
    @Override
    public void systemAction() {
        System.out.println("系统操作~~~");
    }
}

在UserServer.java中添加该类

    @Resource(name = "SystemDaoImp")
    private ISystemDao systemDaoImp;

并且加以判断是否注入

        System.out.println("判断systemDaoImp是否注入" + (systemDaoImp == null));

结果为false,不为空,表示注入成功
@Resource有name和type属性,如果未设置 name属性值,也未设置type属性值,则首先按照默认字段名称查找,道道直接注入,找不到则按照type方式类型查找,如果找到则注入;找不到或找到一个以上则输出异常。

log4j

是Apache一个开源项目,提供系统日志的管理服务,以AOP模式切入到应用当中。
组成:

属性设置:
.Xml文件配置
.properties文件配置
Logger日志级别
用来表示输出什么样的日志信息
8个级别从低到高:ALL,TRACE,DEBUG,INFO,OFF,FATAL,ERROR,WARN

Appender输出源
Appender接口定义日志信息输出的目的地
ConsoleAppender 输出到控制台
FileAppender 输出保存为目标日志文件
DailyRollingFileAppender 每日商城一个日志文件
RollingFIleAppender 文件到达指定尺寸产生新文件
WriterAppender 日志信息以流格式发送到指定的地方

Layout日志信息输出格式
Layout抽象类定义以什么样的格式输入日志信息
PatternLayout 自定义格式
SimpleLayout 包含信息级别、信息字符串
HTMLLayout html表格式布局
TTCCLayout 时间、线程、类别等信息

PatternLayout的属性ConversionPattern用来设置日期时间输出格式

基本配置
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/325326.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号