[Notas de estudio] Función de contenedor SpringBoot

[Notas de estudio] Función de contenedor SpringBoot

inserte la descripción de la imagen aquí

En primer lugar, la adición de componentes

@Configuración

Configuración: Configuración.

@ConfigurationEs 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 SpringBootesta 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 @Configurationel código fuente de , podemos saber que el proxyBeanMethodsvalor 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 +
                '}';
    }

}

propertiesConfigurar parámetros en .

car.brand=BWM
car.price = 1000000

prueba:

    @Autowired
    Car car;

    @RequestMapping("/car")
    public Car car(){
    
    
        return car;
    }

resultado:

inserte la descripción de la imagen aquí

@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.

inserte la descripción de la imagen aquí

El segundo paso es seleccionar Spring initializry 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! ! !

inserte la descripción de la imagen aquí

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!

inserte la descripción de la imagen aquí

Después de que la creación sea exitosa, elimine la configuración actualmente inútil.

inserte la descripción de la imagen aquí

¡Después de eliminar, debemos recordar usar la versión maven3.3 anterior para guiar el paquete! ! !

inserte la descripción de la imagen aquí

Supongo que te gusta

Origin blog.csdn.net/m0_54355125/article/details/124446367
Recomendado
Clasificación