server.port=9090 # 服务端口号
server.tomcat.uri-encoding=UTF-8 #以Tomcat为web容器时的字符编码
spring.application.name=customer # 应用名称,一般就是项目名称,这个名称在SpringCloud中比较关键
spring.profiles.active=dev #指定当前的活动配置文件,主要用于多环境多配置文件的应用中
spring.http.encoding.charset=UTF-8 #http请求的字符编码
spring.http.multipart.max-file-size=10MB #设置文件上传时单个文件的大小限制
spring.http.multipart.max-request-size=100MB #设置文件上传时总文件大小限制
spring.thymeleaf.prefix=classpath:/templates/ #配置在使用Thymeleaf做页面模板时的前缀,即页面所在路径
spring.thymeleaf.suffix=.html #设置在使用Thymeleaf做页面模板时的后缀
spring.thymeleaf.cache=false #设置在使用Thymeleaf做页面模板时是否启用缓存
spring.mvc.static-path-pattern=/test #设置静态资源的请求路径
spring.resources.static-locations=classpath:/static/,classpath:/public/ #指定静态资源的路径
##以下是使用MySQL数据库的配置
hibernate.dialect=org.hibernate.dialect.MySQL5Dialect #指定数据库方言
hibernate.show_sql=true #是否显示sql语句
hibernate.hbm2dll.auto=update #设置使用Hibernate的自动建表方式
entitymanager.packagesToScan=com.zslin #设置自动扫描的包前缀
spring.datasource.url=jdbc:mysql://localhost:3306/customer?\
useUnicode=true&characterEncoding=utf-8&useSSL=true&autoReconnect=true #数据库链接
spring.datasource.username=root #数据库用户名
spring.datasource.password=123 #数据库用户对应的密码
spring.datasource.driver-class-name=com.mysql.jdbc.Driver #数据库驱动名称
org.springframework.boot
spring-boot-starter-freemarker
1.5.8.RELEASE
mysql
mysql-connector-java
org.springframework.boot
spring-boot-starter-jdbc
com.alibaba
druid-spring-boot-starter
1.1.0
org.mybatis.spring.boot
mybatis-spring-boot-starter
1.3.0
com.alibaba
fastjson
1.2.8
server:
port: 8080
spring:
datasource:
name: test
url: jdbc:mysql://127.0.0.1:3306/cms?characterEncoding=utf8&useSSL=true
username: root
password: 199215
# 使用druid数据源
type: com.alibaba.druid.pool.DruidDataSource
driver-class-name: com.mysql.jdbc.Driver
filters: stat
maxActive: 20
initialSize: 1
maxWait: 60000
minIdle: 1
timeBetweenEvictionRunsMillis: 60000
minEvictableIdleTimeMillis: 300000
validationQuery: select 'x'
testWhileIdle: true
testOnBorrow: false
testOnReturn: false
poolPreparedStatements: true
maxOpenPreparedStatements: 20
freemarker:
#是否缓存页面
cache: false
#freemarker文件路径
template-loader-path: classpath:/templates
mybatis:
#扫描sql.xml文件
mapper-locations: classpath:mapping/*.xml
#自动扫描实体类
type-aliases-package: com.pf.org.cms.entity
/*
简单介绍:
(1)“server:”为服务器相关配置,这里先配了一个端口号为8080其他默认。
(2)“spring:”为Spring相关配置,下面包含了数据源和freemarker两小类,需要注意的是
datasource的url这里的?characterEncoding=utf8&useSSL=true
设置的是字符集和是否SLL加密连接,useSSL针对的是高版本mysql的配置
(5.5.45+, 5.6.26+ and 5.7.6+)。
(3) freemarker的热部署需要配置cache: false。
(4)“mybatis:”为mybatis的相关配置,具体说明注释均有说明,其他配置暂时默认,
后面有需要时修改。
*/
@Service(value = "demoServie")
//也就是可以另起一个名字
public class DemoServiceImpl implements DemoService {
@Autowired
private DemoMapper demoMapper;
@Override
public List getDemos() {
return demoMapper.getDemos();
}
}
但是控制层老样子,唯一的不同就是可以用刚才新起的serviceimpl名字
@Controller
@RequestMapping(value = "/demo")
public class DemoController {
@Autowired
DemoService demoService;
@RequestMapping(value = "/getAll")
public String testDemo(Map map) {
List demos = demoService.getDemos();
map.put("data", demos);
System.out.println(demos.toString());
return ("/testDemo");
}
}
//在resources/templates/testDemo.ftl。
//其中testDemo和控制层中的返回值要一样
hello world! this is my first springboot demo!
<#list data as item>
${item.id} ${item.name} ${item.remark}
#list>
@SpringBootApplication
// mybatis 支持
@MapperScan("com.pf.org.cms.mapper")
public class CmsApplication {
public static void main(String[] args) {
SpringApplication.run(CmsApplication.class, args);
}
}
SpringBoot自身对事务进行了集成,关于事务管理器,
不管是JPA还是JDBC等都实现自接口 PlatformTransactionManager
如果你添加的是spring-boot-starter-jdbc依赖,框架会默认注入DataSourceTransactionManager实例。
如果你添加的是spring-boot-starter-data-jpa依赖,框架会默认注入JpaTransactionManager实例。
所以我们需要做的仅是在配置中开启事务
(使用注解@EnableTransactionManagement)即可使用@Transactional进行事务管理,
@Configuration
@EnableTransactionManagement
// mybatis 支持
@MapperScan("com.pf.org.cms.mapper")
public class BaseDataSource {
private static final Logger log = LoggerFactory.getLogger(BaseDataSource.class);
@Bean
@Primary
@ConfigurationProperties(prefix = "spring.datasource")
public DataSource dataSource() {
log.debug("Configuring Datasource");
return new DruidDataSource();
}
@Bean
public PlatformTransactionManager txManager() {
return new DataSourceTransactionManager(dataSource());
}
}
@Transactional属性
noRollbackForClassName 类名数组,必须继承自Throwable 不会导致事务回滚的异常类名字数组
@Transactional
(propagation = Propagation.REQUIRED,isolation = Isolation.DEFAULT,timeout=36000,rollbackFor=Exception.class)
@Transactional 可以作用于接口、接口方法、类以及类方法上。当作用于类上时,该类的所有 public 方法将都具有该类型的事务属性,同时,我们也可以在方法级别使用该标注来覆盖类级别的定义。
虽然 @Transactional 注解可以作用于接口、接口方法、类以及类方法上,但是 Spring 建议不要在接口或者接口方法上使用该注解,因为这只有在使用基于接口的代理时它才会生效。另外, @Transactional 注解应该只被应用到 public 方法上,这是由 Spring AOP 的本质决定的。如果你在 protected、private 或者默认可见性的方法上使用 @Transactional 注解,这将被忽略,也不会抛出任何异常。
默认情况下,只有来自外部的方法调用才会被AOP代理捕获,也就是,类内部方法调用本类内部的其他方法并不会引起事务行为,即使被调用方法使用@Transactional注解进行修饰。
github地址
https://github.com/HouChenggong/springboot1.git
https://github.com/HouChenggong/springboot1