maven项目中,引入依赖的另一个项目没有spring管理bean,在当前项目中可以进行bean的装配管理吗?

15 篇文章 0 订阅

标题可能把问题阐述的不是很清楚,这里再次说明一下,就是创建一个maven项目作为当前项目,当前项目引入了完整的spring环境,同时当前项目需要引入另外一个项目的依赖,而需要引入的这个项目并没有完整的spring环境,那么引入这个项目依赖以后,此时在当前项目中,可以使用@Autowired注解进行相关bean的装配工作吗?

下面进行验证一下:

  1. 创建一个简单的maven项目,项目结构如下:

在这里插入图片描述

  1. 导入maven依赖,这里很简单,导入一个spring-context的依赖即可:
	<dependencies>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-context</artifactId>
            <version>5.2.9.RELEASE</version>
        </dependency>
    </dependencies>
  1. 编写一个用于测试的java文件:
package com.learn.service;

import org.springframework.stereotype.Service;

@Service
public class TestService {

    public void sayHello() {
        System.out.println("hello,world!");
    }

}

到这里,这个简单的maven项目就算是创建完成了,可以看出来确实是十分简陋,当前这个项目肯定是不能单独正常使用的。

接下来,创建一个maven项目,引入完整的spring依赖,为了简单,这里直接创建一个spring boot项目,项目结构如下:

在这里插入图片描述
这是一个十分简单的spring boot项目,引入上面创建的maven项目依赖:

		<dependency>
            <groupId>org.learn</groupId>
            <artifactId>emptyMavenPro</artifactId>
            <version>1.0-SNAPSHOT</version>
        </dependency>

编写测试用例:

@SpringBootTest
class TestspringApplicationTests {
    @Autowired
    private TestService testService;

    @Test
    void contextLoads() {
        testService.sayHello();
    }

}

运行结果:

hello,world!

可以看到,虽然创建的简陋maven项目中,spring依赖并不完整,可是引入到创建的spring boot项目中,依然可以使用 @Autowired注解进行bean的装配,使程序成功运行。

需要注意的是,上面的maven项目和spring boot项目,包名开头都是相同的,都是以com.learn开头的,spring boot项目中,@SpringBootApplication注解扫描的默认规则是从SpringBoot的项目入口类所在包下面的子包开始扫描,由于创建的maven项目中TestService类所在的包com.learn.service刚好符合这一需求,所以TestService类也被spring扫描到了。如果maven项目中的包命名规则不符合这一要求的话,可以手动指定扫描的包,如下:

@Configuration
@ComponentScan("com.learn222")
public class Config {
}

注意:如果两个项目的包命名规则不一样,同时没有进行扫描指定包的操作,进行bean的装配操作时会抛出异常!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Coder-文小白

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值