一. A项目jar包调用B项目
1.项目b打包依赖修改,把上面的springboot默认打包依赖注释,改为下面的,因为默认打包出来是可执行jar,导入项目a后无法扫描
<!--初始springboot打包插件-->
<!--<build>-->
<!--<plugins>-->
<!--<plugin>-->
<!--<groupId>org.springframework.boot</groupId>-->
<!--<artifactId>spring-boot-maven-plugin</artifactId>-->
<!--</plugin>-->
<!--</plugins>-->
<!--</build>-->
<!--不可执行jar打包插件-->
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<configuration>
<source>1.8</source>
<target>1.8</target>
</configuration>
</plugin>
</plugins>
</build>
- 将项目b打包安装到本地maven仓库,可以用idea界面操作或者命令行,然后把依赖写入项目a的pom中
<dependency>
<groupId>com.example</groupId>
<artifactId>newauto1</artifactId>
<type>jar</type>
<version>0.0.1-SNAPSHOT</version>
</dependency>
-
在项目a中的启动入口处添加需要启动扫描的包,包括项目a和项目b的
注意:项目a和项目b中不能有同名的类名,否则会报错启动不了
@SpringBootApplication(scanBasePackages = {"com.demo4.demo", "com.example.newauto1"})
public class DemoApplication {
public static void main(String[] args) {
SpringApplication.run(DemoApplication.class, args);
}
}
二.项目C接口调用A
- B有一方法
@Service
public class StuServiceImpl implements StuService{
@Autowired
StuMapper stuMapper;
@Autowired
UsersMapper usersMapper;
@Override
public String findStu(String name) {
Stu stu = new Stu();
stu.setStuname(name);
Stu stu1 = stuMapper.selectOne(stu);
return stu1.toString();
}
}
- A调用
@RestController
@RequestMapping("/stu2")
public class Stu2Controller {
@Autowired
private StuService stuService;
@GetMapping("/select")
public String getStu(@Param("userName") String userName ) {
return stuService.findStu(userName);
}
}
- C项目
package com.demo3.demo;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.HttpEntity;
import org.springframework.http.HttpHeaders;
import org.springframework.http.HttpMethod;
import org.springframework.http.ResponseEntity;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.client.RestTemplate;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
@Controller
public class A {
@Autowired
RestTemplate restTemplate;
/**
* 带参数,返回list集合的get请求
* @return
*/
@GetMapping("/getMethodHasParamReturnList")
public ResponseEntity<String> getMethodHasParamReturnList(){
Map<String,Object> param=new HashMap<>();
param.put("pageNum",1);
param.put("pageSize",2);
HttpHeaders headers=new HttpHeaders();
ResponseEntity<String> response = restTemplate.exchange(
"http://127.0.0.1:8082/stu2/select?userName=sss2",
HttpMethod.GET,
new HttpEntity<String>(headers),
String.class,
param);
System.out.println(response.getBody());
return response;
}
}
- postman调用即可
http://127.0.0.1:8080/getMethodHasParamReturnList
三.添加事务
sevice实现类 @Transactional
@Override
@Transactional
public String insertStu(Stu stu) {
stuMapper.insert(stu);
Users users = new Users();
users.setId(stu.getUserid());
users.setUsername(stu.getStuname());
int i = Integer.parseInt(stu.getStuname());
users.setPwd(String.valueOf(i));
usersMapper.insert(users);
return "添加成功了"+stu.getStuname();
}
启动类添加@EnableTransactionManagement
package com.example.newauto1;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.EnableAutoConfiguration;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration;
import org.springframework.transaction.annotation.EnableTransactionManagement;
import tk.mybatis.spring.annotation.MapperScan;
@SpringBootApplication
@MapperScan({"com.example.newauto1.mapper"})
@EnableTransactionManagement
public class Newauto1Application {
public static void main(String[] args) {
SpringApplication.run(Newauto1Application.class, args);
}
}