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主要保存模板。
- 放一个文件
- 2.在yml文件中配置
spring:
mvc:
static-path-pattern: /static/**
默认的静态文件访问目录:
Classpath:/META-INF/resources
Classpath:resources
Classpath:static
Classpath:public
他们有一个优先级:
/META-INF/resources>resources>static>public
热部署
当项目修改的时候,我们不需要手动重启,而会自动加载。
- 添加依赖
<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>
- 修改idea的配置
按下Ctrl+Alt+Shift+/,出现Registry
实现拦截器
之前:
实现拦截器的接口HandlerInterceptor,并实现三个方法preHandler,postHandler,afterCompletion。
然后在配置文件中,配置拦截器
现在
- 实现拦截器接口
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"); } }
- 配置拦截器
@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。
- 安装插件:Settings-plugs--搜索lombok--install
- 添加依赖
<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。