1、@SpringBootApplication 包含哪些主要注解?
① @Configuration :可以和@Bean一起创建一个简单的spring配置类(java),用来代替相应的xml配置文件
@Configuration
public class Conf {
@Bean
public Car car() {
Car car = new Car();
car.setWheel(wheel());
return car;
}
@Bean
public Wheel wheel() {
return new Wheel();
}
}
@Configuration 的注解类标识这个类可以使用spring ioc 容器作为bean定义的来源。
@Bean注解的方法将返回一个对象,注册在spring应用程序上下文中的bean
②@EnableAutoConfiguration :能够自动配置spring的上下文
③@ComponentScan : 会自动扫描指定包下标有 @Component的类,注册成bean,当然包括
@ComponentScan下的子注解 @Service @ Repository @Controller
2、application.properties(yml)可以放置在jar包内和jar包外的哪些目录?
jar包外:resources/config 和 resources
jar包内:config包内和Classpath根目录。WEB-INF/classes ,WEB-INF/classes 也就是classpath,资源目录,客 户端不能访问。
按照优先级排序为resources/config,resources,Classpath/config,Classpath。resource会覆盖
classpath中相同的属性。
如果相同优先级,application.properties 和application.yml,则application.yml会覆盖
application.properties里的属性
3、Profile 多环境配置
不同的运行环境,往往需要不同的配置
在Spring Boot中多环境配置文件名需要满足application-{profile}.properties的格式,其中{profile}对应你的环境标识,比如:
application-dev.properties:开发环境
application-prod.properties:生产环境
只需要在application.properties中使用spring.profiles.active属性来设置,值对应上面提到的{profile},这里就是指dev、prod这2个。
当然你也可以用命令行启动的时候带上参数:
java -jar xxx.jar --spring.profiles.active=dev
我给不同的环境添加不同的端口属性server.port,然后根据指定不同的spring.profiles.active来切换使用。
4、自定义属性
application.properties 可以把一些常量配置在这里
比如:com.dd = "www"
使用:
通过@Value(value="{config.name}")就可以绑定到你想要的属性上面
比如:
@Value=(value="{com.dd}")
private String dd;
属性如果太多,可以绑定对象,使用注解@ConfigurationProperties(prefix="com.wjk")来指明
例如:wjk.java
@ConfigurationProperties(prefix="com.wjk")
public class wjk{
private String name;
private String no;
//getter和setter省略
}
然后,还需要在springboot入口类加上@EnableConfigurationProperties 并指明加载哪个bean
@SpringBootApplication
@EnableConfigurationProperties({wjk.class})
public class Chapter2Application {
public static void main(String[] args) {
SpringApplication.run(Chapter2Application.class, args);
}
}
最后可以直接引用
@RestController
public class UserController {
@Autowired
wjk wjk;
@RequestMapping("/")
public String hexo(){
return wjk.getName()+wjk.getNo();
}
}
导入
① @Configuration :可以和@Bean一起创建一个简单的spring配置类(java),用来代替相应的xml配置文件
@Configuration
public class Conf {
@Bean
public Car car() {
Car car = new Car();
car.setWheel(wheel());
return car;
}
@Bean
public Wheel wheel() {
return new Wheel();
}
}
@Configuration 的注解类标识这个类可以使用spring ioc 容器作为bean定义的来源。
@Bean注解的方法将返回一个对象,注册在spring应用程序上下文中的bean
②@EnableAutoConfiguration :能够自动配置spring的上下文
③@ComponentScan : 会自动扫描指定包下标有 @Component的类,注册成bean,当然包括
@ComponentScan下的子注解 @Service @ Repository @Controller
2、application.properties(yml)可以放置在jar包内和jar包外的哪些目录?
jar包外:resources/config 和 resources
jar包内:config包内和Classpath根目录。WEB-INF/classes ,WEB-INF/classes 也就是classpath,资源目录,客 户端不能访问。
按照优先级排序为resources/config,resources,Classpath/config,Classpath。resource会覆盖
classpath中相同的属性。
如果相同优先级,application.properties 和application.yml,则application.yml会覆盖
application.properties里的属性
3、Profile 多环境配置
不同的运行环境,往往需要不同的配置
在Spring Boot中多环境配置文件名需要满足application-{profile}.properties的格式,其中{profile}对应你的环境标识,比如:
application-dev.properties:开发环境
application-prod.properties:生产环境
只需要在application.properties中使用spring.profiles.active属性来设置,值对应上面提到的{profile},这里就是指dev、prod这2个。
当然你也可以用命令行启动的时候带上参数:
java -jar xxx.jar --spring.profiles.active=dev
我给不同的环境添加不同的端口属性server.port,然后根据指定不同的spring.profiles.active来切换使用。
4、自定义属性
application.properties 可以把一些常量配置在这里
比如:com.dd = "www"
使用:
通过@Value(value="{config.name}")就可以绑定到你想要的属性上面
比如:
@Value=(value="{com.dd}")
private String dd;
属性如果太多,可以绑定对象,使用注解@ConfigurationProperties(prefix="com.wjk")来指明
例如:wjk.java
@ConfigurationProperties(prefix="com.wjk")
public class wjk{
private String name;
private String no;
//getter和setter省略
}
然后,还需要在springboot入口类加上@EnableConfigurationProperties 并指明加载哪个bean
@SpringBootApplication
@EnableConfigurationProperties({wjk.class})
public class Chapter2Application {
public static void main(String[] args) {
SpringApplication.run(Chapter2Application.class, args);
}
}
最后可以直接引用
@RestController
public class UserController {
@Autowired
wjk wjk;
@RequestMapping("/")
public String hexo(){
return wjk.getName()+wjk.getNo();
}
}
导入