本人是一名即将进入大三的物联网工程专业的学生,写博客即是为了记录自己的学习历程,又希望能够帮助到很多和自己一样处于起步阶段的萌新。
临渊羡鱼,不如退而结网。一起加油!
博客主页:https://blog.csdn.net/qq_44895397
Spring Boot 集成 Dubbo
1、开发 Dubbo 服务接口
创建普通 Maven 项目,dubbo 服务接口工程
创建一个接口:
public interface StudentService {
String getName(String name);
}
2、开发 Dubbo 服务提供者
创建 SpringBoot 框架的 WEB 项目
1)加入依赖
Dubbo 集成 SpringBoot 框架起步依赖
com.alibaba.spring.boot dubbo-spring-boot-starter 2.0.0 Zookeeper 客户端依赖
com.101tec zkclient 0.10 mysql驱动
mysql mysql-connector-java Mybatis整合spring boot的起步依赖
org.mybatis.spring.boot mybatis-spring-boot-starter 2.0.0 redis依赖
org.springframework.boot spring-boot-starter-data-redis 接口工程
com.yky.springboot springbootdemossminterface 1.0-SNAPSHOT
2)核心配置文件
tomcat的配置
#tomcat的配置 server.port=8090 server.servlet.context-path=/
mysql的配置
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver spring.datasource.url=jdbc:mysql://localhost:3306/springboot?serverTimezone=UTC&characterEncoding=utf-8 spring.datasource.username=root spring.datasource.password=yky
redis的配置
spring.redis.host=localhost spring.redis.port=6379 #spring.redis.password=yky #密码
指定mapper中映射文件存放的位置
mybatis.mapper-locations=classpath:mapper/*.xml
dubbo的配置
#服务名称 spring.application.name=springbootdemossmprivoder #设置当前工程为服务提供者 spring.dubbo.server=true #设置注册中心 spring.dubbo.registry=zookeeper://localhost:2181
3)编写 Dubbo 的接口实现类
@Component
@Service(interfaceName = "com.yky.springboot.service.StudentService",
version = "1.0-SNAPSHOT",timeout = 15000)
public class StudentServiceImpl implements StudentService {
@Autowired
private StudentMapper studentMapper;
@Override
public Student queryStudentById(Integer id) {
return studentMapper.selectByPrimaryKey(id);
}
}
4)启动类上添加@MapperScan@EnableDubboConfiguration注解
@MapperScan(basePackages = “com.yky.springboot.mapper”):扫描mapper文件
@EnableDubboConfiguration:加开启 Dubbo 配置
@SpringBootApplication @MapperScan(basePackages = "com.yky.springboot.mapper") @EnableDubboConfiguration public class SpringbootdemossmprivoderApplication {
public static void main(String[] args) { SpringApplication.run(SpringbootdemossmprivoderApplication.class, args); }
}
3、开发 Dubbo 服务消费者
<resources>
<resource>
<directory>src/main/java</directory>
<includes>
<include>**/*.*</include> </includes> </resource> <resource> <directory>src/main/resources</directory> <includes> <include>**/*.*</include>
</includes>
</resource>
</resources>
1)添加依赖
Dubbo 集成 SpringBoot 框架起步依赖
Zookeeper 客户端依赖
spring boot内嵌的jsp依赖,解析jsp页面
接口工程
<!--Dubbo 集成 SpringBoot 框架起步依赖--> <dependency> <groupId>com.alibaba.spring.boot</groupId> <artifactId>dubbo-spring-boot-starter</artifactId> <version>2.0.0</version> </dependency> <!--Zookeeper 客户端依赖--> <dependency> <groupId>com.101tec</groupId> <artifactId>zkclient</artifactId> <version>0.10</version> </dependency> <!--spring boot内嵌的jsp依赖,解析jsp页面--> <dependency> <groupId>org.apache.tomcat.embed</groupId> <artifactId>tomcat-embed-jasper</artifactId> </dependency> <!--接口工程--> <dependency> <groupId>com.yky.springboot</groupId> <artifactId>springbootdemossminterface</artifactId> <version>1.0-SNAPSHOT</version> </dependency>
2)核心配置文件
tomcat的配置
视图解析器
dubbo服务消费者的配置
#tomcat server.port=8080 server.servlet.context-path=/
#视图解析器 spring.mvc.view.prefix=/ spring.mvc.view.suffix=.jsp
#dubbo服务消费者的配置 #设置dubbo的配置 spring.application.name=springbootdemossmconsumer #设置注册中心 spring.dubbo.registry=zookeeper://localhost:2181
3)控制层的编写
@Controller
public class StudentController {
@Reference(interfaceName = "com.yky.springboot.service.StudentService",
version = "1.0-SNAPSHOT", check = false)
private StudentService service;
@RequestMapping("/student/{stuid}")
public ModelAndView selectStudent(@PathVariable("stuid") Integer id) {
ModelAndView mv = new ModelAndView();
Student student = service.queryStudentById(id);
mv.addObject("student", student);
mv.setViewName("studentjsp");
return mv;
}
}
4)启动类上添加@EnableDubboConfiguration
Spring Boot 非 web 应用程序
方式一:直接在 main 方法中,根据 SpringApplication.run()方 法获取返回的 Spring 容器对象,再获取业务 bean 进行调用
SpringBoot 程序启动后,返回值是
ConfigurableApplicationContext
,它也是一个
Spring 容器对象它其它相当于原来 Spring 中启动容器
ClassPathXmlApplicationContext context = new ClassPathXmlApplicationContext("");
方式二:Spring boot 的入口类实现 CommandLineRunner 接口
- 第一步:SpringBoot 的启动程序,会初始化 spring 容器
- 第二步:通过容器获取 bean,并注入给 userService
- 第三步:容器启动后调用 run 方法,在该方法中调用业务方法
SpringBoot 启动Logo的修改或关闭
关闭 SpringBoot Logo 图标及启动日志
@SpringBootApplication
public class Application {
public static void main(String[] args) {
SpringApplication springApplication = new SpringApplication(Application.class);
//关闭启动 logo 的输出
springApplication.setBannerMode(Banner.Mode.OFF);
springApplication.run(args);
} }
修改启动的 logo 图标
在 src/main/resources 放入 banner.txt 文件
可以利用网站生成图标: https://www.bootschool.net/ascii
启动