3.IDEA使用maven手动创建Spring项目

IDEA使用maven手动创建Spring项目

  1. 创建pom.xml

引入头文件



    4.0.0

    com.yw
    my-shop
    1.0.0-SNAPSHOT
    war

    

        
        
            org.springframework
            spring-context
            4.3.17.RELEASE
        
        
            org.springframework
            spring-webmvc
            4.3.17.RELEASE
        
        

        
        
            javax.servlet
            javax.servlet-api
            3.1.0
            provided
        
        

        
        
            org.slf4j
            slf4j-api
            1.7.25
        
        
            org.slf4j
            slf4j-log4j12
            1.7.25
        
        
            org.slf4j
            jcl-over-slf4j
            1.7.25
        
        
            org.slf4j
            jul-to-slf4j
            1.7.25
        
        
            log4j
            log4j
            1.2.17
        
        

        
        
            org.apache.commons
            commons-lang3
            3.5
        
    
  1. 创建maven文件夹
  2. 创建三层架构包
  3. 创建前台网站资源
  4. 配置web.xml

为了引入spring web模块的自动装配,必须在web.xml中添加相关监听器以便于创建





    
    
        contextConfigLocation
        classpath:spring-context*.xml
    
    
        org.springframework.web.context.ContextLoaderListener
    
    
    
        login
        com.yw.myshop.web.controller.UserController
    
    
        login
        /login
    

  1. Spring配置文件
  • 在resources文件夹下建立spring-context.xml文件,用于配置需要加载的类
  • 由于每一个模块都要用到获取类,所以在common模块建立一个通用类专门获取配置的类,为了获取application必须实现ApplicationContextAware接口用于获取,DisposableBean接口用于销毁,代码如下
package com.yw.myshop.commons;

import org.apache.commons.lang3.Validate;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.BeansException;
import org.springframework.beans.factory.DisposableBean;
import org.springframework.context.ApplicationContext;
import org.springframework.context.ApplicationContextAware;

public class SpringContext implements ApplicationContextAware,DisposableBean {

    private static final Logger logger = LoggerFactory.getLogger(SpringContext.class);

    private static ApplicationContext applicationContext;

    public static ApplicationContext getApplicationContext(){
        return applicationContext;
    }

    public static  T getBean(String name){
        assertContextInjected();
        return (T) applicationContext.getBean(name);
    }

    public static  T getBean(Class clazz){
        assertContextInjected();
        return applicationContext.getBean(clazz);
    }

    public void setApplicationContext(ApplicationContext applicationContext) throws BeansException {
        SpringContext.applicationContext = applicationContext;
    }

    public void destroy() throws Exception {
        logger.debug("清除SpringContext中的ApplicationContext:{}",applicationContext);
    }

    private static void assertContextInjected() {
        Validate.validState(applicationContext != null, "applicationContext 属性未注入,请在 spring-context.xml 配置中定义 SpringContext");
    }
}

Spring配置的头文件如下




        

        

        


也可以使用注解的方式配置,配置如下,扫描包下所有注解的类,会自动创建

        
        
  1. log4j配置文件

在resources文件夹下创建log4j.properties配置日志

log4j.rootLogger=INFO, console, file

log4j.appender.console=org.apache.log4j.ConsoleAppender
log4j.appender.console.layout=org.apache.log4j.PatternLayout
log4j.appender.console.layout.ConversionPattern=%d %p [%c] - %m%n

log4j.appender.file=org.apache.log4j.DailyRollingFileAppender
log4j.appender.file.File=logs/log.log
log4j.appender.file.layout=org.apache.log4j.PatternLayout
log4j.appender.A3.MaxFileSize=1024KB
log4j.appender.A3.MaxBackupIndex=10
log4j.appender.file.layout.ConversionPattern=%d %p [%c] - %m%n
  1. 代码测试


    image.png

创建过程中遇到的两个坑

完全复制一样的pom.xml却发现在在调用Spring web 实现接口的时候报错找不到类,最后发现在Maven管理中依赖Dependencies和插件Plugins报错,导致包没有完全下载,但是pom文件没有报错,出现这个原因是因为没有配置该项目的本地仓库,全部使用默认的.m2里的仓库,这样就导致pom文件冲突,设置完成以后刷新即可

报错地方


image.png

解决办法
在mac电脑中 IntelliJ IDEA->preferences
在windows中 file->setting
这是针对当前项目的设置

image.png

你可能感兴趣的:(3.IDEA使用maven手动创建Spring项目)