赞
踩
目录
第一种 :直接在pom.xml中引入相关依赖时直接指定版本号
4.导入ImportBeanDefinitionRegistrar实现类
在SpringBoot项目中导入数据库驱动的默认版本号为8.0.23
- <dependency>
- <groupId>mysql</groupId>
- <artifactId>mysql-connector-java</artifactId>
- <!-- <scope>runtime</scope>-->
- </dependency>
因为在parent中定义了这些导入依赖坐标的版本号,避免坐标冲突。
我们可以进入源码查看
- <properties>
- <java.version>1.8</java.version>
- <mysql.version>8.0.13</mysql.version>
- </properties>
1.依赖版本和依赖坐标自动导入
2.自动化配置
自动配好SpringMVC
自动配好web常见功能,如:字符编码问题,静态资源管理
3.自动配好tomcat
让当前类变成配置类,代替配置文件
@Configration注解中的proxyBeanMethods属性功能
proxyBeanMethods=true:Full模式,保证每个@Bean方法(配置类对象.getXxx()方法)被调用多少次返回的bean对象都是单例的,即 和直接从容器中获取的bean对象是同一个
proxyBeanMethods=false:Lite模式,每个@Bean方法 (getXxx())被调用时返回的bean对象都是重新new出来的
如:@Import(普通类.class)
会执行当前类的构造方法创建对象,并存到IoC容器,生成的bean名称类为:该普通类的全路径
如:@Inport(xxxConfig.class)
会创建xxxConfig类的bean,并且改配置类中带有@Bean注解的方法,都会创建@Bean方法返回对象的bean,生成bean的名称为:@Bean方法名
- public class MyImportSelect implements ImportSelector {
- @Override
- public String[] selectImports(AnnotationMetadata annotationMetadata) {
- return new String[]{"com.hhh.pojo.Person"};//定义需要生成bean类的全路径
- }
- }
- @Configuration
- @Import(MyImportSelect.class)
- public class BookConfig {
- }
结果就会生成Person类的bean,并加入到IoC容器
注意:MyImportSelect类不会生成bean
- public class MyImportBeanDefinitionRegistrar implements ImportBeanDefinitionRegistrar {
- @Override
- public void registerBeanDefinitions(AnnotationMetadata importingClassMetadata, BeanDefinitionRegistry registry, BeanNameGenerator importBeanNameGenerator) {
- AbstractBeanDefinition beanDefinition = BeanDefinitionBuilder.rootBeanDefinition(Book.class).getBeanDefinition();
- registry.registerBeanDefinition("book1",beanDefinition);//给这个bean起名字为book1
- }
- }
- @Configuration
- @Import({MyImportSelect.class, MyImportBeanDefinitionRegistrar.class})
- public class BookConfig {
- }
- public class SpringTest {
- public static void main(String[] args) {
- ApplicationContext ctx=new AnnotationConfigApplicationContext(SpringConfig.class);
- Person bean = ctx.getBean(Person.class);
- Book book1 = (Book) ctx.getBean("book1");
- System.out.println(book1);//com.hhh.pojo.Book@7748410a
- // System.out.println(bean);
- }
-
- }
@ConditionalOnBean(Person.class)//IoC容器中有这个Person类的bean才会让这个配置类生成bean
- @Configuration
- @ConditionalOnBean(Person.class)//IoC容器中有这个Person类的bean才会让这个配置类生成bean
- public class MyConfig {
- }
根据prefix属性值进行赋值
获取yml文件中的属性信息,并把yml文件中的属性值与对象类进行映射,并生成这个类的bean
@SpringBootApplication注解由三个注解组成
作用跟@Configuration差不多
这个注解的意思就是会扫描与SpringBoot引导类处于同一路径下的所有包
- <!--Spring Boot Admin Server监控服务端-->
- <dependency>
- <groupId>de.codecentric</groupId>
- <artifactId>spring-boot-admin-starter-server</artifactId>
- <version>2.3.1</version>
- </dependency>
- @SpringBootApplication
- @EnableAdminServer
- public class SpringDay8ServerApplication {
-
- public static void main(String[] args) {
- SpringApplication.run(SpringDay8ServerApplication.class, args);
- }
-
- }
- <dependency>
- <groupId>org.springframework.boot</groupId>
- <artifactId>spring-boot-starter-actuator</artifactId>
- </dependency>
- <dependency>
- <groupId>de.codecentric</groupId>
- <artifactId>spring-boot-admin-starter-client</artifactId>
- <version>2.3.1</version>
- </dependency>
- spring:
- datasource:
- driver-class-name: com.mysql.cj.jdbc.Driver
- url: jdbc:mysql://localhost:3306/mysql_day2?serverTimezone=Asia/Shanghai&useUnicode=true&characterEncoding=UTF-8&useSSL=false
- username: root
- password: 123456
- type: com.alibaba.druid.pool.DruidDataSource
- boot:
- admin:
- client: # spring-boot-admin 客户端配置
- url: http://localhost:9999 #服务端连接地址
- username: admin # 服务端账号
- password: admin # 服务端密码
- instance:
- prefer-ip: true # 使用ip注册
- application:
- name: boot_client #项目名称
-
- # 服务端点详细监控信息
- management:
- endpoints:
- web:
- exposure:
- include: "*" #以web形式暴露
- enabled-by-default: true #暴露所有端点信息
- endpoint:
- health:
- show-details: always
- enabled: true #开启健康检查详细信息
进入
导入依赖
- <!-- lombok-->
- <dependency>
- <groupId>org.projectlombok</groupId>
- <artifactId>lombok</artifactId>
- </dependency>
使用lombok我们就不需要自己写set,get,toString等方法,可以分别使用@Getter@Setter@ToString这三个注解,
- //@Getter
- //@Setter
- //@ToString
- @Data
- public class User {
- private String name;
- private Integer age;
- private String address;
- }
- @Data
- @Accessors(chain = true)//允许链式编程
- public class User {
- private String name;
- private Integer age;
- private String address;
- }
结果:
- public class UserTest {
- @Test
- public void testUser(){
- User user=new User();
- user.setName("hhh").setAge(18).setAddress("北京");
- System.out.println(user);
- //User(name=hhh, age=18, address=北京)
- }
- }
- @Data
- //@Accessors(chain = true)//允许链式编程
- @Builder
- @NoArgsConstructor//无参构造
- @AllArgsConstructor//全参构造
- public class User {
- private String name;
- private Integer age;
- private String address;
- }
- public class UserTest {
- @Test
- public void testUser(){
- /* User user=new User();
- user.setName("hhh").setAge(18).setAddress("北京");
- System.out.println(user);*/
- User user = User.builder().name("hhh").age(18).address("北京").build();
- System.out.println(user);//User(name=hhh, age=18, address=北京)
- }
- }
- @Slf4j
- @Service
- public class UserServiceImpl implements UserService {
- @Override
- public void save() {
- log.info("BookService save");
- // System.out.println("service");
- }
- }
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。