学完Spring Boot后的总结

 1.开发过程中遇到的问题,将解决过程写下来,并且添加总结;

问题一

Spring Boot扫描包提示找不到mapper的问题,异常信息内容:

Consider defining a bean of type in your configuration
分析原因:Spring Boot项目的Bean装配默认规则是根据Application类所在的包位置从上往下扫描,“Application类”是指Spring Boot项目入口类。如果Application类所在的包为:com.yoodb.blog,则只会扫描com.yoodb.blog包及其所有子包,如果service或dao所在包不在com.yoodb.blog及其子包下,则不会被扫描。

解决方法:

方式一:使用注解@ComponentScan(value=”com.yoodb.blog”),其中,com.yoodb.blog为包路径。

方式二:将启动类Application放在上一级包中,注意的是Application启动类必须要保证在包的根目录下。

问题二

启动Spring Boot时,,抛出异常信息如下:

Your ApplicationContext is unlikely to start due to a @ComponentScan of the default package


application.Java类文件内容如下:

import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.context.annotation.Configuration;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.boot.SpringApplication;
@Controller
@SpringBootApplication
@Configuration
public class HelloApplication {
    @RequestMapping(";hello";)
    @ResponseBody
    public String hello() {
return ";hello world!";;
    }
    public static void main(String[] args) {
SpringApplication.run(HelloApplication.class, args);
    }
}

分析原因:Spring Boot启动时,抛出“** WARNING ** : Your ApplicationContext is unlikely to start due to a @ComponentScan of the default package.”警告信息,这是由于application.Java文件不能直接放在main/java文件夹下,必须要建一个包把它放进去。

解决办法:Spring Boot在写启动类的时候如果不使用@ComponentScan指明对象扫描范围,默认指扫描当前启动类所在的包里的对象,如果当前启动类没有包,则在启动时会抛出上述警告信息,导致项目出错。  

问题三

Spring Boot连接数据库时,抛出异常信息如下:

caused by: java.lang.NoClassDefFoundError: javassist/bytecode/ClassFile
分析原因:这是由于缺少javassist.jar包导致启动失败

解决办法:通过Eclipse执行Maven命令重构项目:Maven-Update Project,等待下载jar包即可,若还是失败请手动添加javassist.jar包的pom.xml配置信息。

Spring Boot使用spring-data-jpa插件,抛出异常信息如下:

caused by: java.lang.illegalargumentexception: Not a managed type: class entity.User
分析原因:这是由于Spring Boot未找到实体对象指定的类名,缺少jpa entity配置路径

解决办法:在Repository配置类前面添加注解@EntityScan(';entity对应的包路径';)。

问题四

Spring Boot返回json字符串,增加APPLICATION_JSON参数代码如下:

mvc.perform(MockMvcRequestBuilders.get(";/hello";).accept(MediaType.APPLICATION_JSON))
在添加APPLICATION_JSON参数后,抛出“APPLICATION_JSON cannot be resolved or is not a field”异常信息。

分析原因: Bean实体中存在getX或setX方法,但是没有这个x属性,将导致json转换失败,抛出“APPLICATION_JSON cannot be resolved or is not a field”异常信息。

解决办法:去掉不存在属性的getX或setX方法或者增加上改属性即可。
 

2.上课中你做得比较好的项目(练习),比如某实体类的增删改查;

  1. 定义实体类:首先需要定义一个Java类作为实体类,使用@Entity@Table注解标记实体类,并定义类的属性和关联关系。

  2. 编写Repository接口:创建一个继承自JpaRepository或CrudRepository的接口,该接口提供了常见的数据库操作方法,包括保存、删除、查询等。

  3. 编写Service层:创建一个Service类用于实现业务逻辑,调用Repository中的方法完成数据的增删改查操作,并进行相应的业务处理。

  4. 编写Controller层:创建RESTful风格的Controller类,处理前端请求并调用Service层完成业务逻辑,然后返回相应的结果。

下面是一个简单的示例:

// 实体类定义
@Entity
@Table(name = "users")
public class User {
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Long id;
    private String username;
    private String email;
    // 省略其他属性和方法
}

// Repository接口
public interface UserRepository extends JpaRepository<User, Long> {
    // 可以根据需要定义一些自定义的查询方法
}

// Service类
@Service
public class UserService {
    @Autowired
    private UserRepository userRepository;

    public User getUserById(Long id) {
        return userRepository.findById(id).orElse(null);
    }

    public User saveUser(User user) {
        return userRepository.save(user);
    }

    // 其他业务逻辑方法
}

// Controller类
@RestController
@RequestMapping("/api/users")
public class UserController {
    @Autowired
    private UserService userService;

    @GetMapping("/{id}")
    public User getUser(@PathVariable Long id) {
        return userService.getUserById(id);
    }

    @PostMapping
    public User createUser(@RequestBody User user) {
        return userService.saveUser(user);
    }

    // 其他请求处理方法
}

总结: 在Spring Boot中进行实体类的增删改查操作,需要合理地设计实体类、Repository、Service和Controller,遵循单一职责原则,并利用Spring Boot框架提供的功能来简化开发。同时,需要注意异常处理、参数校验等方面,保证代码的健壮性和安全性。

3.Spring boot常用注解介绍;

  1. @SpringBootApplication

    • 用于标记Spring Boot应用的启动类,通常与main方法一起使用。该注解整合了@Configuration、@EnableAutoConfiguration和@ComponentScan注解。
  2. @Controller

    • 标记一个类作为Spring MVC的Controller,用于处理HTTP请求。
  3. @RestController

    • 结合@Controller和@ResponseBody,通常用于RESTful风格的Controller类,返回的数据会直接写入HTTP响应体中。
  4. @Service

    • 用于标记一个类作为业务逻辑层的Service组件。
  5. @Repository

    • 用于标记一个类作为数据访问层的Repository组件,通常与持久层框架(如Spring Data JPA)一起使用。
  6. @Autowired

    • 用于自动装配Bean,可以标记在字段、构造器、Setter方法上,Spring会根据类型进行自动装配。
  7. @Component

    • 通用的Spring组件标记注解,可以标记任意一个Bean。
  8. @RequestMapping

    • 用于将HTTP请求映射到Controller的处理方法上,可以指定请求的URL和HTTP方法。
  9. @PathVariable

    • 用于将URL中的模板变量绑定到处理方法的参数上。
  10. @RequestParam

    • 用于将HTTP请求的参数绑定到处理方法的参数上。
  11. @ResponseBody

    • 通常用于RESTful Controller,将方法返回的对象直接作为HTTP响应体返回。
  12. @Configuration

    • 用于定义配置类,可以替代XML配置文件。
  13. @EnableAutoConfiguration

    • 开启Spring Boot的自动配置功能,根据classpath中的jar包自动配置Spring应用。
  14. @Value

    • 用于从配置文件中读取属性值,可以注入到Bean中使用。
  15. @Transactional

    • 用于标记事务管理相关的方法或类,控制事务的提交和回滚。

这些注解只是Spring Boot中的一部分,还有很多其他的注解用于支持不同的功能和场景。合理地使用这些注解可以帮助开发者简化代码、提高开发效率,同时符合Spring Boot的约定优于配置的思想。

4.数据层框架的整合和使用,如JdbcTemplate、mybatis、mybatis-plus的原理及其应用实现;

JdbcTemplate

原理: JdbcTemplate是Spring框架提供的用于简化JDBC编程的工具,它封装了JDBC的常见操作,如创建连接、执行SQL语句、处理结果集等,使得数据库访问更加便捷。

应用实现

  1. 配置数据源:在Spring Boot中配置数据源(DataSource)的Bean。
  2. 注入JdbcTemplate:将数据源注入到JdbcTemplate的Bean中。
  3. 使用JdbcTemplate:在Service或Repository中使用JdbcTemplate来执行SQL语句,例如查询、更新等操作。
  4. @Autowired
    private JdbcTemplate jdbcTemplate;
    
    public void updateUserName(Long id, String newName) {
        jdbcTemplate.update("UPDATE users SET username = ? WHERE id = ?", newName, id);
    }

    MyBatis-Plus

    原理: MyBatis-Plus是在MyBatis基础上进行扩展的数据库访问层框架,提供了更多的便捷功能,如代码生成器、分页查询、条件构造器等。

    应用实现

  5. 集成MyBatis-Plus:在Spring Boot中引入MyBatis-Plus的依赖。
  6. 定义实体类和Mapper接口:定义实体类并创建对应的Mapper接口。
  7. 使用MyBatis-Plus提供的功能:利用MyBatis-Plus提供的API进行数据库操作,如条件构造器、分页查询等。
  8. @Service
    public class UserService {
        @Autowired
        private UserMapper userMapper;
    
        public List<User> findUsersByName(String name) {
            QueryWrapper<User> queryWrapper = new QueryWrapper<>();
            queryWrapper.like("username", name);
            return userMapper.selectList(queryWrapper);
        }
    }

    总结: JdbcTemplate、MyBatis和MyBatis-Plus都是在Spring Boot应用中常用的数据层框架,它们各自有不同的特点和适用场景。合理地选择并整合这些框架能够有效地简化数据库操作、提高开发效率,并且符合Spring Boot的约定优于配置的理念。

5.前端模板引擎Thymeleaf的整合和使用;

整合Thymeleaf

在Spring Boot应用中整合Thymeleaf主要涉及两个方面:添加依赖和配置视图解析器。

  1. 添加依赖:在pom.xml文件中添加Thymeleaf的依赖。
    xml
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-thymeleaf</artifactId>
    </dependency>

  2. 配置视图解析器:Spring Boot会自动配置Thymeleaf视图解析器,但也可以根据需要进行自定义配置。
    @Configuration
    public class WebConfig implements WebMvcConfigurer {
        @Override
        public void addViewControllers(ViewControllerRegistry registry) {
            registry.addViewController("/").setViewName("index");
        }
    
        @Bean
        public ViewResolver viewResolver(SpringTemplateEngine templateEngine) {
            ThymeleafViewResolver resolver = new ThymeleafViewResolver();
            resolver.setTemplateEngine(templateEngine);
            resolver.setCharacterEncoding("UTF-8");
            return resolver;
        }
    
        @Bean
        public SpringTemplateEngine templateEngine(TemplateResolver templateResolver) {
            SpringTemplateEngine engine = new SpringTemplateEngine();
            engine.setTemplateResolver(templateResolver);
            return engine;
        }
    
        @Bean
        public TemplateResolver templateResolver() {
            TemplateResolver resolver = new ServletContextTemplateResolver();
            resolver.setPrefix("/WEB-INF/templates/");
            resolver.setSuffix(".html");
            resolver.setTemplateMode("HTML");
            return resolver;
        }
    }

    使用Thymeleaf

    在使用Thymeleaf时,可以在HTML页面中嵌入Thymeleaf的表达式来渲染动态内容,如变量、条件判断、循环等。

    变量渲染
    <!DOCTYPE html>
    <html xmlns:th="http://www.thymeleaf.org">
    <head>
        <title>Hello World</title>
    </head>
    <body>
        <p th:text="${message}"></p>
    </body>
    </html>
    条件判断和循环
    <!DOCTYPE html>
    <html xmlns:th="http://www.thymeleaf.org">
    <head>
        <title>User List</title>
    </head>
    <body>
        <ul>
            <li th:each="user : ${users}" th:text="${user.name}"></li>
        </ul>
        <div th:if="${users.isEmpty()}">No users found.</div>
    </body>
    </html>

    在Controller中,可以通过Model对象将数据传递给Thymeleaf模板。

    @Controller
    public class HelloController {
        @GetMapping("/hello")
        public String hello(Model model) {
            model.addAttribute("message", "Hello, Thymeleaf!");
            return "hello";
        }
    }

    总结

    Thymeleaf作为一款功能强大的模板引擎,与Spring Boot整合后能够简化前端开发工作,提供了丰富的表达式和功能,使得前端页面的动态渲染变得更加便捷。通过合理利用Thymeleaf,开发者可以快速构建出美观、动态的Web界面。

6.Bootstrap前端框架的整合及应用;

整合Bootstrap

在Web应用中整合Bootstrap主要包括引入Bootstrap相关的CSS和JavaScript文件,并在HTML页面中使用Bootstrap提供的组件和样式。

  1. 引入Bootstrap文件:通过CDN或本地文件引入Bootstrap的CSS和JavaScript文件。
<!-- 通过CDN引入Bootstrap -->
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0/css/bootstrap.min.css">
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0/js/bootstrap.min.js"></script>
  1. 使用Bootstrap组件:在HTML页面中使用Bootstrap提供的组件,如导航栏、表格、按钮等。
    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <meta name="viewport" content="width=device-width, initial-scale=1.0">
        <title>Bootstrap Example</title>
        <!-- 引入Bootstrap文件 -->
        <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0/css/bootstrap.min.css">
    </head>
    <body>
        <nav class="navbar navbar-expand-lg navbar-light bg-light">
            <a class="navbar-brand" href="#">Navbar</a>
            <button class="navbar-toggler" type="button" data-toggle="collapse" data-target="#navbarNav" aria-controls="navbarNav" aria-expanded="false" aria-label="Toggle navigation">
                <span class="navbar-toggler-icon"></span>
            </button>
            <div class="collapse navbar-collapse" id="navbarNav">
                <ul class="navbar-nav">
                    <li class="nav-item active">
                        <a class="nav-link" href="#">Home <span class="sr-only">(current)</span></a>
                    </li>
                    <li class="nav-item">
                        <a class="nav-link" href="#">Features</a>
                    </li>
                    <li class="nav-item">
                        <a class="nav-link" href="#">Pricing</a>
                    </li>
                </ul>
            </div>
        </nav>
    
        <div class="container">
            <h1>Welcome to Bootstrap</h1>
            <button type="button" class="btn btn-primary">Primary Button</button>
        </div>
    
        <!-- 引入Bootstrap JavaScript -->
        <script src="https://code.jquery.com/jquery-3.2.1.slim.min.js"></script>
        <script src="https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0/js/bootstrap.min.js"></script>
    </body>
    </html>

    应用Bootstrap

    使用Bootstrap能够轻松实现响应式布局、页面美化和交互效果。开发者可以利用Bootstrap提供的样式和组件,快速搭建起具有现代感的网页。

    响应式布局

    Bootstrap内置了响应式网格系统,使得网页能够根据设备屏幕大小自动调整布局。通过使用containerrowcol等类,可以轻松创建出各种响应式布局。

    组件和样式

    Bootstrap提供了丰富的组件和样式,如导航栏、卡片、表单、按钮等,开发者可以直接使用这些组件来构建页面,而无需从头编写样式和交互逻辑。

    JavaScript插件

    Bootstrap还提供了一些常用的JavaScript插件,如模态框、轮播图、下拉菜单等,可以增强页面的交互体验。

    总结

    通过集成Bootstrap前端框架,开发者可以快速搭建响应式、美观的Web界面,同时减少重复的样式和布局代码编写。借助Bootstrap提供的组件和样式,开发者能够更高效地开发出符合现代设计标准的网页,提升用户体验并节省开发时间。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值