SpringBoot入门(二)

SpringBoot属性文件

1、自定义属性:

uname: zhangsan

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

2 、自定义属性的引用:

uname: zhangsan
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. 放一个文件
  2. 2.在yml文件中配置
spring:
  mvc:
    static-path-pattern: /static/**

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

Classpath:/META-INF/resources 

Classpath:resources  

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. 实现拦截器接口
    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、添加数据库的属性

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.IDENTITY
)
    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";
    }
}

分析下Repository的接口关系

PagingAndSortingRepository 继承 CrudRepository 继承  Repository 

插件lombok

插件就是小工具,当我们安装了插件,就可以实现一些小功能。

我们今天学习lombok插件,可以简化pojo。

  1. 安装插件:Settings-plugs--搜索lombok--install
  2. 添加依赖
    <dependency>
        <groupId>org.projectlombok</groupId>
        <artifactId>lombok</artifactId>
    </dependency>

     

总结

我们可以在属性文件中,自定义属性,使用@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、付费专栏及课程。

余额充值