Web 应用示例
使用 LCGYL Framework 构建一个完整的 Web 应用。
项目结构
web-app/
├── src/
│ ├── main/
│ │ ├── java/
│ │ │ └── com/example/
│ │ │ ├── Application.java
│ │ │ ├── controller/
│ │ │ ├── service/
│ │ │ ├── repository/
│ │ │ └── model/
│ │ └── resources/
│ │ ├── application.properties
│ │ └── static/
│ └── test/
└── build.gradle主应用类
java
import com.lcgyl.core.Application;
import com.lcgyl.core.annotation.ComponentScan;
@ComponentScan("com.example")
public class WebApplication {
public static void main(String[] args) {
Application app = Application.run(WebApplication.class, args);
// 启动 Web 服务器
app.startWebServer(8080);
}
}Controller 层
java
import com.lcgyl.web.annotation.RestController;
import com.lcgyl.web.annotation.GetMapping;
import com.lcgyl.web.annotation.PostMapping;
@RestController("/api/users")
public class UserController {
private final UserService userService;
@Inject
public UserController(UserService userService) {
this.userService = userService;
}
@GetMapping("/{id}")
public User getUser(@PathVariable Long id) {
return userService.findById(id);
}
@GetMapping
public List<User> listUsers() {
return userService.findAll();
}
@PostMapping
public User createUser(@RequestBody User user) {
return userService.save(user);
}
}Service 层
java
import com.lcgyl.core.annotation.Component;
import com.lcgyl.data.annotation.Transactional;
@Component
public class UserService {
private final UserRepository userRepository;
@Inject
public UserService(UserRepository userRepository) {
this.userRepository = userRepository;
}
public User findById(Long id) {
return userRepository.findById(id)
.orElseThrow(() -> new NotFoundException("用户不存在"));
}
public List<User> findAll() {
return userRepository.findAll();
}
@Transactional
public User save(User user) {
return userRepository.save(user);
}
}Repository 层
java
import com.lcgyl.data.JdbcTemplate;
@Component
public class UserRepository {
private final JdbcTemplate jdbcTemplate;
@Inject
public UserRepository(DataSource dataSource) {
this.jdbcTemplate = new JdbcTemplate(dataSource);
}
public Optional<User> findById(Long id) {
String sql = "SELECT * FROM users WHERE id = ?";
return jdbcTemplate.queryForOptional(sql, User.class, id);
}
public List<User> findAll() {
String sql = "SELECT * FROM users";
return jdbcTemplate.queryForList(sql, User.class);
}
public User save(User user) {
if (user.getId() == null) {
String sql = "INSERT INTO users (name, email) VALUES (?, ?)";
Long id = jdbcTemplate.insert(sql, user.getName(), user.getEmail());
user.setId(id);
} else {
String sql = "UPDATE users SET name = ?, email = ? WHERE id = ?";
jdbcTemplate.update(sql, user.getName(), user.getEmail(), user.getId());
}
return user;
}
}配置文件
properties
# application.properties
# 服务器配置
server.port=8080
server.contextPath=/api
# 数据源配置
datasource.url=jdbc:mysql://localhost:3306/web_app
datasource.username=root
datasource.password=123456
# 日志配置
logging.level=INFO运行应用
bash
# 编译
./gradlew build
# 运行
java -jar build/libs/web-app.jar
# 访问
curl http://localhost:8080/api/users