Spring boot配置管理

<!--

spring boot 父节点依赖,引入这个之后相关的引入就不需要添加version配置,spring boot会自动选择最合适的版本进行添加。

 -->

<parent>

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

<artifactId>spring-boot-starter-parent</artifactId>

<version>1.4.1.RELEASE</version>

</parent>

 

 

java.version 指定jdk版本号:

<properties>

<java.version>1.8</java.version>

</properties>

 

添加spring-boot-starter-web依赖

<dependency>

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

<artifactId>spring-boot-starter-web</artifactId>

</dependency>

1.1.1. 编码测试

新建一个Controller

 

新建启动类(App Main方法)

 

测试代码

运行:App

            浏览器:http://localhost:8080/hello

2. Spring boot web

2.1. 跳转Jsp

步骤:

   创建Maven web project

   引入依赖

   配置application.propertiesjsp支持

   编写测试Controller

   编写JSP

   编写启动App

2.1.1. 创建Maven Web Project

 

使用Eclipse新建一个Maven Web Project ,项目取名为:spring-boot-jsp

 

2.1.2. 导入Maven依赖 

<!-- spring boot parent节点,引入这个之后,在下面和spring boot相关的就不需要引入版本了; -->

<parent>

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

<artifactId>spring-boot-starter-parent</artifactId>

<version>1.4.1.RELEASE</version>

</parent>

 

 <!-- 指定一下jdk的版本 ,这里我们使用jdk 1.8 ,默认是1.6 -->

    <java.version>1.8</java.version>

 

<!-- 依赖配置-->

<!-- web支持: 1web mvc; 2restful; 3jackjson支持; 4aop ........ -->

<dependency>

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

<artifactId>spring-boot-starter-web</artifactId>

</dependency>

 

<!-- servlet 依赖. -->

<dependency>

<groupId>javax.servlet</groupId>

<artifactId>javax.servlet-api</artifactId>

<scope>provided</scope>

</dependency>

 

<dependency>

<groupId>javax.servlet</groupId>

<artifactId>jstl</artifactId>

</dependency>

 

<!-- tomcat 的支持. -->

<dependency>

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

<artifactId>spring-boot-starter-tomcat</artifactId>

<scope>provided</scope>

</dependency>

<dependency>

<groupId>org.apache.tomcat.embed</groupId>

<artifactId>tomcat-embed-jasper</artifactId>

<scope>provided</scope>

</dependency>

2.1.3. 配置application.propertiesjsp支持

添加src/main/resources/application.properties

 

#tomcat server port

server.port=80

 

# 页面默认前缀目录

spring.mvc.view.prefix=/WEB-INF/jsp/

# 响应页面默认后缀

spring.mvc.view.suffix=.jsp

2.1.4. 编写测试Controller

import org.springframework.stereotype.Controller;

import org.springframework.ui.Model;

import org.springframework.web.bind.annotation.RequestMapping;

 

@Controller

public class HelloController {

@RequestMapping("/hello")

public String helloJsp(Model model){

System.out.println("HelloController.helloJsp().hello=hello");

model.addAttribute("hello", "你好");

return "hello";

}

}

2.1.5.  编写JSP

src/main 下面创建 webapp/WEB-INF/jsp 目录用来存放我们的jsp页面:helloJsp.jsp:

 

<%@ page language="java" contentType="text/html; charset=UTF-8"

    pageEncoding="UTF-8"%>

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">

<html>

<head>

<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">

<title>Insert title here</title>

</head>

<body>

helloJsp

<hr>

${hello}

</body>

</html>

2.1.6. 编写启动App

 

2.1.7. 启动App并测试

2.2. 获取Json数据

要把Java对象转换为Json框架,使用的是JackSonmaven依赖的jar也有

 

 

@RequestMapping("/json")

@ResponseBody

public Person json(){

return new Person(1L,"倪先华");

}

3. Spring boot 持久化

3.1. Spring boot JdbcTemplate

引入spring-boot-starter-jdbc

那么只需要在需要使用的类中加入:

@Resource

private JdbcTemplate jdbcTemplate;

3.1.1. 引入Maven依赖-mysqljdbc

<dependency>

<groupId>mysql</groupId>

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

</dependency>

<dependency>

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

    <artifactId>spring-boot-starter-jdbc</artifactId>

</dependency>

<dependency>

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

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

</dependency>

 

3.1.2. 数据库信息配置

application.properties文件中配置mysql连接配置文件

########################################################

###datasource

########################################################

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

spring.datasource.username = root

spring.datasource.password = root

spring.datasource.driverClassName = com.mysql.jdbc.Driver

spring.datasource.max-active=20

spring.datasource.max-idle=8

spring.datasource.min-idle=8

spring.datasource.initial-size=10

3.1.3. 代码示例

1) Dao

声明为:@Repository,引入JdbcTemplate

public Demo getById(long id){

String sql = "select *from Demo where id=?";

RowMapper<Demo> rowMapper = new BeanPropertyRowMapper<Demo>(Demo.class);

return jdbcTemplate.queryForObject(sql, rowMapper,id);

}

       2)Service

声明为:@Service 引入dao

@Resource

private DemoDao demoDao;

 

public void getById(Long id){

 demoDao.getById(id);

}

     3)Controller

@Resource

private DemoService demoService;

 

@RequestMapping("/getById")

public Demo getById(long id){

return demoService.getById(id);

}

         页面访问测试

3.2. Spring boot-spring data Jpa

3.2.1. 引入Maven依赖-mysql,springdatajpa

<dependency>

<groupId>mysql</groupId>

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

</dependency>

 

<dependency>

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

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

</dependency>

3.2.2. 配置jdbc spring data jpa

application.properties文件中配置mysql连接配置文件

#tomcat server port

server.port=80

 

########################################################

###datasource

########################################################

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

spring.datasource.username = root

spring.datasource.password = root

spring.datasource.driverClassName = com.mysql.jdbc.Driver

spring.datasource.max-active=20

spring.datasource.max-idle=8

spring.datasource.min-idle=8

spring.datasource.initial-size=10

 

########################################################

### Java Persistence Api

########################################################

# Specify the DBMS

spring.jpa.database = MYSQL

# Show or not log for each sql query

spring.jpa.show-sql = true

# Hibernate ddl auto (create, create-drop, update)

spring.jpa.hibernate.ddl-auto = update

# Naming strategy

#[org.hibernate.cfg.ImprovedNamingStrategy  #org.hibernate.cfg.DefaultNamingStrategy]

spring.jpa.hibernate.naming-strategy = org.hibernate.cfg.ImprovedNamingStrategy

# stripped before adding them to the entity manager)

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

 

 

3.2.3. 代码示例

(1) 创建实体类User。

package cn.itsource.springboot.datajpa.domain;

 

import java.io.Serializable;

 

import javax.persistence.Column;

import javax.persistence.Entity;

import javax.persistence.GeneratedValue;

import javax.persistence.Id;

import javax.persistence.Table;

 

import com.fasterxml.jackson.annotation.JsonIgnoreProperties;

 

@Entity

@Table(name="t_user")

//加上json转换时忽略的属性,否则出错

@JsonIgnoreProperties(value={"hibernateLazyInitializer","handler"})

public class User implements Serializable{

@Id

@GeneratedValue

private Long id;

@Column

private String name;

//Getter/setter

}

 

(2) 创建repository操作持久化接口(继承自JpaRepository)

import org.springframework.data.jpa.repository.JpaRepository;

 

import cn.itsource.springboot.datajpa.domain.User;

 

public interface UserRepository extends JpaRepository<User, Long>{

public User getByName(String name);

}

 

(3) 创建service类。

package cn.itsource.springboot.datajpa.service;

 

import org.springframework.beans.factory.annotation.Autowired;

import org.springframework.stereotype.Service;

 

import cn.itsource.springboot.datajpa.dao.UserRepository;

import cn.itsource.springboot.datajpa.domain.User;

 

@Service

public class UserService {

@Autowired

private UserRepository userRepository;

public User get(Long id){

return userRepository.getOne(id);

}

public User getByName(String name){

return userRepository.getByName(name);

}

public User save(User user){

return userRepository.save(user);

}

 

public User update(User user) {

return userRepository.save(user);

}

public void delete(Long id){

userRepository.delete(id);

}

}

 

 

(4) 创建restful controller。

package cn.itsource.springboot.datajpa.controller;

 

import org.springframework.beans.factory.annotation.Autowired;

import org.springframework.web.bind.annotation.PathVariable;

import org.springframework.web.bind.annotation.RequestMapping;

import org.springframework.web.bind.annotation.RequestMethod;

import org.springframework.web.bind.annotation.ResponseBody;

import org.springframework.web.bind.annotation.RestController;

 

import cn.itsource.springboot.datajpa.domain.User;

import cn.itsource.springboot.datajpa.service.UserService;

 

@RestController

public class UserController {

 

@Autowired

private UserService userService;

 

@RequestMapping(value = "/user/{id}", method = RequestMethod.GET)

@ResponseBody

public User get(@PathVariable Long id) {

User user = userService.get(id);

System.out.println("user=" + user);

return user;

}

 

@RequestMapping(value = "/user/name/{name}", method = RequestMethod.GET)

@ResponseBody

public User get(@PathVariable String name) {

User user = userService.getByName(name);

System.out.println("user=" + user);

return user;

}

 

@RequestMapping(value = "/user/add", method = RequestMethod.GET)

@ResponseBody

public User add() {

User user = new User();

user.setName("itsource");

user = userService.save(user);

return user;

}

 

@RequestMapping(value = "/user/update", method = RequestMethod.GET)

@ResponseBody

public User update() {

User user = new User();

user.setId(2L);

user.setName("源码时代");

user = userService.update(user);

return user;

}

 

@RequestMapping(value = "/user/delete", method = RequestMethod.GET)

@ResponseBody

public String delete() {

userService.delete(2L);

return "success";

}

}

 

(5) 启动类

package cn.itsource.springboot.datajpa;

 

import org.springframework.boot.SpringApplication;

import org.springframework.boot.autoconfigure.SpringBootApplication;

 

@SpringBootApplication

public class App {

public static void main(String[] args) {

SpringApplication.run(App.class, args);

}

}

 

(6) 测试;

启动项目分别测试对应的Restful接口功能。

 

(7) 注意事项

JSON转换异常处理:

① 在Domain类中排除注入的特殊属性hibernateLazyInitializerhandler

@Entity

@Table(name="t_user")

//加上json转换时忽略的属性,否则出错

@JsonIgnoreProperties(value={"hibernateLazyInitializer","handler"})

public class User implements Serializable{....}

 

② 增加Jackson配置类

package cn.itsource.springboot.datajpa.config;

import com.fasterxml.jackson.databind.ObjectMapper;

import com.fasterxml.jackson.datatype.hibernate4.Hibernate4Module;

import org.springframework.context.annotation.Configuration;

import org.springframework.http.converter.HttpMessageConverter;

import org.springframework.http.converter.json.MappingJackson2HttpMessageConverter;

import org.springframework.web.servlet.config.annotation.WebMvcConfigurerAdapter;

 

import java.util.List;

/**

 * 防止在使用jpa/hibernate,如果实体字段上加有FetchType.LAZY,并使用jackson序列化为json串时,

 * 会遇到SerializationFeature.FAIL_ON_EMPTY_BEANS异常

 * @author nixianhua

 *

 */

@Configuration

public class JacksonConfiguration extends WebMvcConfigurerAdapter {

    @Override

    public void configureMessageConverters(List<HttpMessageConverter<?>> converters) {

        converters.add(jacksonMessageConverter());

        super.configureMessageConverters(converters);

    }

 

    private MappingJackson2HttpMessageConverter jacksonMessageConverter() {

        MappingJackson2HttpMessageConverter messageConverter = new MappingJackson2HttpMessageConverter();

        ObjectMapper mapper = new ObjectMapper();

        mapper.registerModule(new Hibernate4Module());

        messageConverter.setObjectMapper(mapper);

        return messageConverter;

    }

}

 


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值