自己的springboot 2.0的零散知识梳理

1.SpringbootApplication 扫描当前包和同级包

2.springboot整合log4j。
(1)建立log4j.prperties文件,
(2)导入依赖

    <dependency>
        <groupId> org.springframework.boot </groupId>
       <artifacrId> spring-boot-stater-log4j  </artifacrId>
    <version>1.3.8.RELEASE</version>
    </dependency>

3.lombok的引用
添加插件 , idea不需要 eclipse需要
导入依赖

    <dependency>
    	<groupId>org.projectlombok</groupId>
    	<artifactId>lombok</artifactId>
    </dependency>

效果:

import lombok.Data;
@Data
public class User {
	private Integer id;
	private String name;
	private Integer age;

}

pojo类中不需要写set和get方法

而且采用@Slf4j注解,就可以直接调用log.info方法打印日志
3.运行
可以在mapper上面加一个注解@Mapper 或者在application上面加@MapperScan(basePackages=“com.itmayiedu.mapper”) 就可以完成对所有包的注解

-----====
mapper文件的差异,以前是采用的mapper接口,然后在一个mapper.xml文件里面完成对接口方法的实现(数据库的操作)
现在只需要一个mapper.class的接口:

public interface UserMapper {
	@Select("select * from test where name=#{name}")
	User findByName(@Param("name")String name);
	@Insert("insert into test(name,age) values(#{name},#{age})")
	int insert(@Param("name")String name,@Param("age")Integer age);
}

在方法的上面采用注解的方式,直接完成对数据库的操作。


@transactional注解 ,直接加在service中的类的方法上面,能够实现数据回滚,避免出现错误的添加信息。
4.多数据源
一个项目多少个数据源:无限个,根据内存大小
一个项目多数据源如何划分:分包名(业务) 或者是注解的方式:在mapper方法前面加入@Datasource(ref=“***”)

properties文件里面的区别: 其中一个数据源

spring.datasource.test1.driver-class-name=com.mysql.jdbc.Driver
spring.datasource.test1.jdbc-url=jdbc:mysql://localhost:3306/test?characterEncoding=utf8&useSSL=false&useAffectedRows=true&serverTimezone=GMT%2B8&useAffectedRows=true
spring.datasource.test1.username=root
spring.datasource.test1.password=12345

另一个数据源只需要将test1修改成test2

多数据源需要文件来读取 ,下面给出其中一个例子:

package com.itmayiedu.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
@MapperScan(basePackages="com.itmayiedu.test02",sqlSessionFactoryRef="test1SqlSessionFactory")
public class DataSourceConfig {
	@Bean(name="test1DataSource")
	@ConfigurationProperties(prefix="spring.datasource.test1")
	@Primary  //这个注解制定默认的数据源,在springboot2.0之后就可以不用添加了,下面的也是
	public DataSource testDataSource() {
		return DataSourceBuilder.create().build();
		
	}
	@Bean(name="test1SqlSessionFactory")
	@Primary
	public SqlSessionFactory testSessionFactoryBean(@Qualifier("test1DataSource")DataSource dataSource) throws Exception {
		SqlSessionFactoryBean bean = new SqlSessionFactoryBean();
		bean.setDataSource(dataSource);
		//bean.setMapperLocations(new     
		//PathMatchingResourcePatternResolver().getResources("classpath:mybatis/mapper/test1/*.xml")	);
		//注释的这一行是读取mapper文件的,由于本次测试没有mapper文件 所以注释掉
		return bean.getObject();
		
	}
	@Bean(name="test1TransactionManager")
	@Primary
	public DataSourceTransactionManager testTransactionManager(@Qualifier("test1DataSource")DataSource dataSource) throws Exception{
		return new DataSourceTransactionManager(dataSource);
	}
	
	@Bean(name="test1SqlSessionTemplate")
	@Primary
	public SqlSessionTemplate testSqlSessionTemplate(
			@Qualifier("test1SqlSessionFactory")SqlSessionFactory sqlSessionFactory
			)throws Exception {
		return new SqlSessionTemplate(sqlSessionFactory);
		
	}

在service中的方法上面添加@Transaction直接的时候,应该制定数据源管理器:@Transaction(transactionManager=“test2TransactionManager”)
5.整个mybatis分页插件pagehelper

(1)导入依赖

 <dependency>
    	<groupId>com.github.pagehelper</groupId>
    	<artifactId>pagehelper-spring-boot-stater</artifactId>
    	<version>1.2.5</version>
    </dependency>
    
    <dependency>
    	<groupId>org.apache.commons</groupId>
    	<artifactId>commons-lang3</artifactId>
    </dependency>

(2)service层的代码书写

	public List<User>findUserList(int page,int pagesize){
		PageHelper.startPage(page,pagesize);
		List<User> listUser = userMapper.findUserList();
		PageInfo<User>pageInfoUserList = new PageInfo<User>(listUser);
		return pageInfoUserList;
	}	

-----在查询层的上面写上分页的页数和大小,在查询出的下面写入返回值类型。
6. springboot调优
(1)扫包范围。要知道mapper的包,而不是所有的包
(2)JVM调优。
内部调优:
在启动的时候选择run configuration,然后在第二个选项里面,加入堆内存大小,-xx:PrintGCDetails -Xmx1024M -Xms1024M
解释:打印详细GC日志,最大堆内存为1024M ,初始堆内存为1024M,默认为4G
外部调优:

7.springboot jar 打包方式
(1)打开cmd窗口,进入到进入项目目录
(2)输入命令mvn package 或者mvn clean package
(3)打包之后,继续输入java -jar +(可以直接将上一步打包的文件拖到cmd窗口里面,完成对文件的定位)
(4)如果执行第三步的时候出现了没有主清单属性,解决方式如下:

8.监控中心
(1)SpringbootActuator
(2)Springboot-aiminUi
作用:可以监控含有多少个bean标签,还可以检测有多少个接口
9.java代码启动Tomcat

public class Test001 {
    private static int PORT = 8080;
    private static String Contex_Path = "/itmayiedu";
    private static String SERVLET_NAME = "/indexServlet";
    public static void main(String[] args) throws LifecycleException {
         //创建Tomcat服务器
        Tomcat tomcatserver = new Tomcat();
        //设置端口号
        tomcatserver.setPort(PORT);
        //是否设置自动部署
        tomcatserver.getHost().setAutoDeploy(false);
        //创建上下文
        StandardContext standardContext = new StandardContext();
        standardContext.setPath(Contex_Path);
        //监听上下文
        standardContext.addLifecycleListener(new Tomcat.FixContextListener());
        //Tomcat容器添加上下文
        tomcatserver.getHost().addChild(standardContext);
        //创建servlet
        tomcatserver.addServlet(Contex_Path,SERVLET_NAME,new IndexServlet());
        //添加servleturl映射
        standardContext.addServletMapping("/index",SERVLET_NAME);
//        standardContext.addServletMappingDecoded("/index",SERVLET_NAME);
        tomcatserver.start();
        System.out.print("启动成功");
        //异步进行接收请求
        tomcatserver.getServer().await();
    }
1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。
1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值