栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

01 SpringBoot2.0学习-基础

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

01 SpringBoot2.0学习-基础


学习需要具备spring 5和spring mvc的基础

Springboot 2.0基础

1.@Configuration 和@Bean

springboot 中建议使用配置类(放在config包下的java文件)代替原来的beans.xml

//@Configuration //告诉SpringBoot这是一个配置类 == 配置文件,
//@Configuration(proxyBeanMethods = true)  //每次外接调用都会检查容器中有没有,比如下面这种组件之间互相依赖的情况需要用到
@Configuration(proxyBeanMethods = false)  //速度更快,如果不依组件之间不互相依赖用这个。
public class MyConfig {


    
    @Bean  //给容器添加组件,方法名作为组件的id,返回类型就是组件类型。返回的值就是组件在容器中的实例
    public User user01(){
        User uu = new User("Bean的方法,user01", "tttttt");
        //uu.setPet(loverPet());  //组件之间互相依赖 需要@Configuration(proxyBeanMethods = true)
        return uu;
    }

    @Bean("lover") //不想让组件名就是方法名,可以在这个注解里面指定名字
    public Pet loverPet(){
        return new Pet("loverPet");
    }
}

2.@service + @Controller + @Autowired + @GetMapping +@ResponseBody

这些基本上跟原来spring一样没什么可说的

@Controller
public class MyController {

    @Autowired
    private UserServiceImpl userService;

    @GetMapping("/test01")
    @ResponseBody
    public String TestAutoWired(){
        User user = userService.getUser();
        return user.toString();
    }
}

3.@import 将类注册到Spring组件

@import({User.class, DBHelper.class})

注意:

1.这个就是把一个类注册到了spring,跟在类上面加@Component是一样的,不是导入命名空间

2.加在@Configuration 控制类上,可以生效。

下面案例在一个config中,用两种方法将User导入,并从mian方法中检验

@import(User.class)  
@Configuration 
public class MyConfig {


    @Bean
    public User user01(){
        User uu = new User("Bean的方法,user01", "tttttt");
        return uu;
    }

}

@SpringBootApplication
public class SpringbootconfigApplication {


    public static void main(String[] args) {
        ConfigurableApplicationContext run = SpringApplication.run(SpringbootconfigApplication.class, args);

        System.out.println("检查通过import 导入的user组件是否成功");
        
        //获取所有类型为User的Bean组件
        String[] beanNamesForType = run.getBeanNamesForType(User.class);
      //遍历输出
        for (int i = 0; i < beanNamesForType.length; i++) {
            System.out.println(beanNamesForType[i]);
        }

    }

}

4.@Conditional

按条件装配:满足Conditional指定的条件,则进行组件注入,有很多派生的子注解,可以放在类和方法上

Conditional还有很多分支,需要的时候再去研究吧。

  //当bean里面存在name=lover的时候生效,注意,现在这种情况不生效的原因是Bean("lover")在User01的下面了。
    @ConditionalOnBean(name = "lover")
    @Bean
    public User user01(){
        User uu = new User("Bean的方法,user01", "tttttt");
        //uu.setPet(loverPet());  //组件之间互相依赖 需要@Configuration(proxyBeanMethods = true)
        return uu;
    }
    @Bean("lover") //不想让组件名就是方法名,可以在这个注解里面指定名字
    public Pet loverPet(){
        return new Pet("loverPet");
    }

5.@importResource

以前很多都是用的bean.xml方式,如何让老办法也能生效呢

@importResource("classpath:beans.xml")//让老得beans方法生效

6.@ConfigurationProperties

这个注解可以让被注解的类读取到application.properties里的赋值,

在springboot底层中,大量使用了这种方法对属性进行操作

例如 application.properties

mycar.name=bwm3
mycar.age=3

pojo.Car.java

@Component
@ConfigurationProperties(prefix = "mycar")
public class Car {
    private String name;
    private Integer age;
...

test

        Car bean = run.getBean(Car.class);
        System.out.println(bean.toString());
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/683200.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号