Springboot 学习文档

x33g5p2x  于2021-03-14 发布在 Spring  
字(1.6k)|赞(0)|评价(0)|浏览(925)

一、注解

1、@RestController

  • 意思就是controller里面的方法都以json格式输出,不用再写什么jackjson配置的了!

2、@Configuration

  • 中所有带@Bean注解的方法都会被动态代理,调用该方法返回的都是同一个实例。

  • 从定义来看,@Configuration注解本质上还是@Component,因此<context:component-scan/>或者@ComponentScan都能处理@Configuration注解的类。

  • @Configuration 标记的类必须符合下面的要求:

    配置类必须以类的形式提供(不能是工厂方法返回的实例),允许通过生成子类在运行时增强(cglib 动态代理)。
    配置类不能是 final 类(没法动态代理)。
    配置注解通常为了通过 @Bean 注解生成 Spring 容器管理的类。
    配置类必须是非本地的(即不能在方法中声明,不能是 private)。
    任何嵌套配置类都必须声明为static。
    @Bean方法不能创建进一步的配置类(也就是返回的bean如果带有@Configuration,也不会被特殊处理,只会作为普通的 bean)。

  • Spring 容器在启动时,会加载默认的一些PostPRocessor,其中就有 ConfigurationClassPostProcessor,这个后置处理程序专门处理带有@Configuration注解的类,这个程序会在bean定义加载完成后,在bean初始化前进行处理。其主要处理的过程就是使用 cglib 动态代理对类进行增强,使用增强后的类替换了beanFactory原有的 beanClass,增强类会对其中带有@Bean注解的方法进行额外处理,确保调用带@Bean注解的方法返回的都是同一个实例。

  • 但是对于@Component,@Component 注解并没有通过cglib来代理@Bean方法的调用,因此调用带@Bean注解的方法态返回的都是新的实例。

二、配置

1、热启动

<dependencies>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-devtools</artifactId>
        <optional>true</optional>
    </dependency>
</dependencies>
 
<build>
    <plugins>
        <plugin>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-maven-plugin</artifactId>
            <configuration>
                <fork>true</fork>
            </configuration>
        </plugin>
	</plugins>
</build>

2、自定义Property

在web开发的过程中,我经常需要自定义一些配置文件,如何使用呢?

配置在application.properties中。

com.neo.title=纯洁的微笑
com.neo.description=分享生活和技术

自定义配置类

@Component
public class NeoProperties {
    @Value("${com.neo.title}")
    private String title;
    @Value("${com.neo.description}")
    private String description; 
    //省略getter settet方法 
}

相关文章

微信公众号

最新文章

更多