SpringCloud 입문 실험 환경 구축
15357 단어 SpringCloud환경 구축
개인 적 인 이해:
마이크로 서비스 란 모든 모듈 이 자신의 핵심 업 무 를 독립 적 으로 완성 할 수 있 고 특정한 모듈 의 붕 괴 는 다른 모듈 의 운행 에 영향 을 주지 않 는 다 는 것 을 말한다.
모든 마이크로 서 비 스 는 자신 만 의 데이터베이스 가 있다.
모든 작은 서 비 스 는 복잡 한 소프트웨어 시스템 을 구성 했다.
마이크로 서비스 구조
마이크로 서 비 스 는 서비스의 크기 를 말 하 는데 주목 하 는 것 은 구체 적 인 서 비 스 를 완성 하 는 것 이다(병원 의 부서).
마이크로 서비스 구 조 는 일종 의 구조 모델 로 단일 응용 프로그램 을 작은 서비스 로 나 누고 서비스 간 에 서로 조 화 롭 고 상호 적 인 것 을 제창한다.
협조 하여 사용자 에 게 최종 가 치 를 제공 하 다.하나의 단일 응용 프로그램 을 하나의 소형 서비스 로 개발 하 는 방법 으로 모든 서비스 가 실행 되 고 있다.
진행 중 입 니 다.온 병원
장점:
Springboot 는 단일 서 비 스 를 더욱 빠르게 개발 하 는 데 관심 을 가지 고 있 으 며,SpringCloud 는 전체 서비스의 관리 에 관심 을 가지 고 있다.
Spring Cloud 는 일련의 프레임 워 크 의 질서 있 는 집합 으로 Spring Boot 의 개발 편의 성 을 이용 하여 분포 식 시스템 인 프 라 시설 의 개발 을 교묘 하 게 간소화 했다.예 를 들 어 서비스 발견 등록,배치 센터,메시지 버스,부하 균형,차단기,데이터 모니터링 등 은 모두 Spring Boot 의 개발 스타일 로 원 키 작 동 과 배 치 를 할 수 있다.
Spring 은 바퀴 를 중복 제조 하지 않 았 다.이 는 현재 각 회사 가 개발 한 비교적 성숙 하고 실제 시련 을 이 겨 낼 수 있 는 서비스 구 조 를 조합 하여 Spring Boot 스타일 을 통 해 재 포장 하고 복잡 한 배치 와 실현 원 리 를 차단 하 며 최종 적 으로 개발 자 에 게 간단 하고 이해 하기 쉬 우 며 배치 하기 쉬 우 며 유지 하기 쉬 운 분포 식 시스템 개발 도 구 를 남 겼 다.
환경 구축
아이디어 에 Maven 부모 프로젝트 를 새로 만 듭 니 다.pom 설정 에 의존 하 는 버 전 을 관리 합 니 다.
<properties>
<lombock.version>1.18.18</lombock.version>
<log4j.version>1.2.17</log4j.version>
</properties>
<dependencyManagement>
<dependencies>
<!-- https://mvnrepository.com/artifact/org.springframework.cloud/spring-cloud-starter-netflix-eureka-client -->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
<version>3.0.2</version>
</dependency>
<!--spring cloud -->
<!-- https://mvnrepository.com/artifact/org.springframework.cloud/spring-cloud-dependencies -->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-dependencies</artifactId>
<version>Hoxton.SR9</version>
<type>pom</type>
<scope>import</scope>
</dependency>
<!--spring boot -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-dependencies</artifactId>
<version>2.3.5.RELEASE</version>
<type>pom</type>
<scope>import</scope>
</dependency>
<!-- -->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>8.0.22</version>
</dependency>
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid</artifactId>
<version>1.1.21</version>
</dependency>
<!--springboot -->
<!-- <dependency>-->
<!-- <groupId>org.springframework.boot</groupId>-->
<!-- <artifactId>spring-boot-starter</artifactId>-->
<!-- <version>2.4.4</version>-->
<!-- </dependency>-->
<!--JUnit-->
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.13</version>
<scope>test</scope>
</dependency>
<!--lombock-->
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>${lombock.version}</version>
<scope>import</scope>
</dependency>
<!--log4j-->
<dependency>
<groupId>log4j</groupId>
<artifactId>log4j</artifactId>
<version>${log4j.version}</version>
</dependency>
</dependencies>
</dependencyManagement>
1.데이터베이스 만 들 기db 01 이라는 데이터 베 이 스 를 만 듭 니 다.표 dept 가 있 습 니 다.
2.새 하위 모듈 api
그 중 하나의 실체 류 dept 만 이 우리 데이터베이스 에 대응 하 는 표 입 니 다.
public class Dept {
private int deptnumber;
private String dname;
private String d_source;
// get set
}
3.서비스 제공 자로 서 하위 모듈 provider 를 새로 만 듭 니 다.가 져 오기 의존
<dependencies>
<!-- api Dept -->
<dependency>
<groupId>org.example</groupId>
<artifactId>springcloud-api</artifactId>
<version>1.0-SNAPSHOT</version>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
</dependency>
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid</artifactId>
</dependency>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<scope>test</scope>
</dependency>
<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.mybatis.spring.boot</groupId>
<artifactId>mybatis-spring-boot-starter</artifactId>
<version>2.1.1</version>
</dependency>
</dependencies>
프로필 과 대응 하 는 작업 클래스 와 인 터 페 이 스 를 설정 합 니 다.application.xml
server:
port: 8081
mybatis:
type-aliases-package: pojo
mapper-locations: classpath:Mybatis/mapper/*.xml
config-location: classpath:Mybatis/mybatis-config.xml
spring:
application:
name: provider-name
datasource:
type: com.alibaba.druid.pool.DruidDataSource
driver-class-name: com.mysql.cj.jdbc.Driver
username: root
password: 123456
url: jdbc:mysql://localhost:3306/db01?useSSL=false&serverTimezone=UTC&useUnicode=true&characterEncoding=UTF-8
mapper-config.xml 와 Deptmapper.xml
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE configuration
PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration>
<settings>
<setting name="cacheEnabled" value="true"/>
</settings>
</configuration>
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.Dao.DeptDao">
<insert id="add" parameterType="Dept">
insert into dept(dname, d_source) values (#{dname},DATABASE());
</insert>
<select id="queryByID" resultType="Dept" parameterType="Long">
select * from dept where deptnumber = #{id};
</select>
<select id="queryAll" resultType="Dept">
select * from dept;
</select>
</mapper>
대응 하 는 Dao,Controller,Service
@Mapper
public interface DeptDao {
boolean add(Dept dept);
Dept queryByID(long id);
List<Dept> queryAll();
}
@Service
public class DeptImpl implements DeptService{
@Resource
private DeptDao deptDao;
public boolean add(Dept dept) {
return deptDao.add(dept) ;
}
public Dept queryByID(long id) {
System.out.println("deptimpl"+id);
return deptDao.queryByID(id);
}
public List<Dept> queryAll() {
return deptDao.queryAll();
}
}
@RestController
public class DeptController {
@Autowired
private DeptImpl deptimpl;
@PostMapping("/dev/add")
public boolean addDept(@RequestBody Dept dept){
System.out.println(dept);
return deptimpl.add(dept);
}
@GetMapping("/dev/{id}")
public Dept DeptqueryByID(@PathVariable("id") long id) {
System.out.println("deptcontroller"+id);
return deptimpl.queryByID(id);
}
@PostMapping("/dev/list")
public List<Dept> DeptqueryAll() {
return deptimpl.queryAll();
}
시작 클래스
@SpringBootApplication
public class SApplication {
public static void main(String[] args) {
SpringApplication.run(SApplication.class,args);
}
}
새 하위 모듈 consumer 를 소비자 로가 져 오기 의존
<dependencies>
<dependency>
<groupId>org.example</groupId>
<artifactId>springcloud-api</artifactId>
<version>1.0-SNAPSHOT</version>
</dependency>
<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>
</dependencies>
프로필
server:
port: 80
config 클래스 와 controller
/*
RestTemplate Spring3.0 HTTP , REST ,
GET 、POST 、PUT 、DELETE exchange execute。
*/
@Configuration
public class ConfigBean {
@Bean
public RestTemplate getRestTemplate() {
return new RestTemplate();
}
}
@RestController
public class ConsumerController {
@Autowired
private RestTemplate template;
private static final String url="http://localhost:8001";
@RequestMapping("/consumer/get/{id}")
public Dept getByID(@PathVariable long id){
// ,
Dept getEntity = template.getForObject(url + "/dev/" + id, Dept.class);
return getEntity;
}
@RequestMapping("/consumer/add")
public boolean add(String dname){
Dept dept = new Dept();
dept.setDname(dname);
System.out.println(dept);
// , ,
return template.postForObject(url+ "/dev/add",dept,Boolean.class);
}
@RequestMapping("/consumer/list")
public List<Dept> list(){
// ,
return template.postForObject(url+"/dev/list",void.class,List.class);
}
}
시작 클래스 및 실행 결과debug-connect refirrd---debug-전 참 은 null 입 니 다.
@SpringBootApplication
public class DemoApplication {
public static void main(String[] args) {
SpringApplication.run(DemoApplication.class,args);
}
}
debug
하위 항목 은 부모 항목 의 의존 패 키 지 를 사용 할 수 없습니다.
1 부모 프로젝트 pom 사용 시
<dependencyManagement>
<dependencies>
....
</dependencies>
</dependencyManagement>
방식,하위 항목 pom 은 부모 pom 의 jar 패 키 지 를 자동 으로 사용 하지 않 습 니 다.사용 하려 면 groupId 와 artifactId 를 주 고 version 을 주지 않 아 도 됩 니 다.사용 은 버 전 정 보 를 통일 적 으로 관리 하기 위해 서 입 니 다.
하위 프로젝트 에서 사용 할 때 좌 표를 도입 해 야 하지만 version 을 제시 할 필요 가 없습니다.
프로젝트 맨 위 에 있 는 POM 파일 에서 요소 입 니 다.
그 요 소 를 통 해 jar 패키지 의 버 전 을 관리 합 니 다.
하위 항목 에 표시 되 지 않 고 의존 하 는 버 전 번 호 를 참조 하도록 합 니 다.
Maven 은 부자 층 을 따라 위로 찾 습 니 다.
dependency Management 요 소 를 가 진 항목 을 찾 을 때 까지
그리고 이 dependency Management 요소 에서 지정 한 버 전 번 호 를 사용 합 니 다.
required a bean of type 'DeptDao' that could not be found.
@Repository 대신@Mapper 사용 하기
1.@mapper 를 사용 한 후 spring 설정 에 스 캔 주 소 를 설정 하지 않 아 도 됩 니 다.mapper.xml 에 있 는 namespace 속성 을 통 해 관련 된 mapper 류 에 대응 하고 spring 은 동적 으로 Bean 을 생 성 한 후 ServiceImpl 에 주입 합 니 다.
2.@reposcory 는 Spring 에서 스 캔 패키지 주 소 를 설정 한 다음 에 dao 층 의 bean 을 생 성 한 다음 에 ServiceImpl 에 주입 해 야 합 니 다.
Connection refused connect
url 포트 번호,맞 는 지,점용 하 는 지 확인 하 십시오.
RestTemplate 전달 대상 을 받 을 수 없 음(null)
서버 쪽 에 대응 하 는 인자 에@RequestBody 추가
@PostMapping("/dev/add")
public boolean addDept(@RequestBody Dept dept){
System.out.println(dept);
return deptimpl.add(dept);
}
이상 은 바로 SpringCloud 입문 실험 환경 구축 에 대한 상세 한 내용 입 니 다.SpringCloud 환경 구축 에 관 한 자 료 는 저희 의 다른 관련 글 을 주목 해 주 십시오!
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
[Spring Cloud] LoadBancer-01discoveryservice-eureka 라는 프로젝트를 생성한다 3개 항목을 추가한다. 1. DiscoveryserviceEurekaApplication.java 생성된 -application에 @EnableEu...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.