0
点赞
收藏
分享

微信扫一扫

Springboot(一

王小沫 2022-04-05 阅读 18

springBoot好处:
1.依赖管理,

 <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.3.4.RELEASE</version>
    </parent>

我们使用的技术栈,导入依赖的时候,只要写添加了这个依赖,其余的就不用写版本号,这个内部把我们用的所有的技术栈的版本都添加好了。
如果我们不想用springboot里面设置好的版本,我们可以这样修改。

  <properties>
       <mysql.version>5.1.43</mysql.version>
   </properties>

2.自动配置
1.配置好了tomact,springmvc全套组件,比如前端控制器,字符集编码之类的,都有
主程序所在的包,以及下面的子包都会被扫描出来,这是一个默认的层级位置,如果我们想改变,就这样做。

@SpringBootApplication(scanBasePackages = "com.zhang")
public class mainApplication {
    public static void main(String[] args) {
        SpringApplication.run(mainApplication.class,args);
    }
}

我们可以自己手动将这个扫描位置放打。
我们也可以使用springmvc那个扫描注解@CompanctScan
一个@SpringBootApplication注解等同于这三个注解@SpringBootConfiguration
@EnableAutoConfiguration
@ComponentScan。

@Configuration和@Bean作用


@Configuration
public class TestConfig {

    @Bean
    public User TestUser(){
        return new User("颤三",19);
    }
}

这个@Configuration标注一个类,就表示这个类就是一个spring的配置类,就相当于以前springmvc.xml这个大的配置类,@Bean这个注解标识在方法上,就表明这是一个spring里面的一个bean,注册好的。这个Bean的名字默认就是方法名字,我们也可以手动修改。

@SpringBootApplication(scanBasePackages = "com.zhang")
public class mainApplication {
    public static void main(String[] args) {
        ConfigurableApplicationContext run = SpringApplication.run(mainApplication.class, args);
        String[] names = run.getBeanDefinitionNames();
        for (String name: names){
            System.out.println(name);
        }

        User testUser = run.getBean("UserA", User.class);
        System.out.println(testUser);
    }
}

这个里面有个getBeanDefinitionNames();方法,根据名字理解应该就是拿到所有被加载到spring的一个个的名字,应该说是bean的名字。
在这里插入图片描述
也就是springboot自动装配的一些东西,可以看的出来非常非常多,什么都有。
在这里插入图片描述
别忘记了,spring中的bean默认还是单例的。

@Configuration(proxyBeanMethods = true)
public class TestConfig {

    @Bean(name = "UserA")
    public User TestUser(){
        return new User("颤三",19);
    }
}

如果组件之间有依赖关系,如果是true,springboot都会检查容器里面是不是有,如果是false就会跳过检查,运行也相对较快。
在这里插入图片描述
简单来说,就是user01这个bean里面使用了tom这个bean,如果我们proxy设置位true,springboot就会去检查他们是否依赖,如果你设置为false,springboot就不会检查。直接跳过。

@Inport:我们可以用这个注解,向带有@Configuration或者是@Component的修饰的类上面,在给这个类引入新的组件,比如我们在给这个类引入一个user对象

@Import({User.class})
@Configuration(proxyBeanMethods = true)
public class TestConfig {

    @Bean(name = "UserA")
    public User TestUser(){
        return new User("颤三",19);
    }
}
   String[] beanNamesForType = run.getBeanNamesForType(User.class);
        for (String s1: beanNamesForType) {
            System.out.println(s1);
        }

在这里插入图片描述
@ConditionalOnBean()这个注解的意思就是满足一定条件了在给你注入,创建bean,否则就不创建,都不创建。
![在这里插入图片描述](https://img-blog.csdnimg.cn/d1264334edfd4c41a3271ae2342f03c9.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shad

如果是标记在类上,这个类里面满足条件,下面类里面的方法,bean才会生效。

@ImportResource(“classpath:SpingMVC.xml”),这个注解就是针对,比如说公司用的还是xml配置注册bean的方式,现在想用注解了,一个一个的标注bean会很乏力,现在直接用这个ImportResource,参数就放你那个配置文件的路径,这样就可以加入到spring容器中了。

在这里插入图片描述

举报

相关推荐

0 条评论