yml配置文件
1 2 3 4 spring: application: name: studyJava user: jyd
@Value(“${spring.application.name}”)
@ConfigurationProperties(prefix=”spring”)
1 2 3 4 5 6 7 8 9 10 11 @ConfigurationProperties (prefix="spring" )@Component public class EmailProperties { @Value ("${spring.application.user}" ) public String user; public String code ; public String host ; private boolean auth }
在Spring Boot中,@Component注释可以用来自动配置类。自动配置是通过Spring Boot的启动类上标注的@EnableAutoConfiguration或@SpringBootApplication(后者包含了@EnableAutoConfiguration)来实现的。
以下是一个简单的示例,展示如何使用@Component来自动配置一个简单的服务类。
首先,假设我们有一个服务类,它提供了一个简单的功能:
1 2 3 4 5 6 7 8 9 10 import org.springframework.stereotype.Component;@Component public class MyAutoConfiguredService { public String sayHello (String name ) { return "Hello, " + name + "!" ; } }
@SpringBootApplication是一个方便的注解,它包含了@EnableAutoConfiguration,这意味着Spring Boot将尝试自动配置项目。自动配置发生的过程是:
Spring Boot会扫描classpath下的所有@Component、@Service、@Repository等注解的类。 它会在启动时查找所有符合条件的类,并将它们注册为Spring组件。 如果MyAutoConfiguredService类中有任何依赖未被满足,Spring Boot会尝试根据类路径下的jar包、配置文件等来猜测并自动配置这些依赖。
整合mybatis 1.导入依赖 1 2 3 4 5 6 7 8 <groupId>com.mysql</groupId> <artifactId>mysql-connector-j</artifactId> </dependency> <dependency> <groupId>org.mybatis.spring.boot</groupId> <artifactId>mybatis-spring-boot-starter</artifactId> <version>3.0.1</version> </dependency>
2.配置文件 1 2 3 4 5 6 7 8 9 spring: application: name: studyJava datasource: url: jdbc:mysql: username: root password: xxxxxx driver-class-name: com.mysql.cj.jdbc.Driver
3.书写实体类 @Data 是 Lombok 库提供的一个注解,它用于自动生成 getters、setters、equals、canEqual、hashCode、toString 方法。当你在 Lombok 版本为 1.18.12 或更高版本时使用 @Data,它还会包含无参构造方法(如果不存在的话)和一个全参构造方法。
无参构造方法是一个没有参数的构造器,它用于创建对象实例。 全参构造方法是一个带有所有属性作为参数的构造器,它允许你在创建对象时提供所有属性的值。 在 Lombok 版本 1.18.12 之前,@Data 注解只生成 getters 和 setters,不包括构造方法。如果你的 Lombok 版本低于 1.18.12,那么你需要手动添加构造方法。
从 Lombok 1.18.13 开始,@Data 注解默认包括一个无参构造方法,即使你的类中已经有其他的构造方法。如果你想保留现有的构造方法,你可以使用 @Data 注解的 init 属性,如下所示:
1 2 3 4 5 @Data(init = false) public class MyClass { }
1 2 3 4 5 6 7 <dependency > <groupId > org.projectlombok</groupId > <artifactId > lombok</artifactId > <version > 1.18.32</version > <optional > true</optional > </dependency >
文件路径为:com/mhist/studyJava/pojo/User.java1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 package com.mhist.studyJava.pojo;import lombok.Data ; @Data public class User { private Integer id; private String name ; private Short age; private Short gender; private String phone; }
4. 创建mapper 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 package com.mhist.studyJava.mapper;import com.mhist.studyJava.pojo.User;import org.apache.ibatis.annotations.Mapper;import org.apache.ibatis.annotations.Select;import java.util.List;@Mapper public interface UserMapper { @Select("select * from user where id = #{id}") public User findById (Integer id) ; @Select("select * from user") List<User> findAll () ; }
5. service 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 package com.mhist.studyJava.service;import com.mhist.studyJava.pojo.User;import java.util.List;public interface UserService { User findById (Integer id) ; List<User> findAll () ; }
6.serviceImpl 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 package com.mhist.studyJava.service.impl;import com.mhist.studyJava.mapper.UserMapper;import com.mhist.studyJava.pojo.User;import com.mhist.studyJava.service.UserService;import org.springframework.beans.factory.annotation.Autowired;import org.springframework.stereotype.Service;import java.util.List;@Service public class UserServiceImpl implements UserService { private UserMapper userMapper; public UserServiceImpl (UserMapper userMapper) { this .userMapper = userMapper; } @Override public User findById (Integer id) { return userMapper.findById(id); } @Override public List<User> findAll () { return userMapper.findAll(); } }
7.controller 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 package com.mhist.studyJava.controller;import com.mhist.studyJava.pojo.User;import com.mhist.studyJava.service.UserService;import org.springframework.beans.factory.annotation .Autowired;import org.springframework.web.bind.annotation .GetMapping;import org.springframework.web.bind.annotation .RestController;import java.util.List;@RestController public class UserController { private UserService userService; public UserController(UserService userService) { this .userService = userService; } @GetMapping("/findById" ) public User findById(Integer id) { return userService.findById(id); } @GetMapping("/findAll" ) public List<User> findAll() { return userService.findAll(); } }
由于jdk17环境下不推荐使用@Autowired ,所以在controller中导入service、以及在service实现类中导入mapper的时候、需要使用有参构造
1 2 3 4 5 private UserService userService; public UserController (UserService userService ) { this .userService = userService; }
1 2 3 4 5 6 private UserMapper userMapper;public UserServiceImpl (UserMapper userMapper ) { this .userMapper = userMapper; }