SpringBoot入门

SpringBoot入门(二)

 

SpringBoot属性文件

访问静态文件

热部署

实现拦截器

使用JPA操作数据库

插件lombok

 

SpringBoot属性文件

1、自定义属性

uname: Asuna
@Value("${uname}")
private String uname;

2 自定义属性的引用

uname: Asuna
age: 20
user.info: my name is ${uname}, my age is ${age}
@Value("${user.info}")
private String userInfo;

访问静态文件

项目中有两个静态文件目录:static,templates

static图片,css,js等资源  templates主要保存模板。

  1. 放一个文件

在yml文件中配置

ring:
  mvc:
    static-path-pattern: /static/**

默认的静态文件访问目录:

Classpath:/META-INF/resources  a.png  A

Classpath:resources    a.png   B

Classpath:static

Classpath:public

 

他们有一个优先级:

/META-INF/resources>resources>static>public

热部署

当项目修改的时候,我们不需要手动重启,而会自动加载。

1.添加依赖

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-devtools</artifactId>
    <optional>true</optional>
</dependency>
<plugin>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-maven-plugin</artifactId>
    <configuration>
        <fork>true</fork>
    </configuration>
</plugin>

2.修改idea的配置

按下Ctrl+Alt+Shift+/,出现Registry

实现拦截器

之前:

实现拦截器的接口HandlerInterceptor,并实现三个方法preHandler,postHandler,afterCompletion。

然后在配置文件中,配置拦截器

现在

1.实现拦截器接口

  1. public class MyInterceptor implements HandlerInterceptor {
    
        @Override
        public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
            System.out.println("MyInterceptor--preHandle");
            return true;
        }
    
        @Override
        public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) throws Exception {
            System.out.println("MyInterceptor--postHandle");
        }
    
        @Override
        public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception {
            System.out.println("MyInterceptor--afterCompletion");
        }
    }

2.配置拦截器

@Configuration
public class MvcConfig implements WebMvcConfigurer {

    @Bean
    public MyInterceptor getInterceptor(){
        return new MyInterceptor();
    }
    //添加拦截器
    @Override
    public void addInterceptors(InterceptorRegistry registry) {
        registry.addInterceptor(this.getInterceptor()).addPathPatterns("/**");
    }
}

总结:在SpringBoot中,我们使用java类代替配置文件。

 

使用JPA操作数据库

JPA是Java持久层的API,主要是一种操作数据库的标准。

Hibernate,Mybatis,SpringDataJpa都是JPA的一种实现。

1.添加依赖

Web,spirngDataJpa,mysql驱动

2.添加数据库的属性tiger_springboot

spring:
  datasource:
    driver-class-name: com.mysql.jdbc.Driver
    url: jdbc:mysql://localhost:3306/tiger_springboot
    username: root
    password: root
  jpa:
    show-sql: true

3.创建数据库 tiger_springboot

4.创建表

create table user(
  id int primary key auto_increment,
  name varchar(32),
  age  int
)

5.创建实体类

@Entity
public class User {
    @Id
    @GeneratedValue(strategy = GenerationType.AUTO)
    private int id;
    private String name;
    private int age;

6.写Dao

public interface UserDao extends CrudRepository<User,Integer> {
}

7.测试

@Test
public void add(){
    User user = new User();
    user.setName("zhangsan");
    user.setAge(20);
    userDao.save(user);
}
@Test
public void queryById(){
   Optional<User> user = userDao.findById(1);
   System.out.println(user.get().getName());
}

在JPA,我们需要根据属性查询的话,可以自定义方法,JPA自动帮我们实现。

/**
 * 查询方法以find、get 、read开头
 */
public User findByName(String name);
终极方法:
@Query("from User u where u.name=:n")
public User findByMyName(@Param("n") String name);

8.写Service

@Service
public class UserServiceImpl implements UserService {
    
    @Autowired
    private UserDao userDao;
    
    @Transactional
    @Override
    public void add(User user) {
        userDao.save(user);
    }

    @Override
    public User findById(int id) {
        return userDao.findById(id).get();
    }

    @Override
    public User findByName(String name) {
        return userDao.findByName(name);
    }
}

9.写Controller

@RestController
public class UserController {

    @Autowired
    private UserService userService;

    @GetMapping("/addUser")
    public String addUser(){
        User user = new User();
        user.setName("lisi");
        user.setAge(209);
        userService.add(user);
        return "success";
    }
}

10.页面(模板)
分析下Repository的接口关系
PagingAndSortingRepository 继承 CrudRepository 继承  Repository

插件lombok

插件就是小工具,当我们安装了插件,就可以实现一些小功能。
我们今天学习lombok插件,可以简化pojo。
1.安装插件
Settings-plugs--搜索lombok--install
2.添加依赖

<dependency>
    <groupId>org.projectlombok</groupId>
    <artifactId>lombok</artifactId>
</dependency>

3.简化代码
添加@Data,里面包含了@Getter,@Setter,@ToString,@EqaulAndHasCode,@NoArgContrustor

@AllArgsConstructor

 


总结:
我们可以在属性文件中,自定义属性,使用@Value(“${aaa}”)获得。默认我们把静态文件放到resources/static里面,静态文件的优先级是/META-INF/resources>resources>static>public。
热部署主要是在我们修改代码之后,会自动加载项目。
拦截器需要我们实现HandlerInterceptor接口,实现preHandler,postHandler,afterCompletion方法。其中preHandler返回boolean值,当true表示放行,执行后面的方法。当false的时候,拦截请求。然后通过Java配置类的方式,实现WebMvcConfigure接口,并覆写addIntercepers方法,添加拦截器。这个类里面@Configuration表示它是一个配置类,@Bean代表Spring实例化这个对象。
JPA是一种操作数据库的标准,我们使用Spring data jpa封装Hibernate。在dao中,实现了PagingAndSortingRepository 的接口,我们可以自定义属性方法和hql语句方法。
Lombok插件,通过注解简化了pojo,@Data里面包含了getter,setter,toString,noagrStruactor,
eqaulAndHashCode.

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值