项目搭建系列之spring项目搭建

工具: Intelij IDEA  JDk1.8 以及maven

Group Id 和 Artifact Id 被统称为“坐标”是为了保证项目唯一性而提出的,如果你要把你项目弄到 maven 本地仓库去,你想要找到你的项目就必须根据这两个 id 去查找。
Group Id 一般分为多个段,这里只说两段,第一段为域,第二段为公司名称或者团队名称。域又分为 org、com、cn 等等许多,其中org 为非营利组织,com 为商业组织。举个 apache 公司的 Tomcat 项目例子:这个项目的 Group Id 是 org.apache,它的域是 org(因为 Tomcat 是非营利项目),公司名称是 apache,Artigact Id 是 Tomcat。
比如创建一个项目,如果是自己练习,一般会将 Group Id 设置为 cn.姓名缩写,cn 表示域为中国,如果是公司项目(假设公司为百度),那么 Group Id 应该设置为 com.baidu。Artifact Id 为你要创建的项目名称,依照这个设置,包结构最好是 Group Id 或者 Group Id + Artigact Id 开头,如果有个包 student,那么它的全路径就是Group Id + (Artigact Id +) student。

1、新建project,选择maven,勾选Create from archetype(从架构中选择创建),选择maven-archetype-webapp

 2、next 填写GroupId(项目包名路径),ArtifactId(默认为项目名称)

 

 3、然后点击finish,先看看创建完成的项目,会在对应目录下面生成项目所在的文件目录

 4、项目建好之后就是引入依赖

引入maven依赖:

spring的依赖共有以下四个方面:

1)spring核心依赖 spring-core、spring-beans、spring-context

2)spring dao依赖(提供JDBCTemplate) spring-jdbc、spring-tx

3)spring web依赖 spring-web、spring-webmvc

4)spring test依赖 spring-test

pom/xml文件

  <groupId>com.gentleman.learn</groupId>
    <artifactId>springlearning</artifactId>
    <version>1.0-SNAPSHOT</version>

    <!-- 属性集合 -->
    <properties>
        <!-- 版本变量 -->
        <!-- spring版本号 -->
        <spring.version>4.3.7.RELEASE</spring.version>
        <!-- mybatis版本号 -->
        <mybatis.version>3.2.6</mybatis.version>
        <!-- log4j日志文件管理包版本 -->
        <slf4j.version>1.7.7</slf4j.version>
        <log4j.version>1.2.17</log4j.version>
    </properties>

    <!--依赖集合 -->
    <dependencies>
        <dependency>
            <!-- 单元测试的依赖 -->
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <version>3.8.1</version>
            <scope>test</scope>
        </dependency>

        <!-- Spring依赖 -->
        <!-- 1.Spring核心依赖 -->
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-core</artifactId>
            <version>${spring.version}</version>
        </dependency>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-beans</artifactId>
            <version>${spring.version}</version>
        </dependency>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-context</artifactId>
            <version>${spring.version}</version>
        </dependency>
        <!-- 2.Spring dao依赖 -->
        <!-- spring-jdbc包括了一些如jdbcTemplate的工具类 -->
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-jdbc</artifactId>
            <version>${spring.version}</version>
        </dependency>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-tx</artifactId>
            <version>${spring.version}</version>
        </dependency>
        <!-- 3.Spring web依赖 -->
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-web</artifactId>
            <version>${spring.version}</version>
        </dependency>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-webmvc</artifactId>
            <version>${spring.version}</version>
        </dependency>
        <!-- 4.Spring test依赖:方便做单元测试和集成测试 -->
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-test</artifactId>
            <version>${spring.version}</version>
        </dependency>
    </dependencies>

    <!-- 编译打包 -->
    <build>
        <finalName>gentleman</finalName>
    </build>

 5、配置文件

1)、spring的核心配置文件applicationContext.xml(名字任意,习惯名称),IoC控制反转的理解和实现,在src目录下建立applicationContext.xml(位置:src目录或者 WEB-INF目录)web项目,就放在resources目录即可

xml文件头添加shema约束(复制也可以)

在resources目录新建:ew--->XML-configureation-file--->spring config--->applicationContext.xml

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
       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">

</beans>

2)、将bean交给spring,那么就要在applicationContext.xml中添加配置,比如要将userService交给spring管理,那么就需要添加:

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
       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">

    <!-- 将userService交给Spring管理-->
    <bean name="userService" class="com.gentleman.learn.service.impl.UserServiceImpl"></bean>

    
</beans>

3)、IOC容器装配Bean---基于注解的方式

 1.在要管理的bean上加上注解@Component (Spring2.5以后引入)

 2..在applicationContext.xml中开启注解开启和注解扫描(注解开启和注解扫描之后,扫描到的bean会被自动纳入Spring容器管理)

需要引入context名称空间,此时的xml为:

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xmlns:context="http://www.springframework.org/schema/context"
       xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd">

    <!-- 将userService交给Spring管理-->
    <!--<bean name="userService" class="com.gentleman.learn.service.impl.UserServiceImpl"></bean>-->

    <!--开启spring的注解功能,配置扫描包的时候,spring会自动开启注解功能,故此项可不配置-->
    <!--<context:annotation-config/>-->
    <!-- 配置bean组件扫描 此时会自动扫描base-package包以及子包下面含有@Component注解的bean,纳入spring容器管理-->
    <context:component-scan base-package="com.gentleman"/>
    
</beans>

其他注解:

3.1、Spring3.0后,提供 @Value注解,可以完成简单数据的注入

@Value("sunny")

private String userName

3.2、单独使用@Autowired 按照类型注入

@Autowired private UserService userService ;

3.3、使用@Autowired + @ Qualifier 按照名称注入

@Autowired

@Qualifier("userService")

private UserService userService ;

3.4、使用@Resource默认按照类型注入,加名字则按照名字注入

@Resource

// @Resource(name="userService1")

private UserService userService ;

猜你喜欢

转载自www.cnblogs.com/controller666/p/12889427.html