首页 > 编程知识 正文

springboot解决了spring什么问题,springboot心得

时间:2023-05-06 06:26:37 阅读:214787 作者:2084

此文章记录一下搭建SpringBoot踩到的坑,下次遇到可以不用找那么多资料了

首先  开发ide :eclipse 没有钱买idea  但是据说idea可以很快的搭建SpringBoot框架

jdk:1.8

maven:3.1.1 

第一步:

打开

https://start.spring.io/

这个网站

和创建maven项目差不多  写一点配置  然后  右边有集成的框架  写完之后  点  generate  就可以下载了

下载到本地 是个zip  解压之后 得到代码

然后把这对破烂玩意放进项目里

然后pom.xml会报个错

百度了一下在pom.xml 中的

加上maven的版本

<maven-jar-plugin.version>3.1.1</maven-jar-plugin.version>

启动类  即带有@SpringBootApplication注解的类

必须放在所有包的最前面 like

否则会404

------------------------------------------------------------------------------

关于配置文件

配置文件名称只能是application.properties或者application.yaml

yaml文件不会写 所以用properties

查资料据说新版springboot写访问路径要加servlet

server.servlet.context-path=/test  #一定要加‘/’ 如果不加 启动会报错
server.port=8083

如果接口名字是/test

那么访问接口的路径就是  ip:8083/test/test

sqlserver数据库连接的配置

#数据库连接
spring.datasource.url=jdbc:sqlserver://hostname:port;DatabaseName=dataBaseName
spring.datasource.driverClassName=com.microsoft.sqlserver.jdbc.SQLServerDriver
spring.datasource.username=username
spring.datasource.password=password

#连接池配置
spring.datasource.initialSize=5
spring.datasource.maxActive=50
spring.datasource.minIdle=5

#mybatis配置
mybatis.mapper-locations=classpath*:com/centaline/mapper/*.xml

暂时未研究一个项目连接多库的配置  后续补充

这样启动的时候 会报错  

原因是找不到dao层的注入

要在main方法上加一行@MapperScan("com.centaline.mapper")

--------------------------------------------------------------------------------------------------------------------------------

springboot连接多数据源

首先更改application.properties

然后要写两个config

config代码如下:

import javax.sql.DataSource;import org.apache.ibatis.session.SqlSessionFactory;import org.mybatis.spring.SqlSessionFactoryBean;import org.mybatis.spring.SqlSessionTemplate;import org.mybatis.spring.annotation.MapperScan;import org.springframework.beans.factory.annotation.Qualifier;import org.springframework.boot.context.properties.ConfigurationProperties;import org.springframework.boot.jdbc.DataSourceBuilder;import org.springframework.context.annotation.Bean;import org.springframework.context.annotation.Configuration;import org.springframework.context.annotation.Primary;import org.springframework.core.io.support.PathMatchingResourcePatternResolver;import org.springframework.jdbc.datasource.DataSourceTransactionManager;@Configuration//注册到springboot容器,相当于原来xml文件里的<beans>@MapperScan(basePackages= {"com.centaline.mapper.mapper1"},sqlSessionFactoryRef="ds1SqlSessionFactory")public class DataSource1Config {@Primary @Bean(name="ds1DataSource")//注入到这个容器 @ConfigurationProperties(prefix="spring.datasource.ds1")//表示取application.properties配置文件中的前缀 //#primary是设置优先,因为有多个数据源,在没有明确指定用哪个的情况下,会用带有primary的,这个注解必须有一个数据源要添加 public DataSource testDataSource() { return DataSourceBuilder.create().build(); }@Primary @Bean(name="ds1SqlSessionFactory") //@Qualifier("xxx")的含义是告诉他使用哪个DataSource public SqlSessionFactory testSqlSessionFactory(@Qualifier("ds1DataSource") DataSource dataSource) throws Exception { SqlSessionFactoryBean bean=new SqlSessionFactoryBean(); bean.setDataSource(dataSource); bean.setMapperLocations(new PathMatchingResourcePatternResolver().getResources("classpath*:com/centaline/mapper/mapper1/*.xml")); return bean.getObject(); }@Primary@Bean(name="ds1TransactionManager")//配置事务public DataSourceTransactionManager testTransactionManager(@Qualifier("ds1DataSource") DataSource dataSource) {return new DataSourceTransactionManager(dataSource);}@Primary @Bean("ds1SqlSessionTemplate") public SqlSessionTemplate db1SqlSessionTemplate(@Qualifier("ds1SqlSessionFactory") SqlSessionFactory sqlSessionFactory){ return new SqlSessionTemplate(sqlSessionFactory); }}

config文件中有mapperscan的配置   所以要把启动类main方法里的mapperscanner删掉

@primary表示默认数据源  多个config文件中必须有个一个primary

config2和1类似  只需更改一下@bean的名字和xml位置  

注意:mybatis使用xml写sql的话 必须要加

这一行  要不然会找不到xml的位置

xml文件必须放在src/main/resource下   否则会报

org.apache.ibatis.binding.BindingException: Invalid bound statement (not found):

至此 springboot框架搭建成功  实现多数据源查询  可以实现基本使用  

--------------------------------------------------------------------

eclipse其实集成了springboot的插件  据说可以一键搭建

但是我下载不下来那个插件 

spring官网下载页面404了

eclipse商店下载速度一直是0

放弃了

//------------------2020-12-17----------

今天遇到了一个很  不知道怎么形容的问题  

在springboot连接多数据源的时候

报了这么一个错

jdbcUrl is required with driverClassName.

无数次百度  告诉我的答案  都是把 application.properties中的jdbcUrl 改为jdbc-url  把driverClassName改为driver-class-name

但是我写的就是jdbc-url

并且找到了报错的位置   我写的driverClassName  也是可以识别出来的 

spring.datasource.ds1.jdbcUrl=jdbc:sqlserver://10.7.113.22;DatabaseName=HouseCoinMallspring.datasource.ds1.driver-class-name=com.microsoft.sqlserver.jdbc.SQLServerDriver

翻博客的时候看到了  我以前用的是springBoot2.3.1版本

而现在用的是2.4.0版本

换回2.3.1版本  果然不报错了

并且  

spring.datasource.ds1.jdbcUrlspring.datasource.ds1.driver-class-namespring.datasource.ds2.jdbc-urlspring.datasource.ds2.driverClassName

这几种写法 都能成功连到数据库

换成2.4.1版本也可以成功  2.4.0版本 不知道是怎么回事  就是不行

//-----------2021-09-16  -------------------

紧跟运维哥脚本  开始学习 springcloud+nacos+sentinel

首先要搭一个springcloud项目

建了好多个module

发现了个问题 我想在A module里  用B module的配置文件的属性 该怎么用呢

答案就是 在Amodule里 加入Bmodule的依赖

<dependency> <groupId>com.centaline</groupId> <artifactId>shopping-usercenter</artifactId> <version>0.1</version></dependency>

这样的 

然后把Bmodule的yml文件 改为 application-xxx.yml

然后在Amodule里  加这么点东西 就好了

spring: profiles: active: usercenter,test

 当一切都是那么顺利的时候 我想打个包  发一下服务器试试的时候

果然就开始报错  符合我的性格 不报错怎么写代码嘛

一直在报这个东西  好烦啊 百度一下  

说是要在父pom上 指定main方法在哪

<build> <plugins> <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> <version>${spring-boot.version}</version> <configuration> <mainClass>com.centaline.mall.Application</mainClass> </configuration> </plugin> </plugins> </build>

加完了

 又开始一直报这个错误  好烦啊

 找了好多资料  都没有解决  然后想找别的开发兄弟问一下(确实是懒了)

 

12点了呀  懂得  还是要自己努力

终于 找到了这么一篇文章

上午的时候 确实找到过这篇文章   但是他第一句话就是 有两个打包插件的情况  因为我只有一个 所以当时我就直接关了  

下午的时候 又重新的看了一次这个文章  感觉突然 就开窍了

要不然我把没有主函数的module  换个打包插件呢

但是最后不是这样解决的 我是在没有主函数的module上加了一句话

<build> <plugins> <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> <version>${spring-boot.version}</version> <configuration> <skip>true</skip> </configuration> </plugin> </plugins> </build>

这样 问题就解决了  运行起来了  个人感觉 换个插件 意思是一样的 但是我没有试过不敢保证 

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。