zoukankan      html  css  js  c++  java
  • Spring 中 context:propertyplaceholder @Bean

    Spring中 context:property-placeholder 元素

    <bean id="propertyPlaceholderConfigurer" class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">  
        <property name="locations">  
            <list>  
                <value>userinfo.properties</value>  
            </list>  
        </property>  
    </bean>  
     
    <bean name="userInfo" class="test.UserInfo">  
      <property name="username" value="${db.username}"/>  
      <property name="password" value="${db.password}"/>  
    </bean>

    Spring提供了<context:property-placeholder/>元素。下面给出了配置示例,启用它后,开发者便不用配置PropertyPlaceholderConfigurer对象了。

    <context:property-placeholder location="userinfo.properties"/>

    @Bean
    该注释的属性的名称和语义类似于Spring XML模式中bean的元素的名称和语义。@Bean指示方法产生一个由Spring容器管理的bean。
    @Bean可以用在方法和注释上。

    @Configuration
    public class DataBaseConfig {
        @Bean("dataSource")
        public DataSource getDataSource(){
            DataSource dataSource = new DataSource();
            dataSource.setUserId("jingsi");
            dataSource.setPassword("123456");
            dataSource.setUrl("www");
            return dataSource;
        }
    
    }

    @Bean明确地指示了一种方法,什么方法呢——产生一个bean的方法,并且交给Spring容器管理;

    @Bean 用在方法上,告诉Spring容器,你可以从下面这个方法中拿到一个Bean

     示例:

    @Service
    public class BeanTest {  
    
        @Bean
        public   BeanTest  getBean(){
            BeanTest bean = new  BeanTest();
            System.out.println("调用方法:"+bean);
            return bean;
        }
    }
    
    public class Main {
        @SuppressWarnings("unused")
        public static void main(String[] args) {
            ClassPathXmlApplicationContext context = new ClassPathXmlApplicationContext("application-context.xml");
    
            Object bean1 = context.getBean("getBean");
            System.out.println(bean1);
            Object bean2 = context.getBean("getBean");
            System.out.println(bean2);
        }
    }

    输出:

    调用方法:Spring.BeanTest@5a4041cc
    Spring.BeanTest@5a4041cc
    Spring.BeanTest@5a4041cc

    默认bean的名称就是其方法名

    REF

    https://www.jianshu.com/p/2f904bebb9d0

    下面罗列有哪些添加组件的方式?

    1、通过@CompentScan +@Controller @Service @Respository @compent

    适合场景:我们自己写的组件可以通过这种方式来进行加载到容器中。

    2、通过@Bean的方式来导入组件

    适合场景: 适用于导入第三方组件的类

    3、通过@Import 来导入组件

    适合场景:导入组件的id为全路径,用处最多的是其他框架整个Spring时,使用@Import注解导入整合类。

    演示@Import注解 的使用

    1、注解导入需要初始化的类

    @Import (value = {Person.class, Car.class})

    2、实现 ImportSelector 接口,在接口中返回id的全路径

    public class HelloImportSelector implements ImportSelector {
        @Override
        public String[] selectImports(AnnotationMetadata importingClassMetadata) {
            return new String[]{"com.xx.testimport.compent.Person"};
        }
    }
    @Configuration
    @Import(value = {HelloImportSelector.class})
    @ComponentScan(basePackages ={"com.xx.testimport.scanner"})
    public class MainConfig {
    } 

    运行后Person就会被加载到Spring容器中。

     

    REF
    https://www.zhihu.com/question/428542278/answer/1645069838
    https://www.jianshu.com/p/0628474b4cfa
    https://blog.csdn.net/mapleleafforest/article/details/86623578
     
  • 相关阅读:
    java:数组操作工具类 java.util.Arrays包 主要方法详解
    java:接口特性 接口与抽象类/普通类的区别
    mybatis教程:入门>>精通>>实战
    Java :内部类基础详解
    Java swing: 实现ActionListener监听器的三种途径
    Java:final、static关键字 详解+两者结合使用
    Java:双括号初始化 /匿名内部类初始化法
    Java:静态内部类的使用目的、使用限制、与非静态内部类的对比
    域名解析>>"记录类型" 说明
    Java:接口继承接口 (多继承机制)
  • 原文地址:https://www.cnblogs.com/emanlee/p/15726145.html
Copyright © 2011-2022 走看看