一.@bean的作用

Spring的@Bean注解用于告诉方法,产生一个Bean对象,然后这个Bean对象交给Spring管理。Spring只会调用一次,将这个Bean对象放在自己的IOC容器中。

通俗的将就是在服务启动时,实例化一个对象放到ioc容器中,在需要初始化的实例,方法,内容时使用。

未指定bean 的名称,默认采用的是 "方法名" + "首字母小写"的配置方式

https://www.cnblogs.com/cxuanBlog/p/11179439.html

https://www.jianshu.com/p/93727fa9bf23

二.案例

1.定义一个配置文件:

package com.ljf.spring.boot.demo.quartz.config;

import com.ljf.spring.boot.demo.quartz.job.MyDefineQuartz;
import com.ljf.spring.boot.demo.quartz.model.User;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.scheduling.quartz.CronTriggerFactoryBean;
import org.springframework.scheduling.quartz.JobDetailFactoryBean;
import org.springframework.scheduling.quartz.SchedulerFactoryBean;

/**
 * @ClassName: QuartsConfig
 * @Description: TODO
 * @Author: liujianfu
 * @Date: 2020/07/27 09:13:13
 * @Version: V1.0
 **/
@Configuration
public class QuartsConfig {
    /**
     * 1.创建Job对象
     */
    @Bean
    public JobDetailFactoryBean jobDetailFactoryBean(){
        System.out.println("初始化,创建job对象......");
        JobDetailFactoryBean factory = new JobDetailFactoryBean();
        //关联我们自己的Job类
        factory.setJobClass(MyDefineQuartz.class);
        return factory;
    }

    /**
     * 2.Cron Trigger
     */
    @Bean
    public CronTriggerFactoryBean cronTriggerFactoryBean(JobDetailFactoryBean jobDetailFactoryBean){
        System.out.println("初始化,trigger对象......");
        CronTriggerFactoryBean factory = new CronTriggerFactoryBean();
        factory.setJobDetail(jobDetailFactoryBean.getObject());
        //设置触发时间
        factory.setCronExpression("0/2 * * * * ?");
        return factory;
    }

    /**
     * 3.创建Scheduler对象
     */
    @Bean
    public SchedulerFactoryBean schedulerFactoryBean(CronTriggerFactoryBean cronTriggerFactoryBean,User u){
        System.out.println("初始化,创建scheduler对象......");
        SchedulerFactoryBean factory = new SchedulerFactoryBean();
        //关联trigger
        factory.setTriggers(cronTriggerFactoryBean.getObject());
        System.out.println("初始化u的对象:"+u.getName());

        return factory;
    }
    /**
    * @author liujianfu
    * @description
    * @date 2020/7/27 0027 下午 12:26
    * @param []
    * @return com.ljf.spring.boot.demo.quartz.model.User
    */

    @Bean
    public User initUser(){
        User u=new User();
        u.setId(23);
        u.setName("ljf");
        return u;
    }
}

2.启动类:

package com.ljf.spring.boot.demo.quartz;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;

/**
 * Hello world!
 *
 */
@SpringBootApplication
public class App 
{
    public static void main( String[] args )
    {
        SpringApplication.run(App.class, args);
        System.out.println( "spring boot 和quarts集成程序启动成功!" );
    }
}

 

 

3.结果:可以看到服务启动时候,添加@bean的方法都实例化了一个对象,都进行了执行。

四  案例二

 

Logo

权威|前沿|技术|干货|国内首个API全生命周期开发者社区

更多推荐