java mvc返回js_Java的学习(39)springboot
使用Spring boot ,可以輕松的創(chuàng)建獨(dú)立運(yùn)行的程序,非常容易構(gòu)建獨(dú)立的服務(wù)組件,是實(shí)現(xiàn)分布式架構(gòu)、微服務(wù)架構(gòu)利器。
Spring boot簡化了第三方包的引用,通過提供的starter,簡化了依賴包的配置
Spring boot的優(yōu)點(diǎn)
輕松創(chuàng)建獨(dú)立的Spring應(yīng)用程序。
內(nèi)嵌Tomcat、jetty等web容器,不需要部署WAR文件。
提供一系列的“starter” 來簡化的Maven配置,不需要添加很多依賴。
開箱即用,盡可能自動(dòng)配置Spring。
創(chuàng)建一個(gè) maven war項(xiàng)目(test1)
創(chuàng)建一個(gè) maven jar項(xiàng)目(test2)
在pom.xml添加spring-boot-starter-web依賴
<parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-parent</artifactId><version>1.5.9.RELEASE</version></parent><dependencies><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency></dependencies>寫一個(gè)控制器如下,然后寫一個(gè)main方法,把程序跑起來:
import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.EnableAutoConfiguration; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.ResponseBody; import org.springframework.web.bind.annotation.RestController;@RestController//相當(dāng)于聲明Controller - 提共restful 風(fēng)格 @EnableAutoConfiguration//自動(dòng)配置,不需要寫spring的配置文件 class HelloController {@RequestMapping("/hello")//映射路徑@ResponseBody//響應(yīng)體public String hello() {return "Hello World";}public static void main(String[] args) {//啟動(dòng)程序SpringApplication.run(HelloController.class, args);} }在瀏覽器中訪問http://localhost:8080/hello
SpringBoot的啟動(dòng)方式
第一種:
在控制器配置EnableAutoConfiguration并使用SpringApplication啟動(dòng)程序
第二種【常用】
創(chuàng)建一個(gè)App類,在App類中配置EnableAutoConfiguration和組件掃描ComponentScan,
然后使用SpringApplication啟動(dòng)程序,這樣就可以訪問多個(gè)Controller了.
創(chuàng)建一個(gè)User控制器
創(chuàng)建App類
使用 Maven 命令“mvn dependency:tree”來查看項(xiàng)目實(shí)際的依賴
web開發(fā)
靜態(tài)資源的訪問
在我們開發(fā)Web應(yīng)用的時(shí)候,需要引用大量的js、css、圖片等靜態(tài)資源。
Spring Boot默認(rèn)提供靜態(tài)資源目錄位置需置于classpath下,目錄名需符合如下規(guī)則:
/static
/public
/resources
/META-INF/resources
自動(dòng)返回json格式數(shù)據(jù)
全局捕獲異常
@ExceptionHandler 表示攔截異常
@ControllerAdvice
controller 的一個(gè)輔助類,最常用的就是作為全局異常處理的切面類可以指定掃描范圍
約定了幾種可行的返回值,如果是直接返回 model 類的話,需要使用
@ResponseBody 進(jìn)行 json 轉(zhuǎn)換
在com.gyf.web.exception包中定義一個(gè)全局異常類
@ControllerAdvice在啟動(dòng)spring中,配置掃描包為com.gyf.web
在某個(gè)映射的方法中添加個(gè)int i = 10/0的算術(shù)異常
訪問上的個(gè)路徑結(jié)果為
渲染W(wǎng)eb頁面
Freemarker的使用
在pom.xml中添加依賴
<!-- 引入freeMarker的依賴包. --> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-freemarker</artifactId> </dependency>寫個(gè)控制器,并返回些數(shù)據(jù)
創(chuàng)建list.ftl文件
<!DOCTYPE html> <html> <head lang="en"> <meta charset="UTF-8" /> <title></title> </head> <body>歡迎${loginname}<#if age <= 17>小哥<#elseif age <= 30>先生<#else>大叔</#if>登錄<table border="1"><tr><td>ID</td><td>名字</td><td>性別</td></tr><#list stuList?sort_by("id")?reverse as stu><tr><td> ${stu.id}</td><td> ${stu.name}</td><td> ${stu.gender}</td></tr></#list></table> </body> </html>SpringBoot 使用jsp
pom文件引入以下依賴
<parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-parent</artifactId><version>1.3.3.RELEASE</version></parent><dependencies><!-- SpringBoot 核心組件 --><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-tomcat</artifactId></dependency><dependency><groupId>org.apache.tomcat.embed</groupId><artifactId>tomcat-embed-jasper</artifactId></dependency></dependencies>application.properties創(chuàng)建以下配置
spring.mvc.view.prefix=/WEB-INF/view/ spring.mvc.view.suffix=.jsp控制器代碼
jsp
數(shù)據(jù)庫訪問
SpringBoot使用JDBC
添加依賴
<!-- JDBC --><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-jdbc</artifactId></dependency><!-- 數(shù)據(jù)庫驅(qū)動(dòng) --><dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-test</artifactId><scope>test</scope></dependency>application.properties新增配置
#視圖配置 spring.mvc.view.prefix=/WEB-INF/view/ spring.mvc.view.suffix=.jsp #數(shù)據(jù)庫配置 spring.datasource.url=jdbc:mysql://localhost:3306/day12 spring.datasource.username=root spring.datasource.password=123456 spring.datasource.driver-class-name=com.mysql.jdbc.DriverService
Controller
App
使用Mybatis
pom導(dǎo)入
<parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-parent</artifactId><version>1.3.2.RELEASE</version><relativePath /> <!-- lookup parent from repository --></parent><dependencies><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter</artifactId></dependency><!-- 單元測試 --><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-test</artifactId><scope>test</scope></dependency><!-- mybaties --><dependency><groupId>org.mybatis.spring.boot</groupId><artifactId>mybatis-spring-boot-starter</artifactId><version>1.1.1</version></dependency><!-- mysql驅(qū)動(dòng) --><dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId></dependency><dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency></dependencies>數(shù)據(jù)庫配置文件
Mapper
如果不使用注釋則換成xml形式,將這個(gè)放入Maper包中
<?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.gyf.mapper.UserMapper" ><insert id="save">insert into t_user (username,password) VALUES(#{0},#{1})</insert><select id="findByUsername" resultType="com.gyf.model.User" parameterType="string">select * from t_user where username = #{username,jdbcType=VARCHAR}</select> </mapper>并在pom中添加下面代碼
<build><resources><resource><directory>src/main/java</directory><includes><include>**/*.xml</include></includes></resource></resources> </build>Controller
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.ResponseBody; import com.gyf.mapper.UserMapper; import com.gyf.model.User;@Controller @RequestMapping("/user") public class UserController {@Autowiredprivate UserMapper userMapper;@RequestMapping("/find")@ResponseBodypublic User find(String name){return userMapper.findByName(name);}@ResponseBody@RequestMapping("/add")public int add(String name){return userMapper.insert(name,"e10adc3949ba59abbe56e057f20f883e");} }APP
import org.mybatis.spring.annotation.MapperScan; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.EnableAutoConfiguration; import org.springframework.context.annotation.ComponentScan;@ComponentScan(basePackages={"com.gyf.controller"}) @MapperScan(basePackages={"com.gyf.mapper"})//掃描Mapper @EnableAutoConfiguration public class App {public static void main(String[] args) {SpringApplication.run(App.class, args);} }spring中使用的事務(wù)
只需要加個(gè)Transactional注解即可
配置多數(shù)據(jù)源
配置文件中新增兩個(gè)數(shù)據(jù)源
spring.datasource.test1.driverClassName=com.mysql.jdbc.Driver spring.datasource.test1.url=jdbc:mysql://localhost:3306/test1?useUnicode=true&characterEncoding=utf-8 spring.datasource.test1.username=root spring.datasource.test1.password=123456spring.datasource.test2.driverClassName=com.mysql.jdbc.Driver spring.datasource.test2.url=jdbc:mysql://localhost:3306/test2?useUnicode=true&characterEncoding=utf-8 spring.datasource.test2.username=root spring.datasource.test2.password=123456建表語句
use test1; CREATE table user(id int PRIMARY KEY AUTO_INCREMENT,username VARCHAR(50),password VARCHAR(50),email VARCHAR(50),birthday TIMESTAMP );use test2; CREATE table customer(id int PRIMARY KEY AUTO_INCREMENT,name VARCHAR(50),tel VARCHAR(50) );寫兩個(gè)數(shù)據(jù)源配置(注意:Primary注釋只能配給一個(gè)數(shù)據(jù)源)
DataSource01
@ConfigurationDataSource02
@Configurationtest1 Mapper&service
test2 mapper & service
Controller
App
多數(shù)據(jù)源問題(customer表會(huì)插入數(shù)據(jù))
Transactoinal的事務(wù)只針對(duì)userMapper有效
springboot中的多事務(wù)管理(解決多數(shù)據(jù)源事務(wù)問題)
添加jta事務(wù)依賴
<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-jta-atomikos</artifactId></dependency>修改數(shù)據(jù)庫連接配置數(shù)據(jù)
# Mysql 1 mysql.datasource.test1.url = jdbc:mysql://localhost:3306/test1?useUnicode=true&characterEncoding=utf-8 mysql.datasource.test1.username = root mysql.datasource.test1.password = 123456mysql.datasource.test1.minPoolSize = 3 mysql.datasource.test1.maxPoolSize = 25 mysql.datasource.test1.maxLifetime = 20000 mysql.datasource.test1.borrowConnectionTimeout = 30 mysql.datasource.test1.loginTimeout = 30 mysql.datasource.test1.maintenanceInterval = 60 mysql.datasource.test1.maxIdleTime = 60mysql.datasource.test1.testQuery = select 1 # Mysql 2 mysql.datasource.test2.url =jdbc:mysql://localhost:3306/test2?useUnicode=true&characterEncoding=utf-8 mysql.datasource.test2.username =root mysql.datasource.test2.password =123456 mysql.datasource.test2.minPoolSize = 3 mysql.datasource.test2.maxPoolSize = 25 mysql.datasource.test2.maxLifetime = 20000 mysql.datasource.test2.borrowConnectionTimeout = 30 mysql.datasource.test2.loginTimeout = 30 mysql.datasource.test2.maintenanceInterval = 60 mysql.datasource.test2.maxIdleTime = 60 mysql.datasource.test2.testQuery = select 1添加2個(gè)配置模型
模型放在com.gyf.dbconfig包(并添加get,set方法)
@ConfigurationProperties兩個(gè)數(shù)據(jù)源配置
DataSource01
import java.sql.SQLException; 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.autoconfigure.jdbc.DataSourceBuilder; import org.springframework.boot.context.properties.ConfigurationProperties; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.context.annotation.Primary; import org.springframework.jdbc.datasource.DataSourceTransactionManager;import com.atomikos.jdbc.AtomikosDataSourceBean; import com.gyf.dbconfig.DBConfig1; import com.mysql.jdbc.jdbc2.optional.MysqlXADataSource;@Configuration//注解到springboot容器中 @MapperScan(basePackages="com.gyf.test1.mapper",sqlSessionFactoryRef="test1SqlSessionFactory") public class DataSource01 {// 配置數(shù)據(jù)源@Primary@Bean(name = "test1DataSource")public DataSource testDataSource(DBConfig1 testConfig) throws SQLException {MysqlXADataSource mysqlXaDataSource = new MysqlXADataSource();mysqlXaDataSource.setUrl(testConfig.getUrl());mysqlXaDataSource.setPinGlobalTxToPhysicalConnection(true);mysqlXaDataSource.setPassword(testConfig.getPassword());mysqlXaDataSource.setUser(testConfig.getUsername());mysqlXaDataSource.setPinGlobalTxToPhysicalConnection(true);AtomikosDataSourceBean xaDataSource = new AtomikosDataSourceBean();xaDataSource.setXaDataSource(mysqlXaDataSource);xaDataSource.setUniqueResourceName("test1DataSource");xaDataSource.setMinPoolSize(testConfig.getMinPoolSize());xaDataSource.setMaxPoolSize(testConfig.getMaxPoolSize());xaDataSource.setMaxLifetime(testConfig.getMaxLifetime());xaDataSource.setBorrowConnectionTimeout(testConfig.getBorrowConnectionTimeout());xaDataSource.setLoginTimeout(testConfig.getLoginTimeout());xaDataSource.setMaintenanceInterval(testConfig.getMaintenanceInterval());xaDataSource.setMaxIdleTime(testConfig.getMaxIdleTime());xaDataSource.setTestQuery(testConfig.getTestQuery());return xaDataSource;}@Bean(name = "test1SqlSessionFactory")public SqlSessionFactory testSqlSessionFactory(@Qualifier("test1DataSource") DataSource dataSource)throws Exception {SqlSessionFactoryBean bean = new SqlSessionFactoryBean();bean.setDataSource(dataSource);return bean.getObject();}@Bean(name = "test1SqlSessionTemplate")public SqlSessionTemplate testSqlSessionTemplate(@Qualifier("test1SqlSessionFactory") SqlSessionFactory sqlSessionFactory) throws Exception {return new SqlSessionTemplate(sqlSessionFactory);} }DataSource02
import java.sql.SQLException; 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.context.annotation.Bean; import org.springframework.context.annotation.Configuration;import com.atomikos.jdbc.AtomikosDataSourceBean; import com.gyf.dbconfig.DBConfig2; import com.mysql.jdbc.jdbc2.optional.MysqlXADataSource;@Configuration//注解到springboot容器中 @MapperScan(basePackages="com.gyf.test2.mapper",sqlSessionFactoryRef="test2SqlSessionFactory") public class DataSource02 {// 配置數(shù)據(jù)源@Bean(name = "test2DataSource")public DataSource testDataSource(DBConfig2 testConfig) throws SQLException {MysqlXADataSource mysqlXaDataSource = new MysqlXADataSource();mysqlXaDataSource.setUrl(testConfig.getUrl());mysqlXaDataSource.setPinGlobalTxToPhysicalConnection(true);mysqlXaDataSource.setPassword(testConfig.getPassword());mysqlXaDataSource.setUser(testConfig.getUsername());mysqlXaDataSource.setPinGlobalTxToPhysicalConnection(true);AtomikosDataSourceBean xaDataSource = new AtomikosDataSourceBean();xaDataSource.setXaDataSource(mysqlXaDataSource);xaDataSource.setUniqueResourceName("test2DataSource");xaDataSource.setMinPoolSize(testConfig.getMinPoolSize());xaDataSource.setMaxPoolSize(testConfig.getMaxPoolSize());xaDataSource.setMaxLifetime(testConfig.getMaxLifetime());xaDataSource.setBorrowConnectionTimeout(testConfig.getBorrowConnectionTimeout());xaDataSource.setLoginTimeout(testConfig.getLoginTimeout());xaDataSource.setMaintenanceInterval(testConfig.getMaintenanceInterval());xaDataSource.setMaxIdleTime(testConfig.getMaxIdleTime());xaDataSource.setTestQuery(testConfig.getTestQuery());return xaDataSource;}@Bean(name = "test2SqlSessionFactory")public SqlSessionFactory testSqlSessionFactory(@Qualifier("test2DataSource") DataSource dataSource)throws Exception {SqlSessionFactoryBean bean = new SqlSessionFactoryBean();bean.setDataSource(dataSource);return bean.getObject();}@Bean(name = "test2SqlSessionTemplate")public SqlSessionTemplate testSqlSessionTemplate(@Qualifier("test2SqlSessionFactory") SqlSessionFactory sqlSessionFactory) throws Exception {return new SqlSessionTemplate(sqlSessionFactory);} }App
整合Log4j(日志)
log4j.properties
注意,復(fù)制時(shí)要把每一行后面的空格去除
log4j.rootLogger=INFO,Console,File log4j.appender.Console=org.apache.log4j.ConsoleAppender log4j.appender.Console.Target=System.out log4j.appender.Console.layout = org.apache.log4j.PatternLayout log4j.appender.Console.layout.ConversionPattern=[%p] [%d{yyyy-MM-dd HH:mm:ss}][%c - %L]%m%nlog4j.appender.File = org.apache.log4j.RollingFileAppender log4j.appender.File.File = C:/Users/10301/Desktop/test/logs/info/info.log log4j.appender.File.MaxFileSize = 10MB log4j.appender.File.Threshold = ALL log4j.appender.File.layout = org.apache.log4j.PatternLayout log4j.appender.File.layout.ConversionPattern =[%p] [%d{yyyy-MM-dd HH:mm:ss}][%c - %L]%m%npom.xml
去除springboot的logging,添加log4j,因?yàn)樽詭У膌ogging不啟效果
springboot下的Log4j的版本最新1.3.8,如果你的springboot的parent版本過高,那在在添加log4j自己版本
測試
使用AOP統(tǒng)一處理Web請求日志
pom
<!-- AOP --><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-aop</artifactId></dependency>寫個(gè)切面類
import java.util.Enumeration; import javax.servlet.http.HttpServletRequest; import org.apache.log4j.Logger; import org.aspectj.lang.JoinPoint; import org.aspectj.lang.annotation.AfterReturning; import org.aspectj.lang.annotation.Aspect; import org.aspectj.lang.annotation.Before; import org.aspectj.lang.annotation.Pointcut; import org.springframework.stereotype.Component; import org.springframework.web.context.request.RequestContextHolder; import org.springframework.web.context.request.ServletRequestAttributes; @Aspect @Component public class WebLogAspect {private Logger logger = Logger.getLogger(getClass());@Pointcut("execution(public * com.gyf.controller..*.*(..))")public void webLog() {}@Before("webLog()")public void doBefore(JoinPoint joinPoint) throws Throwable {// 接收到請求,記錄請求內(nèi)容ServletRequestAttributes attributes = (ServletRequestAttributes) RequestContextHolder.getRequestAttributes();HttpServletRequest request = attributes.getRequest();// 記錄下請求內(nèi)容logger.info("---------------request----------------");logger.info("URL : " + request.getRequestURL().toString());logger.info("HTTP_METHOD : " + request.getMethod());logger.info("IP : " + request.getRemoteAddr());Enumeration<String> enu = request.getParameterNames();while (enu.hasMoreElements()) {String name = (String) enu.nextElement();logger.info("name:" + name + "value" + request.getParameter(name));}}@AfterReturning(returning = "ret", pointcut = "webLog()")public void doAfterReturning(Object ret) throws Throwable {logger.info("---------------response----------------");// 處理完請求,返回內(nèi)容logger.info("RESPONSE : " + ret);} }App配置注解
修改端口號(hào)
在application.properties中
server.port=8888
server.context-path=/test
在application.yml中
注意冒號(hào)后的只能用空格,不能用tab
server:port: 8090context-path: /test-ymlSpringboot 打包部署
打包時(shí)添加下面依賴代碼
<build><plugins><plugin><groupId>org.springframework.boot</groupId><artifactId>spring-boot-maven-plugin</artifactId><configuration><mainClass>com.gyf.app.App</mainClass></configuration><executions><execution><goals><goal>repackage</goal></goals></execution></executions></plugin></plugins></build>cmd使用 mvn clean install 打成war包或者jar包
使用java -jar test3-0.0.1-SNAPSHOT.jar 運(yùn)行即可
在終端要停止服務(wù)器時(shí),使用Ctrl + C,直接點(diǎn)x,會(huì)端口沒有關(guān)掉
使用連接池
添加druid的連接池
<dependency><groupId>com.alibaba</groupId><artifactId>druid</artifactId><version>1.0.25</version> </dependency>添加application.properties
spring.datasource.type=com.alibaba.druid.pool.DruidDataSource spring.datasource.url = jdbc:mysql://localhost:3306/edu1?useUnicode=true&characterEncoding=utf-8 spring.datasource.username = root spring.datasource.password = 123456 spring.datasource.driverClassName = com.mysql.jdbc.Driver#連接池的配置信息 spring.datasource.initialSize=5 spring.datasource.minIdle=5 spring.datasource.maxActive=20 spring.datasource.maxWait=60000 spring.datasource.timeBetweenEvictionRunsMillis=60000 spring.datasource.minEvictableIdleTimeMillis=300000 spring.datasource.validationQuery=SELECT 1 FROM DUAL spring.datasource.testWhileIdle=true spring.datasource.testOnBorrow=false spring.datasource.testOnReturn=false spring.datasource.poolPreparedStatements=true spring.datasource.maxPoolPreparedStatementPerConnectionSize=20 spring.datasource.filters=stat,wall,log4j spring.datasource.connectionProperties=druid.stat.mergeSql=true;druid.stat.slowSqlMillis=5000使用注解來配置數(shù)據(jù)源
import com.alibaba.druid.pool.DruidDataSource; import org.apache.log4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Value; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.context.annotation.Primary; import javax.sql.DataSource; import java.sql.SQLException;@Configuration public class DruidDBConfig {private Logger logger = Logger.getLogger(DruidDBConfig.class);@Value("${spring.datasource.url}")private String dbUrl;@Value("${spring.datasource.username}")private String username;@Value("${spring.datasource.password}")private String password;@Value("${spring.datasource.driverClassName}")private String driverClassName;@Value("${spring.datasource.initialSize}")private int initialSize;@Value("${spring.datasource.minIdle}")private int minIdle;@Value("${spring.datasource.maxActive}")private int maxActive;@Value("${spring.datasource.maxWait}")private int maxWait;@Value("${spring.datasource.timeBetweenEvictionRunsMillis}")private int timeBetweenEvictionRunsMillis;@Value("${spring.datasource.minEvictableIdleTimeMillis}")private int minEvictableIdleTimeMillis;@Value("${spring.datasource.validationQuery}")private String validationQuery;@Value("${spring.datasource.testWhileIdle}")private boolean testWhileIdle;@Value("${spring.datasource.testOnBorrow}")private boolean testOnBorrow;@Value("${spring.datasource.testOnReturn}")private boolean testOnReturn;@Value("${spring.datasource.poolPreparedStatements}")private boolean poolPreparedStatements;@Value("${spring.datasource.maxPoolPreparedStatementPerConnectionSize}")private int maxPoolPreparedStatementPerConnectionSize;@Value("${spring.datasource.filters}")private String filters;@Value("{spring.datasource.connectionProperties}")private String connectionProperties;@Bean //聲明其為Bean實(shí)例@Primary //在同樣的DataSource中,首先使用被標(biāo)注的DataSourcepublic DataSource dataSource(){DruidDataSource datasource = new DruidDataSource();datasource.setUrl(this.dbUrl);datasource.setUsername(username);datasource.setPassword(password);datasource.setDriverClassName(driverClassName);//configurationdatasource.setInitialSize(initialSize);datasource.setMinIdle(minIdle);datasource.setMaxActive(maxActive);datasource.setMaxWait(maxWait);datasource.setTimeBetweenEvictionRunsMillis(timeBetweenEvictionRunsMillis);datasource.setMinEvictableIdleTimeMillis(minEvictableIdleTimeMillis);datasource.setValidationQuery(validationQuery);datasource.setTestWhileIdle(testWhileIdle);datasource.setTestOnBorrow(testOnBorrow);datasource.setTestOnReturn(testOnReturn);datasource.setPoolPreparedStatements(poolPreparedStatements);datasource.setMaxPoolPreparedStatementPerConnectionSize(maxPoolPreparedStatementPerConnectionSize);try {datasource.setFilters(filters);} catch (SQLException e) {logger.error("druid configuration initialization filter", e);}datasource.setConnectionProperties(connectionProperties);return datasource;} }在Application.properties添加
#spring.freemarker.suffix=.ftl #spring.freemarker.templateEncoding=UTF-8 #spring.freemarker.templateLoaderPath=classpath:/templates/ #spring.freemarker.content-type=text/html spring.freemarker.request-context-attribute=request頁面引用js/jpg/css
打包添加
<resources><resource><directory>src/main/java</directory><includes><include>**/*.xml</include></includes></resource><resource><directory>src/main/resources</directory><includes><include>**/*.*</include></includes></resource> </resources> 創(chuàng)作挑戰(zhàn)賽新人創(chuàng)作獎(jiǎng)勵(lì)來咯,堅(jiān)持創(chuàng)作打卡瓜分現(xiàn)金大獎(jiǎng)總結(jié)
以上是生活随笔為你收集整理的java mvc返回js_Java的学习(39)springboot的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: golang获取结构体中的tag_26.
- 下一篇: java string转number_J