1. Spring笔记07-Hibernate JPA与Spring Data

    7.1 映射JPA实体

    JPA: Java Persistence API 它是从EJB3中抽取出来的。

    • EntityManagerFactory
    • EntityManager
    • persistence.xml
    • @Entity
    • @Column
    • @Table

    要使用JPA,我们需要添加依赖:

    compile group: 'javax', name: 'javaee-api', version: '7.0'
    

    我们来新建数据:

    @Entity
    public class Account {
        @Id
        private Long id;
        private BigDecimal balance;
    
       //...
    }
    

    然后配置数据源:

    @Configuration
    @ComponentScan(basePackages = "lx.spring.core")
    @PropertySource("classpath:prod.properties")
    @EnableTransactionManagement
    public ...
    Tagged as : Java Spring
  2. Spring笔记06-使用JdbcTemplate进行数据访问

    6.1 实例化和配置

    没有Spring的情况下,JDBC非常难用;有了Spring,JDBC就变得比较靠谱可用了。

    这里我们在Bean中使用DataSourceJdbcTemplate进行初始化。

    @Repository
    @Profile("test")
    public class JdbcAccountRepository implements AccountRepository {
    
        private JdbcTemplate template;
        private static long nextId = 4;
    
        @Autowired
        public JdbcAccountRepository(DataSource dataSource) {
            template = new JdbcTemplate(dataSource);
        }
    }
    

    后面我们看如何配置多个DataSource

    6.2 定义数据源Data Source

    之前我们已经讲了@Component,但是在实际中我们更多的遇到的是@Service@Repository@Controller ...

    Tagged as : Java Spring
  3. Spring笔记05-Spring事务

    5.1 声明事务管理

    ACID 属性:

    Atomic原子:All or Nothing

    Consistent一致性: DB integrity constraints never violated

    Isolated: How transactions see work done by others

    Durable: Committed changes are permanent

    我们一般是在Service层声明事务。

    5.1.1 @Transactional注解

    @Transactional注解允许我们管理一个事务管理器。Spring不直接提供事务管理器,它提供一个hook连接到已经存在的事务管理器,比如我们使用关系数据库,那Spring就是使用关系数据库的事务管理器。Spring的Bean和Entity允许我们请求事务管理器,设置属性(比如超时、只读等)。

    应用Spring的事务需要两步:

    1. 应用Transactional注解 a. XML格式 b ...
    Tagged as : Java Spring
  4. Spring笔记04-使用Spring进行测试

    4.1 标准测试注解和injecting fixture

    Spring的一个特点是测试Component非常方便。

    现在我们为BaseballGame创建BaseballGameTest。然后做测试:

    public class BaseballGameTest {
        private Game game;
        private ApplicationContext ctx;
    
        @Before
        public void setUp() throws Exception {
            ctx = new AnnotationConfigApplicationContext(AppConfig.class);
            game = ctx.getBean("game", Game.class);
        }
    
        @Test
        public void playGame() throws Exception {
            String home = game.getHomeTeam().getName();
            String away = game ...
    Tagged as : Java Spring
  5. Spring笔记03-面向切面编程AOP

    3.1 AOP的概念

    AOP适用于以下场景:代码交织(code tangling)和代码分散(code scattering)

    代码交织是指一个方法完成多个功能,这几个功能之间又没有必然联系,比如我们需要做日志、检查授权和执行业务逻辑,如果我们不用AOP的话那这三个就混在一起了。

    代码分散式指比如我们有多处需要做日志,然后这些代码在多个地方重复。

    AOP允许我们将这些动作封装成一个类,然后告诉Spring我们希望在多个地方调用这个类(成为Aspect),从而避免代码交织和分散。

    AOP会设计到一下几个概念:

    • 连接点Join Point
    • 切入点Point Cut
    • Advice
    • Aspect
    • Weaving

    3.1.1 连接点(Join Point)和切入点(Point Cut)

    连接点,指的是我们能够应用我们Aspect的地方。这是告诉我们where to use the Aspects. 在一般概念的AOP上,我们可以在任何地方用Aspect,但是Spring对这一规则做了限制,我们只能用在Spring管理的Bean的公共方法中。

    切入点一般来说可以认为和连接点类似 ...

    Tagged as : Java Spring
  6. Spring笔记02-配置Bean

    2.1 构造函数和Setter注入

    之前我们基于注解的配置是这样的:

    @Configuration
    @ComponentScan(basePackages = "lx.spring.core")
    public class AppConfig {
    
        @Autowired
        private DataSource dataSource;
    
        @Autowired @Qualifier("redSox")
        private Team home;
    
        @Autowired @Qualifier("cubs")
        private Team away;
    
        @Bean
        public Game game() {
            BaseballGame game = new BaseballGame(home, away);
            game.setDataSource(dataSource);
            return game;
        }
    }
    

    我们知道如果没有@Qualifier注解,就会报错。但是如果我们把home ...

    Tagged as : Java Spring
  7. Spring笔记01-构建应用

    1.1 一个Spring的简单Java应用

    1.1.1 创建应用

    这里,我们用Gradle创建Spring的应用。

    group 'lx.spring.core'
    version '1.0-SNAPSHOT'
    
    apply plugin: 'java'
    
    sourceCompatibility = 1.8
    
    repositories {
        mavenCentral()
    }
    
    dependencies {
        compile group: 'org.springframework', name: 'spring-context', version: '4.3.2.RELEASE'
        testCompile group: 'org.springframework', name: 'spring-test', version: '4.3.2.RELEASE'
        testCompile group: 'junit ...
    Tagged as : Java Spring
  8. Java8中的并行流

    此笔记是我在阅读《Java8实战》中的一些记录。

    Java8中增加了流(stream)的概念,为数据的处理带来了很大的方便。

    并行流将数据分割成不同的块,并且用不同的线程处理不同的块。

    现在要根据输入n,求从1到n的和,这里我们不使用n*(1+n)/2的方式,而是使用累加。我们分别写出迭代、顺序流、并行流的写法。

    public class ParallelStreams {
        public static long sequentialSum(long n) {
            return Stream.iterate(1L, i->i+1)
                    .limit(n)
                    .reduce(0L, Long::sum);
        }
    
        public static long iterativeSum(long ...
    Tagged as : Java
  9. 使用Spark进行Java Web开发

    1.搭建Spark项目

    使用Idea创建Gradle项目,包名是:io.github.liulixiang.course,Artifactid是course-ideas。 在builder.gradle里添加spark依赖。

    compile "com.sparkjava:spark-core:2.5"
    compile "org.slf4j:slf4j-simple:1.7.21"
    

    然后创建io.github.liulixiang.course.Main类。

    import static spark.Spark.get;
    public class Main {
        public static void main(String[] args) {
            get("/hello", (req, res ...
    Tagged as : Java
  10. Gradle依赖管理

    1. 添加依赖

    指定仓库是maven central

    repositories {
        mavenCentral()
    }
    

    加入我们要使用apache commons中的csv包,首先在网页https://commons.apache.org/proper/commons-csv/ 中找到对应的maven:

    <dependency>
        <groupId>org.apache.commons</groupId>
        <artifactId>commons-csv</artifactId>
        <version>1.3</version>
    </dependency>
    

    上面的是xml格式,我们把它转换成gradle格式:

    dependencies {
        compile group: 'org.apache.commons', name: 'commons-csv', version: '1.3'
        //等价于
        //compile 'org.apache.commons:commons-csv:1.3 ...
    Tagged as : Java Gradle

Page 1 / 3