springboot+maven-多模块

springboot+maven-多模块项目搭建

项目搭建

1.建立springboot父工程
在这里插入图片描述

2.父工程的type必须选择Maven Pom,项目目录不存在src目录,只有pom.xml
在这里插入图片描述

3.父工程的依赖可以在后期使用DependensManager进行统一管理
在这里插入图片描述

4.一路next,查看项目结构
在这里插入图片描述

5.父工程右键,新增子模块moudle
在这里插入图片描述

6.选择普通maven项目
在这里插入图片描述
在这里插入图片描述
7.继续新建子模块,步骤同上
在这里插入图片描述
8.检查父项目pom.xml文件

  • 父工程的标签为pom
  • 父工程存在包含了所有的子工程,方便统一打包
  • springboot类型的父工程标签为spring-boot-starter-parent
  • 父工程不需要使用其他的依赖,所以推荐使用标签进行依赖包的版本管理,在子模块中使用进行具体的引用
  • 在父工程中直接使用引用的依赖将会传递到各个子模块中,而使用管理的依赖不会被引入到项目中,更不会被传递到子模块中去,因为标签只起到管理版本的作用
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <packaging>pom</packaging>
    <modules>
        <module>web</module>
        <module>dao</module>
    </modules>
    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.4.2</version>
        <relativePath/> <!-- lookup parent from repository -->
    </parent>
    <groupId>com.example</groupId>
    <artifactId>parent</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <name>parent</name>
    <description>Demo project for Spring Boot</description>
    <properties>
        <java.version>1.8</java.version>
    </properties>
    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter</artifactId>
        </dependency>

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>
    </dependencies>

    <build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
            </plugin>
        </plugins>
    </build>

</project>

9.加入springboot-web依赖

<dependencies>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter</artifactId>
    </dependency>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-web</artifactId>
    </dependency>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-test</artifactId>
        <scope>test</scope>
    </dependency>
</dependencies>

10.把子模块dao作为依赖加入到子模块web的pom中,子模块web的pom.xml如下

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <parent>
        <artifactId>parent</artifactId>
        <groupId>com.example</groupId>
        <version>0.0.1-SNAPSHOT</version>
    </parent>
    <modelVersion>4.0.0</modelVersion>
    <artifactId>web</artifactId>

<dependencies>
    <dependency>
        <artifactId>dao</artifactId>
        <groupId>com.example</groupId>
        <version>0.0.1-SNAPSHOT</version>
    </dependency>
</dependencies>

</project>

11.在dao项目中建立User类和UserDao类

public class User {
    public String name;
    public String password;

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public String getPassword() {
        return password;
    }

    public void setPassword(String password) {
        this.password = password;
    }

    public User(String name, String password) {
        this.name = name;
        this.password = password;
    }

    public User() {
    }
}
import com.li.entitys.User;
import org.springframework.stereotype.Repository;

@Repository
public class UserDao {

    public User getUser(){
        return new User("liming","123");
    }
}

在这里插入图片描述
12.web项目中建立controller和springboot启动类,注意启动类的位置必须要高于其他类的位置。在多模块中使用spring注入的时候,idea可能会报红,但不影响使用,可以在设置中更改告警级别(还有一种可能,就@Repository和@Mapper的注解使用不当,见16)
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
13.在编写程序期间,手误删除了子项目的iml文件,导致一直找不到类,最后重新建立了子模块解决

14.使用mybatis的时候,由于在mapper接口中添加的注解时@Respository,导致在编写代码的时候没有报错,启动类上点击springboot扫描放大镜也是可以看到mapper的类,但是在启动项目的时候会报找不到mapper的错误

Consider defining a bean of type 'com.study.mybatis.mappers.UserMapper' in your configuration.  

在这里插入图片描述
在这里插入图片描述

后来百度,在启动类上加入扫描的路径,也不行

@SpringBootApplication(scanBasePackages = {"com.study"})

15.把@Respository注解改为@Mapper,并去掉启动类的scanBasePackages就可以自动注入了(或者在启动类上加入@MapperScan(“com.study”))
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
16.在用idea写一个实现类时引用了mapper类的来调用dao层的处理,使用@Autowired注解时被标红线,找不到bean。
在这里插入图片描述
解决办法:在mapper加@mapper或者@repository注解。

这两种注解的区别在于:

1、使用@mapper后,不需要在spring配置中设置扫描地址,通过mapper.xml里面的namespace属性对应相关的mapper类,spring将动态的生成Bean后注入到ServiceImpl中。

2、@repository则需要在Spring中配置扫描包地址,然后生成dao层的bean,之后被注入到ServiceImpl中。

17.@RestController 等于 @ResponseBody+@Controller 只响应内容到前端,但不能跳转页面,在使用RestController("/get")注解的时候,浏览器访问总司404,后来换成@RestController+@RequestMapping("/get")就可以了
在这里插入图片描述
18.@RestController和@Controller的value属性仅表示该Controller类在spring 的bean池中的名称,不具备路由的功能,需要搭配@RequestMapping来实现路由

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Spring Boot是一个开发框架,用于简化基于Java的应用程序的开发和部署。它提供了一个自动化配置的方式来简化开发过程,同时也提供了一些常用的功能模块,如安全、数据库连接等。 ProGuard是一个代码混淆工具,用于保护Java代码免受逆向工程和代码分析的攻击。它通过对代码进行优化和混淆,使得反编译后的代码难以理解和修改,从而增加了代码的安全性。 Maven是一个项目管理工具,用于构建、发布和管理Java项目的依赖关系。它可以帮助我们方便地管理项目的依赖关系,包括第三方库和插件。同时,它还提供了一些命令和配置,来支持多模块的项目结构。 在使用Spring Boot、ProGuard和Maven实现代码混淆时,我们可以按照以下步骤进行操作: 1. 在Maven中创建一个多模块的项目结构。通过使用Maven的父子项目关系,我们可以在一个主项目中管理多个子模块。 2. 在子模块引入Spring Boot和ProGuard的依赖。在子模块的pom.xml文件中,添加对Spring Boot和ProGuard的相关依赖配置。 3. 配置ProGuard的混淆规则。在子模块中创建一个proguard.cfg文件,并添加相关的混淆规则。这些规则可以用于指定哪些类、方法和字段需要进行混淆,以及如何进行混淆。 4. 在Maven的构建过程中,添加对ProGuard的插件配置。通过对Maven的插件进行配置,使得在构建项目时自动应用ProGuard的混淆规则。 5. 构建和执行项目。在Maven中使用命令进行项目的构建和执行,观察代码是否已经被混淆。如果一切顺利,你将会得到一个经过混淆的代码。 综上所述,通过使用Spring Boot、ProGuard和Maven,我们可以实现对Java代码的混淆保护。这种方式可以增加代码的安全性,防止代码被逆向工程和代码分析的攻击。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值