springboot(二):web綜合開發

原文連接java

上篇文章介紹了Spring boot初級教程: spring boot(一):入門篇 ,方便你們快速入門、瞭解實踐Spring boot特性;本篇文章接着上篇內容繼續爲你們介紹spring boot的其它特性(有些未必是spring boot體系桟的功能,可是是spring特別推薦的一些開源技術本文也會介紹),對了這裏只是一個大概的介紹,特別詳細的使用咱們會在其它的文章中來展開說明。mysql

web開發

spring boot web開發很是的簡單,其中包括經常使用的json輸出、filters、property、log等web

json 接口開發

在之前的spring 開發的時候須要咱們提供json接口的時候須要作那些配置呢
1. 添加 jackjson 等相關jar包
2. 配置spring controller掃描
3. 對接的方法添加@ResponseBodyspring

就這樣咱們會常常因爲配置錯誤,致使406錯誤等等,spring boot如何作呢,只須要類添加 @RestController 便可,默認類中的方法都會以json的格式返回sql

@RestController

public class HelloWorldController {

    @RequestMapping("/getUser")

    public User getUser() {

    User user=new User();

    user.setUserName("小明");

    user.setPassWord("xxxx");

        return user;

    }

}

若是咱們須要使用頁面開發只要使用 @Controller ,下面會結合模板來講明數據庫

自定義Filter

咱們經常在項目中會使用filters用於錄調用日誌、排除有XSS威脅的字符、執行權限驗證等等。Spring Boot自動添加了OrderedCharacterEncodingFilter和HiddenHttpMethodFilter,而且咱們能夠自定義Filter。
兩個步驟:
1. 實現Filter接口,實現Filter方法
2. 添加 @Configurationz 註解,將自定義Filter加入過濾鏈json

好吧,直接上代碼服務器

@Configuration

public class WebConfiguration {

    @Bean

    public RemoteIpFilter remoteIpFilter() {

        return new RemoteIpFilter();

    }



    @Bean

    public FilterRegistrationBean testFilterRegistration() {

        FilterRegistrationBean registration = new FilterRegistrationBean();

        registration.setFilter(new MyFilter());

        registration.addUrlPatterns("/*");

        registration.addInitParameter("paramName", "paramValue");

        registration.setName("MyFilter");

        registration.setOrder(1);

        return registration;

    }



    public class MyFilter implements Filter {

@Override

public void destroy() {

// TODO Auto-generated method stub

}

@Override

public void doFilter(ServletRequest srequest, ServletResponse sresponse, FilterChain filterChain)

throws IOException, ServletException {

// TODO Auto-generated method stub

HttpServletRequest request = (HttpServletRequest) srequest;

System.out.println("this is MyFilter,url :"+request.getRequestURI());

filterChain.doFilter(srequest, sresponse);

}

@Override

public void init(FilterConfig arg0) throws ServletException {

// TODO Auto-generated method stub

}

    }

}

自定義Property

在web開發的過程當中,我常常須要自定義一些配置文件,如何使用呢session

配置在application.properties中

com.neo.title=純潔的微笑

com.neo.description=分享生活和技術

自定義配置類app

@Component

public class NeoProperties {

@Value("${com.neo.title}")

private String title;

@Value("${com.neo.description}")

private String description;

//省略getter settet方法

}

log配置

配置輸出的地址和輸出級別

logging.path=/user/local/log

logging.level.com.favorites=DEBUG

logging.level.org.springframework.web=INFO

logging.level.org.hibernate=ERROR

path爲本機的log地址, logging.level 後面能夠根據包路徑配置不一樣資源的log級別

數據庫操做

在這裏我重點講述mysql、spring data jpa的使用,其中mysql 就不用說了你們很熟悉,jpa是利用Hibernate生成各類自動化的sql,若是隻是簡單的增刪改查,基本上不用手寫了,spring內部已經幫你們封裝實現了。
下面簡單介紹一下如何在spring boot中使用

一、添加相jar包

<dependency>

        <groupId>org.springframework.boot</groupId>

        <artifactId>spring-boot-starter-data-jpa</artifactId>

    </dependency>

     <dependency>

        <groupId>mysql</groupId>

        <artifactId>mysql-connector-java</artifactId>

    </dependency>

二、添加配置文件

spring.datasource.url=jdbc:mysql://localhost:3306/test

spring.datasource.username=root

spring.datasource.password=root

spring.datasource.driver-class-name=com.mysql.jdbc.Driver

spring.jpa.properties.hibernate.hbm2ddl.auto=update

spring.jpa.properties.hibernate.dialect=org.hibernate.dialect.MySQL5InnoDBDialect

spring.jpa.show-sql= true

其實這個hibernate.hbm2ddl.auto參數的做用主要用於:自動建立|更新|驗證數據庫表結構,有四個值:
1. create: 每次加載hibernate時都會刪除上一次的生成的表,而後根據你的model類再從新來生成新表,哪怕兩次沒有任何改變也要這樣執行,這就是致使數據庫表數據丟失的一個重要緣由。
2. create-drop :每次加載hibernate時根據model類生成表,可是sessionFactory一關閉,表就自動刪除。
3. update:最經常使用的屬性,第一次加載hibernate時根據model類會自動創建起表的結構(前提是先創建好數據庫),之後加載hibernate時根據 model類自動更新表結構,即便表結構改變了但表中的行仍然存在不會刪除之前的行。要注意的是當部署到服務器後,表結構是不會被立刻創建起來的,是要等 應用第一次運行起來後纔會。
4. validate :每次加載hibernate時,驗證建立數據庫表結構,只會和數據庫中的表進行比較,不會建立新表,可是會插入新值。

dialect 主要是指定生成表名的存儲引擎爲InneoDB
show-sql 是否打印出自動生產的SQL,方便調試的時候查看

三、添加實體類和Dao

@Entity

public class User implements Serializable {

private static final long serialVersionUID = 1L;

@Id

@GeneratedValue

private Long id;

@Column(nullable = false, unique = true)

private String userName;

@Column(nullable = false)

private String passWord;

@Column(nullable = false, unique = true)

private String email;

@Column(nullable = true, unique = true)

private String nickName;

@Column(nullable = false)

private String regTime;

//省略getter settet方法、構造方法

}

dao只要繼承JpaRepository類就能夠,幾乎能夠不用寫方法,還有一個特別有尿性的功能很是贊,就是能夠根據方法名來自動的生產SQL,好比 findByUserName 會自動生產一個以 userName 爲參數的查詢方法,好比 findAlll 自動會查詢表裏面的全部數據,好比自動分頁等等。。

原文連接

相關文章
相關標籤/搜索