Skip to content

Commit a7d082c

Browse files
committed
✨ 添加 Lombok 示例
1 parent bc0aa04 commit a7d082c

6 files changed

Lines changed: 261 additions & 0 deletions

File tree

codes/javalib/pom.xml

Lines changed: 87 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,87 @@
1+
<?xml version="1.0"?>
2+
<project xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"
3+
xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
4+
<modelVersion>4.0.0</modelVersion>
5+
6+
7+
<!-- [Part 1] BASIC SETTINGS BEGIN -->
8+
9+
<!-- MAVEN COORDINATE BEGIN -->
10+
<groupId>io.github.dunwu</groupId>
11+
<artifactId>javalib</artifactId>
12+
<version>1.0.0</version>
13+
<packaging>jar</packaging>
14+
<!-- MAVEN COORDINATE END -->
15+
16+
<!-- RELATIONSHIP SETTINGS BEGIN -->
17+
<dependencies>
18+
<!-- bean start -->
19+
<dependency>
20+
<groupId>org.projectlombok</groupId>
21+
<artifactId>lombok</artifactId>
22+
<version>1.16.8</version>
23+
</dependency>
24+
<!-- bean end -->
25+
26+
<!-- log start -->
27+
<dependency>
28+
<groupId>ch.qos.logback</groupId>
29+
<artifactId>logback-core</artifactId>
30+
<version>1.2.3</version>
31+
</dependency>
32+
<dependency>
33+
<groupId>ch.qos.logback</groupId>
34+
<artifactId>logback-classic</artifactId>
35+
<version>1.2.3</version>
36+
</dependency>
37+
<dependency>
38+
<groupId>ch.qos.logback</groupId>
39+
<artifactId>logback-access</artifactId>
40+
<version>1.2.3</version>
41+
</dependency>
42+
<!-- log end -->
43+
44+
<dependency>
45+
<groupId>junit</groupId>
46+
<artifactId>junit</artifactId>
47+
<version>4.12</version>
48+
<scope>test</scope>
49+
</dependency>
50+
</dependencies>
51+
<!-- RELATIONSHIP SETTINGS END -->
52+
53+
<!-- PROPERTIES BEGIN -->
54+
<properties>
55+
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
56+
<java.version>1.8</java.version>
57+
<maven.compiler.source>${java.version}</maven.compiler.source>
58+
<maven.compiler.target>${java.version}</maven.compiler.target>
59+
</properties>
60+
<!-- PROPERTIES END -->
61+
62+
<!-- [Part 1] BASIC SETTINGS END -->
63+
64+
65+
<!-- [Part 2] BUILD SETTINGS BEGIN -->
66+
<build>
67+
<resources>
68+
<resource>
69+
<filtering>true</filtering>
70+
<directory>src/main/resources</directory>
71+
<includes>
72+
<include>logback.xml</include>
73+
</includes>
74+
<!--<targetPath>/abc</targetPath>-->
75+
</resource>
76+
</resources>
77+
</build>
78+
<!-- [Part 2] BUILD SETTINGS END -->
79+
80+
81+
<!-- [Part 3] PROJECT INFO BEGIN -->
82+
<name>${project.artifactId}</name>
83+
<description>Java 库使用示例</description>
84+
<!-- [Part 3] PROJECT INFO END -->
85+
86+
87+
</project>
Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
package io.github.dunwu.javalib.bean;
2+
3+
import java.util.List;
4+
5+
import lombok.Data;
6+
7+
/**
8+
* Lombok 示例
9+
* @see http://jnb.ociweb.com/jnb/jnbJan2010.html
10+
* @author Zhang Peng
11+
*/
12+
@Data(staticConstructor = "of")
13+
public class Company {
14+
private final Person founder;
15+
private String name;
16+
protected List<Person> employees;
17+
}
Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
package io.github.dunwu.javalib.bean;
2+
3+
import lombok.AccessLevel;
4+
import lombok.Getter;
5+
import lombok.Setter;
6+
7+
/**
8+
* Lombok 示例
9+
* @see http://jnb.ociweb.com/jnb/jnbJan2010.html
10+
* @author Zhang Peng
11+
*/
12+
public class Employee {
13+
@Getter
14+
@Setter
15+
private boolean employed = true;
16+
17+
@Setter(AccessLevel.PROTECTED)
18+
private String name;
19+
}
Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
package io.github.dunwu.javalib.bean;
2+
3+
import lombok.Data;
4+
import lombok.ToString;
5+
6+
/**
7+
* Lombok 示例
8+
* @see http://jnb.ociweb.com/jnb/jnbJan2010.html
9+
* @author Zhang Peng
10+
*/
11+
@Data
12+
@ToString(exclude = "age")
13+
public class Person {
14+
private String name;
15+
private Integer age;
16+
private String sex;
17+
}
Lines changed: 46 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,46 @@
1+
<?xml version="1.0" encoding="UTF-8" ?>
2+
3+
<!-- logback中一共有5种有效级别,分别是TRACE、DEBUG、INFO、WARN、ERROR,优先级依次从低到高 -->
4+
<configuration scan="true" scanPeriod="60 seconds" debug="false">
5+
6+
<property name="FILE_NAME" value="javalib"/>
7+
8+
<!-- 将记录日志打印到控制台 -->
9+
<appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
10+
<encoder>
11+
<pattern>%d{HH:mm:ss.SSS} [%thread] [%-5p] %c{36}.%M - %m%n</pattern>
12+
</encoder>
13+
</appender>
14+
15+
<!-- RollingFileAppender begin -->
16+
<appender name="ALL" class="ch.qos.logback.core.rolling.RollingFileAppender">
17+
<!-- 根据时间来制定滚动策略 -->
18+
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
19+
<fileNamePattern>${user.dir}/logs/${FILE_NAME}-all.%d{yyyy-MM-dd}.log</fileNamePattern>
20+
<maxHistory>30</maxHistory>
21+
</rollingPolicy>
22+
23+
<!-- 根据文件大小来制定滚动策略 -->
24+
<triggeringPolicy class="ch.qos.logback.core.rolling.SizeBasedTriggeringPolicy">
25+
<maxFileSize>30MB</maxFileSize>
26+
</triggeringPolicy>
27+
28+
<encoder>
29+
<pattern>%d{HH:mm:ss.SSS} [%thread] [%-5p] %c{36}.%M - %m%n</pattern>
30+
</encoder>
31+
</appender>
32+
33+
<!-- RollingFileAppender end -->
34+
35+
<!-- logger begin -->
36+
<!-- 本项目的日志记录,分级打印 -->
37+
<logger name="io.github.dunwu.javatool" level="TRACE">
38+
<appender-ref ref="ALL"/>
39+
</logger>
40+
41+
<root level="TRACE">
42+
<appender-ref ref="STDOUT"/>
43+
</root>
44+
<!-- logger end -->
45+
46+
</configuration>
Lines changed: 75 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,75 @@
1+
package io.github.dunwu.javalib.bean;
2+
3+
import java.io.ByteArrayOutputStream;
4+
import java.io.IOException;
5+
import java.util.ArrayList;
6+
import java.util.List;
7+
8+
import org.junit.Test;
9+
10+
import lombok.Cleanup;
11+
12+
/**
13+
* Lombok 单元测试
14+
* @see @see http://jnb.ociweb.com/jnb/jnbJan2010.html
15+
* @author Zhang Peng
16+
*/
17+
public class LombokTest {
18+
@Test
19+
public void testGetterAndSetter() {
20+
Employee employee = new Employee();
21+
}
22+
23+
@Test
24+
public void testData() {
25+
Person huangshiren = new Person();
26+
huangshiren.setName("黄世仁");
27+
huangshiren.setAge(30);
28+
huangshiren.setSex("男");
29+
Person yangbailao = new Person();
30+
yangbailao.setName("杨白劳");
31+
yangbailao.setAge(50);
32+
yangbailao.setSex("男");
33+
Person xiaobaicai = new Person();
34+
xiaobaicai.setName("小白菜");
35+
xiaobaicai.setAge(20);
36+
xiaobaicai.setSex("女");
37+
38+
List<Person> personList = new ArrayList<>();
39+
personList.add(yangbailao);
40+
personList.add(xiaobaicai);
41+
42+
Company company = Company.of(huangshiren);
43+
company.setName("黑心农产品公司");
44+
company.setEmployees(personList);
45+
46+
System.out.println("公司名:" + company.getName());
47+
System.out.println("创始人:" + company.getFounder());
48+
System.out.println("员工信息");
49+
company.getEmployees().forEach(person -> {
50+
System.out.println(person.toString());
51+
});
52+
}
53+
54+
@Test
55+
public void testCleanUp() {
56+
try {
57+
@Cleanup
58+
ByteArrayOutputStream baos = new ByteArrayOutputStream();
59+
baos.write(new byte[] { 'Y', 'e', 's' });
60+
System.out.println(baos.toString());
61+
} catch (IOException e) {
62+
e.printStackTrace();
63+
}
64+
}
65+
66+
@Test
67+
public void testToString() {
68+
Person person = new Person();
69+
person.setName("张三");
70+
person.setAge(20);
71+
person.setSex("男");
72+
System.out.println(person.toString());
73+
// output: Person(name=张三, sex=男)
74+
}
75+
}

0 commit comments

Comments
 (0)