Spring Boot 學習筆記



spring boot
使用RPC遠程調用
rest風格
右鍵--Configure Working Sets --new 
工程上新建 meaven Project ---選擇多選框 Create a simple project, 三個多選框都是選中的---填artifact id 和 group id, 選擇packaging爲 jar類型
springboot 整合jsp建項目 選擇war類型的


pom.xml
引入父類依賴
<parent>
<groupId>org.springframework.boot</groupId>
<artifactid> spring-boot-starter-parent</artifactid>
<version>1.3.3.RELEASE</version>
</parent>
Springboot-web 組建  springmvc + spring+mybatis
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>

<dependency>//war類型的項目需要引入這個包
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-tomcat</artifactId>
</dependency>
<dependency>//war類型的項目需要引入這個包
<groupId>org.apache.tomcat.embed</groupId>
<artifactId>tomcat-embed-jasper</artifactId>
</dependency>
<dependency>//mybatis依賴
<groupId>org.mybatis.spring.boot</groupId>
<artifactId>mybatis-spring-boot-starter</artifactId>
<version>1.1.1</version>
</dependency>
<dependency>//mybatis依賴
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.21</version>
</dependency>
<dependency>//分佈式事務 
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-jta-atomikos</artifactId>
</dependency>
<dependency>//AOP 配置
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-aop</artifactId>
</dependency>

<dependency>
<groupId></groupId>
<artifactId></artifactId>
<version></version>
</dependency>
</dependencies>
application.properties文件
spring.mvc.view.prefix=/WEB-INF/jsp/ //war類型項目需要配置
spring.mvc.view.suffix=.jsp //war類型項目需要配置
spring.datasource.username=root //mysql數據源
spring.datasource.password=root //mysql數據源
spring.datasource.driver-class-name=com.mysql.jdbc.Driver //mysql數據源




@EnableAutoConfiguration //注入tomcat,使這個接口可調用
@RestController //返回json格式
@Controller //普通的Controller 上面2選1?
public class HelloWord{
@ResponseBody //返回json格式
@RequestMapping("/index")
public String index(){ return "success" ;}
public static void main(String[]args){
SpringApplication.run(HelloWord.class,args);
}
}
@ComponentScan("com.it.service","com.it.controller") //springboot的包掃描
@EnableAutoConfiguration //注入tomcat,使這個接口可調用
@SpringBootApplication //當前包下不需要註解了???
@EnableJpaRepositories("com.itmayiedu.dao")//JPA dao的包掃描
@EntityScan("com.itmayiedu.entity")//JPA的entity的包掃描
@MapperScan(basePackages={"com.itmyiedu.mapper"}) //mybatis包掃描


@SpringBootApplication //作用 啓動項目,整合常用註解,掃包, 只能當前同級包下,與ComponentScan 類似
@EnableConfigurationProperties(value={DBConfig1.class,DBConfig2.class}) //啓動的時候讀取DBConfig1類
@EnableScheduling //定時任務調度
@EnableAsync //異步執行
public class App{
public static void main(String[]args){
SpringApplication.run(App.class,args);
}
}


靜態資源訪問
Spring boot默認提供靜態資源目錄位置需放置於classpath下,目錄如下:
/static 
/public
/resources
/META-INF/resources
如:src/main/resources/static/d.jpg 訪問 http://localhost:8080/d.jpg 即可訪問成功


全局捕獲異常 
@ControllerAdvice
public class GlobalExceptionHandler{
@ExceptionHandler(RuntionException.class)
@ResponseBody //返回json格式
public Map resultError(){
Map resulet = new HashMap();
reulet.put("errorCode","500");
return resulet;
}
}
spring boot 模板殷勤
freemaker、velocity、Thymeleaf動態頁面靜態化 
<dependency>//freemaker 的依賴包
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-freemarker</artifactId>
</dependency>
freemaker 使用ftl文件做顯示


JPA  //繼承JpaRepository,裏面增刪改都有提供
public interface UserDao extends JpaRepository<User,Integer>{
}


分佈式事務,多數據源是 使用包名來區分的
解決方案  1。jta + automatic
2。註解方式 ,自定義註解分來數據源
@Configuration //註冊到springBoot容器中
@MapperScan(basePackages="com.itmayiedu.test01", sqlSessionFactoryFef="test1SqlSessionFactory") //包掃描com.itmayiedu.test01 , SqlSession
public class DataSource1Config{
@Bean(name="test1DataSource")
@ConfigurationProperties(prefix="spring.datasource.test1") //獲取property配置文件中的值 
@Primary
public DataSource testDataSource(){
return DataSourceBuilder.create().build();
}
}
springBoot事務分類,包括 編程事務、聲明事務(xml方式、註解方式)
@Autowired //自動注入
UserMapperTest01 userMapperTest01;
@Transactional //事務  事務只管理當前function,事務有傳遞作用
public String insertTest01(String name,Inter age){
userMapperTest01.insert(name,age);
}


420萬 3房
分佈式事務,autoCAD 
pom.xml引入依賴包


@ConfigurationProperties(prefix="mysql.datasource.test1") //將property文件中mysql.datasource.test1注入到類中對應字段
public class DBConfig1{
private String url;
getUrl(){}
setUrl(){}
}


AOP 配置
@Aspect  //定義一個切面
@Component //注入到容器裏面
public class WebLogAspect{    //使用切面打印日誌,只要controller包下的被調用就會觸發 doBefore方法
  private static Logger logger = Logger.getLogger(WebLogAspect.class);
@Pointcut("execution(public * com.itmayiedu.controller..*.*(..))") //定義一個切入點, *任何返回值,controller下的子包,*.*任何類任何方法,(..) 任何參數
public void weblog(){}
@Before("webLog)()")
public void doBefore(JoinPoint joinPoint)throws Throwable{
//接收請求,記錄請求內容
ServletRequestAttributes attr = (ServletRequestAttributes)RequestContextHolder.getRequestAttribute();
HttpServletRequest request = attr.getRequest();
Logger.info(####請求開始);
logger.info("url: "+ request.getRequestURL().toString());
logger.info("HTTP_METHOD: "+ request.getMethod());
logger.info("IP: "+ request.getRemoteAddr());
Enumeration<Sring> enu = request.getParameterName();
while(enu.hasMoreElements()){
String name = (String)enu.netElement();
logger.info("name : "+name+" value: "+request.getParamenter(name));
}
}
}


spring 定時任務,大公司都是任務調度平臺
@Component
public  class ScheduledTasks{
@Scheduled(fixedRate=1000) //每隔1秒調度一次 
public void test(){
System.out.println("正在每隔1秒打印一次。。");
}
}


異步執行
@Async //調用此代碼是異步的,主調方法不需要等此方法完成後執行。
public String sendSms(){
  System.out.println("111");
}


自定義參數
@Value("${appName}")// property文件中有appName=aaa 這個參數,就會自動放入變量中
private String appName;
setAppName(){}
getAppName(){}


property文件的多環境區分
在appliction.properties中配置  
spring.profiles.active=sit
server.port=8888 //修改端口號
server.context-path=/itmayiedu //修改域名


YML文件,編寫的時候會有提示
server:
  port: 8090  //:後面必須有空格
  context-path: itmayiedu


spring支持redis
<dependencies>
<dependency>//redis
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-redis</artifactId>
</dependency>
<dependency> //redis
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>commons-lang</groupId>
<artifactId>commons-lang</artifactId>
<version>2.6</version>
</dependency>

<dependency>
<groupId></groupId>
<artifactId></artifactId>
<version></version>
</dependency>
</dependencies>
redis有5種數據類型:string,list,set,zset,hash


springboot 打包
在pom.xml文件中指定程序入口
項目郵件--〉控制檯
在控制檯: mvn package //項目是jar類型的 打出來就是 .jar包
運行:java -jar jar包名稱
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章