Spring-boot(学习记录)

分布结构
在这里插入图片描述
1、通过spring-boot的配置文件application.properties(注意结尾是es)可以修改一些参数。
2、写一个简单的在页面上显示 hello:
通过以下程序,就能运行起来了,但是不能在页面显示hello

/** 主程序类  必须在包下(最好不要放在需要被扫描的类所在的包里,不然要修改扫描)
 * @SpringBootApplication
 */
@SpringBootApplication(scanBasePackages = "boot")//扩展扫描包的范围
public class MainApplication {
    public static void main(String[] args) {
        //1、返回我们的IOC容器
        ConfigurableApplicationContext run=SpringApplication.run(MainApplication.class,args);
    }
 }

再创建一个Controller包,在包下创建一个类:这两个页面就能达到在页面上显示hello的效果,但是需要自己打开网页输入 localhost:8080/hello

//@ResponseBody //放在这个类的每一个方法,返回的数据都是写给浏览器而不是返回给页面
//@Controller
@RestController//相当于上面两个注解的结合
public class HelloController {
    @RequestMapping("/hello")//相当于以前servlet在网址上的输入
    public String handle1(){
        return "hello spring-boot"+"你好";
    }
}

3、在容器中添加组件:
以往是通过xml配置文件,现在也用类来实现:

/**
 * 告诉spring-boot这是一个配置类,等同于以前的配置文件 之前是使用bean标签添加组件(对象)
 * 使用Bean标签方法,给容器注册组件 默认是单实例
 * Myconfig(配置类)其实也相当于一个组件,在容器中
 * proxyBeanMethods:代理bean方法 默认为true  全模式full
 * 代理对象调用方法 spring-boot总会检擦这人个组件是否在容器  保持单实例
 * 如果改为false(轻量级),相当于每次都定义了一个新的对象  解决了组件依赖,因为每个组件可能会依赖或者不依赖其他组件
 * @Import({DBHelper.class}) 给容器自动创建出这个类型的组件
 * */
@Import({DBHelper.class})//将指定的组件导入
@Configuration  //告诉spring-boot这个就作为配置文件了
public class Myconfig {
	 /**
     * 外部不管获取多少次,都是之前注册容器中的对象
     * @return
     */
    @Bean//给容器添加组件,以方法名作为组件id,返回类型就是组件类型,返回的值就是组件在容器中的值
    public User zs(){
        //User依赖了Pet组件依赖就用true  否则可以将proxyBeanMethods调为false 这样就很快 就不用每次都扫描一次容器 !!!!!现在好像有依赖必须为true,否则会报错
        User zhangsan=new  User("法外狂徒张三","男")
        zhangsan.setPet(tom());
        return zhangsan;
    }
    @Bean
    public User lisi(){
        return new  User();
    }
    @Bean("tommmm")//也可以这样直接给组件定义名字而不用方法名
    public Pet tom(){
        return new Pet("Tom");
    }
    @Bean
    public Pet dog(){
        return new Pet();
    }
}

在MainApplication类中继续加入,运行后可以查看容器中的所有组件,并且通过一个组件注册的对象是相同的。

  //2、查看容器里面的组件
        String[]name=run.getBeanDefinitionNames();
        for (String x:name)
            System.out.println(x);
        //从容器中取出注册的组件
        User s1=run.getBean("zs", User.class);
        User s=run.getBean("zs", User.class);
        System.out.println(s.getClass()==s1.getClass());
        run.getBeanNamesForType(User.class);//获取这种类型的组件

@Conditional:条件装配,满足条件才进行装配
在Bean标签上加@ConditionalOnBean(name = “uuu”)//uuu为Bean标签的组件名,当容器中有uuu这个组件时才将这个Bean标签注入,注意!!!!:有先后顺序。
对于已经是用.xml文件创建的组件,在config类上加入
@ImportResource("classpath:beans.xml")//就能往容器中导入这个文件中的组件

@Component//添加进容器,只有在容器中的组件,才会拥有springboot提供的功能
@ConfigurationProperties(prefix = "mycar")//prefix是配置文件中的前缀例如mycar.price
public class Car {}

如果引用的第三方包,上面没加@Component,可以在配置文件类config上添加@EnableConfigurationProperties(Car.class)Car.class为类,也可以将组件自动注册到容器中

使用lombok插件和依赖,在生成的实体类上添加注解@Data即可自己生成set,get,再加上注解@ToString,就可以生成toString方法。但是要写属性名和类型。其次@NoArgsConstructor无参构造器,@AllArgsConstructor有参构造器

@Slf4j类上加入这个注解,在这个类的方法中使用log.info("请求进来了");可以不将信息输出在控制台,而是生成一个日志,显示引号中的内容。

以后修改了代码直接ctrl+f9可以帮助自动重启,但不是热更新,热更新插件但是要收费

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-devtools</artifactId>
            <optional>true</optional>
        </dependency>

static存放静态资源(css、js等)
templates存放页面
application.properties为配置文件
在这里插入图片描述
转的是含义,\n原本为换行,”“双引号没有转变它的意思,但是单引号会
在这里插入图片描述
引入以下依赖让.yaml文件也有提示


        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-configuration-processor</artifactId>
            <optional>true</optional>
        </dependency>

加入这个插件,让processor不打包,打包浪费资源

	<exclude>
   	 	<groupId>org.springframework.boot</groupId>
    	<artifactId>spring-boot-configuration-processor</artifactId> 
    </exclude>
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

syf_wfl

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值