mave,spring,redis使用小总结

最近做设计和一些简单算法的东东,发现原来maven和spring注册的一些东西有遗忘,需要总结下重新加固下:

1、maven

Maven的核心文件很小,主要的任务都是由插件来完成。定位到:%本地仓库%\org\apache\maven\plugins,可以看到一些下载好的插件:

一个插件通常可以完成多个任务,每一个任务就叫做插件的一个目标。如执行mvn install命令时,调用的插件和执行的插件目标如下:

 

Maven的生命周期是抽象的,实际需要插件来完成任务,这一过程是通过将插件的目标(goal)绑定到生命周期的具体阶段(phase)来完成的。如:将maven-compiler-plugin插件的compile目标绑定到default生命周期的compile阶段,完成项目的源代码编译:

 Maven对一些生命周期的阶段(phase)默认绑定了插件目标,因为不同的项目有jar、war、pom等不同的打包方式,因此对应的有不同的绑定关系,其中针对default生命周期的jar包打包方式的绑定关系如下:

第二列中,冒号后面即是绑定的插件目标,冒号前面是插件的前缀(prefix),是配置和使用插件的一种简化方式。Plugin Prefix

 

典型的pom在build中的设置:

<build>
    <plugins>
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-jar-plugin</artifactId>
        </plugin>
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-resources-plugin</artifactId>
        </plugin>
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-dependency-plugin</artifactId>
        </plugin>
        <plugin>
            <artifactId>maven-assembly-plugin</artifactId>
            <groupId>org.apache.maven.plugins</groupId>
            <configuration>
                <appendAssemblyId>false</appendAssemblyId>
                <descriptors>
                    <descriptor>src/main/package.xml</descriptor>
                </descriptors>
                <outputDirectory>/deploy/audit-image</outputDirectory>
                <finalName>${project.name}</finalName>
            </configuration>
            <executions>
                <execution>
                    <id>make-assembly</id>
                    <phase>package</phase>
                    <goals>
                        <goal>single</goal>
                    </goals>
                </execution>
            </executions>
        </plugin>
    </plugins>
</build>
每个plug in都可以有很多参数设置,可以控制在执行阶段的处理,maven-assembly-plugin插件可以通过声明文件来设置哪些文件打包
 
2、springboot使用:

spring中注解的分类:

1、一类是使用Bean,即是把已经在xml文件中配置好的Bean拿来用,完成属性、方法的组装;比如@Autowired , @Resource,可以通过byTYPE(@Autowired)、byNAME(@Resource)的方式获取Bean;

2、一类是注册Bean,@Component , @Repository , @ Controller , @Service , @Configration这些注解都是把你要实例化的对象转化成一个Bean,放在IoC容器中,等你要用的时候,它会和上面的@Autowired , @Resource配合到一起,把对象、属性、方法完美组装。

 

@Bean在@Configuration和在@Component中的区别

官方解释翻译:

在Component中(@Component标注的类,包括@Service,@Repository, @Controller)使用@Bean注解和在@Configuration中使用是不同的。在@Component类中使用方法或字段时不会使用CGLIB增强(及不使用代理类:调用任何方法,使用任何变量,拿到的是原始对象,后面会有例子解释)。而在@Configuration类中使用方法或字段时则使用CGLIB创造协作对象(及使用代理:拿到的是代理对象);当调用@Bean注解的方法时它不是普通的Java语义,而是从容器中拿到由Spring生命周期管理、被Spring代理甚至依赖于其他Bean的对象引用。在@Component中调用@Bean注解的方法和字段则是普通的Java语义,不经过CGLIB处理。

 

@Autowired新特性:

@Autowired 在Spring2.5引入,可以对成员变量、方法和构造函数进行标注,来完成自动装配的工作。 无需再通过传统的在bean的xml文件中进行bean的注入配置。而是使用注解,系统自动为你注入,即隐式配置。首先要知道:@Autowired是根据类型进行标注的,如需要按照名称进行装配,则需要配合@Qualifier使用 进行指定包扫描的component



配置文件设置变化,比如数据库配置,更加简单,举例如下:

@Configuration
public class DataDbConfig {

    private static Logger logger = LoggerFactory.getLogger(DataDbConfig.class);

    @Value("${mybatis.config-location}")
    private String configPath;

    @Primary
    @Bean(name = "dataDataSource")
    @Qualifier("dataDataSource")
    @ConfigurationProperties(prefix = "datasource.data")
    public DataSource dataDataSource() {
        return DataSourceBuilder.create().build();
    }

    @Bean(name = "dataSessionFactory")
    public SqlSessionFactory dataSessionFactory(@Qualifier("dataDataSource") DataSource dataDataSource) throws Exception {
        SqlSessionFactoryBean bean = new SqlSessionFactoryBean();
        bean.setDataSource(dataDataSource);
        bean.setConfigLocation(new ClassPathResource(configPath));
        return bean.getObject();
    }

    @Bean(name = "dataSessionTemplate")
    public SqlSessionTemplate dataSessionTemplate(@Qualifier("dataSessionFactory") SqlSessionFactory baseSessionFactory) {
        return new SqlSessionTemplate(baseSessionFactory);
    }
}

注解中使用了@Bean,@Qualifier,@Configuration,@ConfigurationProperties

 


3、redis的命令

数据统计和流量限制关心的特性包括:

HINCRBY:针对hash的key进行增加

EVAL:从 Redis 2.6.0 版本开始,通过内置的 Lua 解释器,可以使用 EVAL 命令对 Lua 脚本进行求值。

Transaction相关命令:DISCARD、EXEC、MULTI、UNWATCH、WATCH用的较少,需要深入了解下

注意:HINCRBY之前要进行HGET,无法保证事务,需要将对应的命令放到EVAL中编写一个脚本执行

 

3、参考文档:

redis相关命令 http://doc.redisfans.com/

maven常用plug in http://maven.apache.org/plugins/index.html 

Spring中基于Java的配置@Configuration和@Bean用法  http://blog.csdn.net/vvhesj/article/details/47661001 

Spring中Bean及@Bean的理解 https://www.cnblogs.com/bossen/p/5824067.html

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小小她爹

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值