给容器中注册组件的几种方式(二)

接上篇:

二:@Bean,导入第三方包里面的组件

  //@Bean  

//不指定value时,默认将方法名称当成ID,当指定value时,name就是其value;类型(class)就是返回值的类型,老版本的是name

     @Bean("myUser")

       public  User user() {

              return new
User("李四", "1234565");

       }

     

/*

    * @Scope 作用域:

    * singleton(单实例):默认的选项,IOC容器一启动就创建对象放在IOC容器中,以后每次都是在这个容器里面拿,只会创建一次

    * prototype(多实例):IOC容器启动时不会创建对象,每次获取的时候才会去调用方法创建对象放在IOC容器中,每次创建都是一个不同的对象值

    */

   /*

    * @Lazy 

懒加载

    * 单实例bean在容器启动时就创建对象,而懒加载可以使其启动时不加载,在使用(获取)这个bean时再创建对象(注意:单实例只会创建一次对象)

    */

   /*

    * @Conditional({Condition}):按照一定的条件进行判断,满足条件才给容器中注册这个bean

    * (spring4.0以后的版本才有)

    * Condition:条件:

    * 自定义条件:WindowsCondition.java,LinuxCondition.java

    * 因为它的目标为@Target({ElementType.TYPE,

ElementType.METHOD}),所有不仅能用在方法上,还能用在类上(类中组件统一设置):

    * 当用在类上时,表示满足该条件才会去注册这个类下面的bean

    */
    @Conditional({WindowsCondition.class})

       @Bean("bill")

       public User user01()
{

              return new
User("bill", "@Conditional");

       }

       @Conditional({LinuxCondition.class})

       @Bean("linus")

       public User user02()
{

              return new
User("linus", "@Conditional");

       }

       

       //使用

spring提供的FactoryBean工厂注册bean

    @Bean

       public myFactoryBean
factoryBean() {

              return new
myFactoryBean();

       }

      

自定义条件类(LinuxCondition.java,WindowsCondition.java),实现“Condition”接口,重写“matches”方法,使用它的参数可以获取到上下文环境,可以获取到当前运行环境,例如(Window10),例如:

   public class

WindowsCondition implements Condition {

    @Override

       public boolean
matches(ConditionContext context, AnnotatedTypeMetadata metadata) {

              // 1:获取当前IOC容器使用的bean工厂:

              ConfigurableListableBeanFactory
beanFactory = context.getBeanFactory();

              // 2:获取当前IOC容器的类加载器

              ClassLoader
classLoader = context.getClassLoader();

              // 3:获取当前运行环境

              Environment
environment = context.getEnvironment();

              // 4:获取bean定义的注册类(比如user.class)

              BeanDefinitionRegistry
registry = context.getRegistry();

              // 4:获取资源加载器

              ResourceLoader
resourceLoader = context.getResourceLoader();



              // 通过运行环境获取到当前的操作系统是不是Linux

              String
property = environment.getProperty("os.name");

              if
(property.contains("Windows")) {

                     return
true;

              }

              return false;

       }





} 



通过自定义条件可以达到强大的效果,自动装配底层大量的用到的自定义条件
另外再说一个eclipse切换环境的方式

/*

               * 切换激活环境的方式:

               *  0: //添加操作变量(使用命令行动态参数):右键Run AS,点击最后一个-->Arguments的VM arguments(虚拟机参数),输入:-Dos.name=linux

               * 1:使用命令行动态参数:上面有,不同的是输入的值:-Dspring.profiles.active=“测试环境的名称”(比如:test,Dev)

               * 2:使用代码的方式:

               *   2.1:创建一个空的容器:AnnotationConfigApplicationContext=new
AnnotationConfigApplicationContext();

               *   2.2:设置需要激活的环境:applicationContext.getEnvironment().setActiveProfiles("test","dev");

               *   2.3:注册主配置类:applicationContext.register(myProfileConfig.class);  register:注册

               *   2.4:启动刷新容器:applicationContext.refresh();

               * 

               */

本篇完。。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Java,向容器添加组件的方法取决于使用的GUI工具包。下面以Swing为例,介绍几种常见的向容器添加组件的方法。 1. 使用add()方法 Swing容器类都继承自Container类,因此可以使用add()方法向容器添加组件。例如,向JPanel添加一个JButton,可以使用以下代码: ``` JPanel panel = new JPanel(); JButton button = new JButton("Click me!"); panel.add(button); ``` 在这个例子,我们先创建了一个JPanel对象,然后创建了一个JButton对象,并使用add()方法将它添加到JPanel。 2. 使用setLayout()方法 有些容器在创建时需要设置布局管理器,例如JFrame和JPanel。可以使用setLayout()方法设置布局管理器。例如,设置JPanel的布局为FlowLayout,可以使用以下代码: ``` JPanel panel = new JPanel(); panel.setLayout(new FlowLayout()); ``` 在这个例子,我们首先创建了一个JPanel对象,然后使用setLayout()方法设置它的布局管理器为FlowLayout。 3. 使用GridBagLayout布局管理器 GridBagLayout是一种更复杂的布局管理器,可以用于创建复杂的布局。使用GridBagLayout向容器添加组件需要先创建一个GridBagConstraints对象,然后设置组件在网格的位置和大小,并使用add()方法添加组件。例如,向JPanel添加一个JButton,可以使用以下代码: ``` JPanel panel = new JPanel(); panel.setLayout(new GridBagLayout()); JButton button = new JButton("Click me!"); GridBagConstraints c = new GridBagConstraints(); c.gridx = 0; c.gridy = 0; c.fill = GridBagConstraints.HORIZONTAL; panel.add(button, c); ``` 在这个例子,我们首先创建了一个JPanel对象,并使用setLayout()方法设置它的布局管理器为GridBagLayout。然后,我们创建了一个JButton对象,并创建了一个GridBagConstraints对象。接着,我们设置了组件在网格的位置和大小,并使用add()方法将组件添加到JPanel。 这些方法只是Swing容器添加组件几种常见方法,具体使用哪种方法取决于程序的需求和设计。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值