结合项目,学习springboot相关注解

今日模块截图:

 

 

 1、入口类 Application

/**
*程序入口
*/
@SpringBootApplication
@EnableEurekaClient
public class Application {
    public static void main(String[] args){
        SpringApplication.run(Application.class,args);
    }
}

 

 

 

(1) @SpringBootApplication -----核心注解

组合注解,相当于以下三个注解的作用:@Configuration、@EnableAutoConfiguration、@ComponentScan

@Configuration 标识这个类可以使用Spring IoC容器作为bean定义的来源。

@EnableAutoConfiguration 让SpringBoot根据路径的jar包依赖为当前项目进行自动配置

@ComponentScan 会自动扫描指定包下的全部标有@Component的类,并注册成bean,当然包括@Component下的子注解 ===============@Service,@Repository,@Controller。  

(2)EnableEurekaClient  

2、文件夹bean下的 FaultStatData

/*
 * @Data 注解在类上;提供类所有属性的
 * getting 和 setting 方法,此外还提供了
 * equals、canEqual、hashCode、toString 方法
 */
@Data
public class FaultStatData {
    private String networklayer;
    private String neName;
    private String alarmId;
    private Integer alarmSeverity;
}

3、文件夹configuration下的 RabbitConfiguration

 // @Configuration标注在类上,相当于把该类作为spring的xml配置文件中的<beans>,作用为:配置spring容器(应用上下文)

@Configuration
public class RabbitConfiguration {
    //@Value 读取属性文件
    @Value("${fault.queue.name:aijud.fm_alarm}")
    private String queueName;

    @Value("${fault.queue.thread:10}")
    private Integer threadNum;

    //@Bean注解注册bean,同时可以指定初始化和销毁方法
    @Bean
    public Queue Queue() {
        return new Queue(queueName);
    }

    @Bean
    public SimpleRabbitListenerContainerFactory rabbitListenerContainerFactory(ConnectionFactory connectionFactory){
        SimpleRabbitListenerContainerFactory factory = new SimpleRabbitListenerContainerFactory();
        factory.setTaskExecutor(Executors.newFixedThreadPool(threadNum));
        factory.setConnectionFactory(connectionFactory);
        return factory;
    }
}
4、entity目录下的 AlarmSceneEntity 和FaultEntity(省)
@Data
// @Entity 对实体注释。任何Hibernate映射对象都要有这个注释
@Entity
// @Table 声明此对象映射到数据库的数据表,通过它可以为实体指定表(talbe),目录(Catalog)和schema的名字
@Table(name = "FM_ALARM_SCENE")
public class AlarmSceneEntity implements Serializable {

    // @Id声明此属性为主键。
    @Id
    @GenericGenerator(name = "uuid",strategy = "uuid")
    // @GeneratedValue指定主键的生成策略
    @GeneratedValue(generator = "uuid")
    String id = UUID.randomUUID().toString();
    String networklayer;

    //注释的是另一个表指向本表的外键。
    @JoinColumn(name = "AlarmId")
    //多对一关联
    @ManyToOne
    private FaultEntity realtimeFaultEntity;

    public AlarmSceneEntity(){

    }

    public AlarmSceneEntity(String networklayer,FaultEntity realtimeFaultEntity){
        this.networklayer = networklayer;
        this.realtimeFaultEntity = realtimeFaultEntity;
    }
}

5、repository中的接口和类

public interface IFaultRepository extends JpaRepository<FaultEntity,String> {
    // @Modifying修饰@Query中的 JPQL(持久化查询语句),以通知SpringData,这是一个修改删除操作。
    @Modifying
    @Query("delete from FaultEntity where ClearId = :clearId")
    //事务注解方式
    @Transactional
    void deleteByClearId(String clearId);
}
//日志打印,省去了 private  final Logger logger = LoggerFactory.getLogger(XXX.class);
@Slf4j
//对应存储层Bean,它用于将数据访问层 (DAO 层 ) 的类标识为 Spring Bean。
@Repository
public class FaultStatisticRepository {

//spring可以自动帮你把bean里面引用的对象的setter/getter方法省略,它会自动帮你set/get。
    @Autowired
    private JdbcTemplate jdbcTemplate;

    public List<FaultStatData> findFaultStatDatas(){
        try {
            String sql = "SELECT NETWORKLAYER, NE_NAME, ALARM_ID, ALARM_SEVERITY FROM FM_ALARM";

            log.info("findNetworklayerFaults: sql = {}",sql);
            return jdbcTemplate.query(sql,new FaultStatDataRowMapper());
        } catch (Exception e) {
            log.error("findNetworklayerFaults error: {}", e.getMessage());
            e.printStackTrace();
        }
        return null;
    }
}

6、restcontroller


// @RestController = @Controller + @Repository ,加了该注解后就无法返回jsp页面了,返回的内容就是return中的内容,配置的
 // 视图解析器不起作用
@RestController
@RequestMapping("/api/fault/statistic")
@Slf4j
public class FaultStatisticRestController {
    @Autowired
    private IFaultStatisticService faultStatisticService;

    @Autowired
    private FaultStatisticRepository faultStatisticRepository;

    @RequestMapping(value = "/update")
    public String update() {
        faultStatisticService.updateCount();
        return "success";
    }

    @RequestMapping(value = "/device/ids")
    public Map<String, Map<String, Integer>> findDeviceIds() {
        return faultStatisticRepository.findDeviceIds();
    }
}

7、service

@Service:服务层组件,用于标注业务层组件,表示定义一个bean,自动根据bean的类名实例化一个首写字母为小写的bean

@Qualifier:(该注解后面括号会有特定的实现类名字)表明了哪个实现类才是我们所需要的,绑定了某个实现类,避免了 一个接口被多个类实现的尴尬境地

@Component: 泛指组件,当组件不好归类的时候,我们可以使用这个注解进行标注。  

@PostConstruct: 用于在依赖关系注入完成之后需要执行的方法上,以执行任何初始化

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值