[Notas de estudio] Función de contenedor SpringBoot
Directorio de artículos
En primer lugar, la adición de componentes
@Configuración
Configuración: Configuración.
@Configuration
Es una anotación introducida por Spring 3.0, que se usa para reemplazar el archivo de configuración xml. El uso de esta anotación indica que SpringBoot
esta clase es una clase de configuración == archivo de configuración.
Modo completo: proxyBeanMethods = true
obtenga el objeto directamente del contenedor IOC para asegurarse de que los componentes devueltos por cada método @Bean se llamen una sola instancia, es decir, los objetos son los mismos.
@Configuration(proxyBeanMethods = true)
public class MyConfig {
@Bean("xiaobao")
public User user1(){
User user = new User("小宝", 18);
return user;
}
}
//======================//
MyConfig bean = run.getBean(MyConfig.class);
User user = bean.user1();
User user1 = bean.user1();
System.out.println(user == user1); //true
Modo Lite: proxyBeanMethods = false
si se establece en falso, es decir, no se utiliza ninguna anotación, el objeto obtenido llamando al método marcado con @Bean es diferente del que está en el contenedor IOC y es un objeto nuevo.
@Configuration(proxyBeanMethods = false)
public class MyConfig {
@Bean("xiaobao")
public User user1(){
User user = new User("小宝", 18);
return user;
}
}
//======================//
MyConfig bean = run.getBean(MyConfig.class);
User user = bean.user1();
User user1 = bean.user1();
System.out.println(user == user1); //false
Nota: al observar @Configuration
el código fuente de , podemos saber que el proxyBeanMethods
valor predeterminado es true
.
@Target({
ElementType.TYPE})
@Retention(RetentionPolicy.RUNTIME)
@Documented
@Component
public @interface Configuration {
@AliasFor(
annotation = Component.class
)
String value() default "";
boolean proxyBeanMethods() default true;
}
@Frijol
Rol: Agregar componentes al contenedor. Use el nombre del método como la identificación del componente. El tipo de retorno es el tipo de componente. El valor devuelto es la instancia del componente en el contenedor.
@ComponentScan, @Importar
* 4、@Import({
User.class, DBHelper.class})
* 给容器中自动创建出这两个类型的组件、默认组件的名字就是全类名
*
*
*
*/
@Import({
User.class, DBHelper.class})
@Configuration(proxyBeanMethods = false) //告诉SpringBoot这是一个配置类 == 配置文件
public class MyConfig {
}
@Condicional
@ConditionalOnMissingBean(name = "tom")
@Import({
User.class})
public class MyConfig {
@Bean
public User user (){
User xiaobao = new User("xiaobao", 18);
return xiaobao;
}
}
ConfigurableApplicationContext run = SpringApplication.run(SpringBootDemo02Application.class, args);
boolean user = run.containsBean("user");
System.out.println("Bean中的user"+user);
En segundo lugar, la introducción de archivos de configuración nativos
@ImportResource
@ImportResource: se pueden importar archivos de configuración nativos.
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:context="http://www.springframework.org/schema/context"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/context https://www.springframework.org/schema/context/spring-context.xsd">
<bean id="haha" class="com.xiaobao.boot.pojo.User">
<property name="name" value="zhangsan"></property>
<property name="age" value="18"></property>
</bean>
</beans>
prueba:
@ImportResource("classpath:beans.xml")
@SpringBootApplication
public class MainApplication {
//固定写法,让SpringBoot跑起来
public static void main(String[] args) {
ConfigurableApplicationContext run = SpringApplication.run(MainApplication.class, args);
Object hahah = run.containsBean("haha");
System.out.println(hahah);//true
}
}
3. Enlace de configuración
Cómo usar Java para leer el contenido en el archivo de propiedades y encapsularlo en JavaBean para usarlo en cualquier momento;
public class getProperties {
public static void main(String[] args) throws FileNotFoundException, IOException {
Properties pps = new Properties();
pps.load(new FileInputStream("a.properties"));
Enumeration enum1 = pps.propertyNames();//得到配置文件的名字
while(enum1.hasMoreElements()) {
String strKey = (String) enum1.nextElement();
String strValue = pps.getProperty(strKey);
System.out.println(strKey + "=" + strValue);
//封装到JavaBean。
}
}
}
@Propiedades de configuración
Primero configure la clase de entidad:
@Component
@ConfigurationProperties(prefix = "car")
public class Car {
private String brand;
private Integer price;
public String getBrand() {
return brand;
}
public void setBrand(String brand) {
this.brand = brand;
}
public Integer getPrice() {
return price;
}
public void setPrice(Integer price) {
this.price = price;
}
@Override
public String toString() {
return "Car{" +
"brand='" + brand + '\'' +
", price=" + price +
'}';
}
}
properties
Configurar parámetros en .
car.brand=BWM
car.price = 1000000
prueba:
@Autowired
Car car;
@RequestMapping("/car")
public Car car(){
return car;
}
resultado:
@EnableConfigurationProperties
@EnableConfigurationProperties(Car.class)
//1、开启Car配置绑定功能
//2、把这个Car这个组件自动注册到容器中
public class MyConfig {
}
Adjunto - Creación del Proyecto SpringBoot
Herramientas: IDEA Edición Profesional.
Primero abra Archivo->Proyecto en la esquina superior izquierda.
El segundo paso es seleccionar Spring initializr
y comenzar a crear su propio nombre de proyecto.
Nota: ¡Es mejor elegir la versión 8 para la versión de Java, de lo contrario, puede generar conflictos de versión! ! !
Luego, elija las herramientas que necesita, esta es solo la configuración propia del blogger, puede consultarla y ¡también se pueden usar otras configuraciones!
Después de que la creación sea exitosa, elimine la configuración actualmente inútil.
¡Después de eliminar, debemos recordar usar la versión maven3.3
anterior para guiar el paquete! ! !