admin管理员组文章数量:1794759
springBoot常用注解【Mysql+ClickHouse】项目搭建
springBoot 什么是SpringBoot?
springBoot就是用来简化Spring应用的初始搭建以及开发过程,让开发者不需要经过繁琐的配置就可以进行开发,可以将尽力关注与、于业务逻辑的框架。从根本上来讲,Spring Boot就是一些库的集合,它能够被任意项目的构建系统所使用。springBoot并不是一个全新的框架,他不是spring解决方案的一个替代品,而是spring的一个封装。所以,以前可以用spring做的事,springBoot都可以做。springBoot是一个非常好的微服务开发框架。
注解 Springboot中常用的注解 1.@RestController它继承自@Controller注解,当实现一个Restful web services的时候,response将一直通过response body发送。
2.@RequestMapping它是一个用来处理请求地址映射的注解,可以用于类上,表示类中的所有的响应请求的方法都是以该地址作为父路径。该注解有六个属性:
详细用例如下所示:
@RequestMapping(value = "test") @RestController public class TestController { //测试springBoot项目启动 @RequestMapping(value = "hello") public String Test(){ return "你好啊!!!"; } }启动项目,一般默认端口号为8080,访问localhost(172.0.0.1):8080/test/hello结果如下所示:
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-mR8njNs0-1645511151234)(C:\\Users\\viruser.v-desktop\\AppData\\Roaming\\Typora\\typora-user-images\\image-20220222095512638.png)]
3.@ResponseBody它表示该方法的返回结果直接写入HTTP response body中,一般在异步获取数据时使用,在使用@RequestMapping后,返回值通常被解析为跳转路径,加上@ResponseBody后,会直接返回json数据。
4.@RequestBody它将HTTP请求正文插入方法中,使用适合的HttpMessageConverter将请求体写入某个对象。
5.@Service它一般用于修饰Service层的组件。
6.@Data它用于实体类中get和set的方法的创建,用了它,就不用实现get和set方法了。
7.@Component它泛指组件,当组件不好归类的时候,可以使用这个注解进行标注。放在类上,把普通类实例化到spring容器中。可以说很多注解都是基于这个注解的。
8.@RequestParam用在方法前面的参数。
9.@Transactional在spring容器中,我们手工注解@Bean将被优先加载,框架不会重新实例化其他的PlaformTransactionManager实现类。在Sercice中,被@Transactional注解的方法,将支持事务。如果注解在类上,则整个的所有方法都默认支持事务。
10.@Bean用在方法上,用@Bean标注方法等价于xml中配置bean,这个方法一般返回一个实体对象,告诉spring这里产生一个对象,然后这个对象会交给spring管理。产生这个对象的方法Spring只会调用一次,随后这个spring将会将这个Bean对象放在自己的容器中。
11.@Configuration标注当前类是配置类,并会将当前类内声明的一个或多个以@Bean注解标记的方法的实例纳入到spring容器中,并且实例名就是方法名。(靠@Component注解)。
12.@ConfigurationProperties将配置文件的参数映射成一个对象,通过prefix来设定前缀,然后将后面的和对象的属性名一直就能实现注入(当然这个对象需要注入的属性需要提供get和set方法,因为spring底层其实就是通过反射调用该对象的set方法)。
13.@valuevalue的作用其实和ConfigurationProperties的作用差不多,就是读取的配置文件中参数的值,但是value是放在变量上面的,且是单值读取,而且value标注的变量并不需要和配置的文件的参数名字一致。
14.@Resource按名称来注入的,当找不到与名称匹配的Bean才会按照类型来注入。其实平时用的都是它默认的方式,即都不指定名字和类型。spring通过反射机制使用byName方法自动注入。@Resource的装配顺序:
它一般结合@ComponnetScan注解,来自动注入一个Service或Dao级别的Bean。默认是按照类型进行装配注入,如果允许null值,可以设置他required为false。即当不能确定Spring容器中一定拥有某个类的Bean时,可以在需要自动注入该类Bean的地方使用@Autowired(required = false)。
16.@Qualifier@Autowired是根据类型进行自动装配的。如果当spring上下文中存在不只一个或存在多个该类型的Bean时,就会抛出一个BeanCreateException异常。针对存在多个该类型的Bean,可以联合使用@Qualifier和@Autowired。
@Autowired @Qualifier("User") Private Usre user; 17.@SpringBootApplication这个注解就是集成了@SpringBootConfiguration、@EnableAutoConfiguration、@ComponentScan这三个注解。其中@SpringBootConfiguration表示这个类为配置类,@EnableAutoConfiguration表示开启自动配置,@ComponentScan表示自动扫描,只能扫描同一级的目录。
18.@EnableAutoConfigurationProperties将带有@ConfigurationProperties注解的类注入为Spring容器的Bean。如果使用了@ConfigurationProperties但是没有在启动类上增加这个注解,则@ConfigurationProperties将不起作用。
19.@Async与@EnableAsync其中@Async表示这个方法是异步方法;@EnableAsync这个注解需要加在启动类上,表示支持异步操作;如果不加,则@Async将不起作用。通俗点可以将这个注解理解为另起了一个线程。
20.@Scheduled与@EnableScheduled定时任务。同样,@EnableScheduled这个注解也需要加在启动类上,表示支持定时任务。
21.@Primary在spring中使用注解,常使用@Autowired,默认是根据类型Type来自动注入的。但有些特殊的情况,对同一个接口,可能会有几种不同的实现类,而默认只会采取一种情况下@Primary的作用就起来了。当然也可以活用注解,个人原因是遇到了双数据源(mysql+ClickHouse)是需要配置一个默认数据源时使用,样例如下: application.yml配置数据
spring: datasource: druid: #Mysql username: root password: **** url: jbbc:mysql://***/**?useUnicode=true$characterEncoding=utf-8&userSSL=true&serverTimezone=UTC type: com.alibaba.pool.DruidDataSource driverClassName: com.mysql.jdbc.Driver #ClickHouse click: dirverClassName: ru.yandex.clickhouse.ClickHouseDriver url: jdbc:clickhouse://***/** username: **** password: **** initialSize: 10 maxActive: 100 minIdle: 10 maxWait: 6000mysqlJdbcParamConfig配置如下:
//通过@ConfigurationProperties获取application.yml中的配置信 @Data @Componet @ConfigurationProperties(prefix = "spring.datasource") public class MysqlJdbcParamConfig{ private String driverClassName; private String url; private String username; private String password; } //将上面的对象在容器中配置起来 @Configuration @MapperScan(basePackages = "上面对象的路径") public class MysqlDuridConfig{ @Autowired MysqlJdbcParamConfig mysqlJdbcParamConfig; @Bean("mysqlDataSource") @Primary public DataSource mysqlDataSource(){ DruidDataSource datasource = new DruidDataSource(); datasource.setUrl(mysqlJdbcParamConfig.getUrl()); datasource.setDriverClassName(mysqlJdbcParamConfig.getDriverClassName()); datasource.setUsername(mysqlJdbcParamConfig.getUsername()); datasource.setPassword(mysqlJdbcParamConfig.getPassword()); return datasource; } @Bean("mysqlTransactionManager") @Primary public DataSourceTransactionManager getDataSourceTransactionManager(@Qualifier("mysqlDataSource") DataSource dataSource){ return new DataSourceTransactionManager(dataSource); } @Bean("sqlSessionFactory") @Primary public SqlSessionFactory getSqlSessionManager(@Qualifier("mysqlDataSource") DataSource dataSource) throws Exception { SqlSessionFactoryBean bean = new SqlSessionFactoryBean(); bean.setDataSource(dataSource); return bean.getObject(); } }clickJdbcParamConfig配置如下:
//通过@ConfigurationProperties获取application.yml中的配置信 @Data @Component @ConfigurationProperties(prefix = "spring.datasource.click") public class ClickHouseJdbcParamConfig { private String driverClassName; private String url; private String username; private String password; private Integer initialSize; private Integer maxActive; private Integer minIdle; private Integer maxWait; } //将上面的对象在容器中配置起来 @Configuration @ConfigurationProperties @MapperScan(basePackages = "com.hexin.clickhouseDemo.clickDao", sqlSessionFactoryRef = "clickHouseSqlSessionFactory") public class ClickHouseDruidCongfig { @Autowired ClickHouseJdbcParamConfig clickHouseJdbcParamConfig; @Bean("clickDataSource") public DataSource dataSource(){ DruidDataSource datasource = new DruidDataSource(); datasource.setUrl(clickHouseJdbcParamConfig.getUrl()); datasource.setDriverClassName(clickHouseJdbcParamConfig.getDriverClassName()); datasource.setUsername(clickHouseJdbcParamConfig.getUsername()); datasource.setInitialSize(clickHouseJdbcParamConfig.getInitialSize()); datasource.setMinIdle(clickHouseJdbcParamConfig.getMinIdle()); datasource.setMaxActive(clickHouseJdbcParamConfig.getMaxActive()); datasource.setMaxWait(clickHouseJdbcParamConfig.getMaxWait()); datasource.setPassword(clickHouseJdbcParamConfig.getPassword()); return datasource; } @Bean("clickTransactionManager") public DataSourceTransactionManager getDataSourceTransactionManager(@Qualifier("clickDataSource") DataSource dataSource){ return new DataSourceTransactionManager(dataSource); } @Bean("clickHouseSqlSessionFactory") public SqlSessionFactory getSqlSessionManager(@Qualifier("clickDataSource") DataSource dataSource) throws Exception { SqlSessionFactoryBean bean = new SqlSessionFactoryBean(); bean.setDataSource(dataSource); return bean.getObject(); } }本文标签: 注解常用项目SpringBootClickHouse
版权声明:本文标题:springBoot常用注解【Mysql+ClickHouse】项目搭建 内容由林淑君副主任自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:http://www.xiehuijuan.com/baike/1686810357a105771.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论