CtrlK
BlogDocsLog inGet started
Tessl Logo

tessl/maven-jakarta-annotation--jakarta-annotation-api

Jakarta Annotations defines a collection of annotations representing common semantic concepts that enable a declarative style of programming that applies across a variety of Java technologies.

Pending
Quality

Pending

Does it follow best practices?

Impact

Pending

No eval scenarios have been run

SecuritybySnyk

Pending

The risk profile of this skill

Overview
Eval results
Files

Jakarta Annotations

Jakarta Annotations defines a collection of annotations representing common semantic concepts that enable a declarative style of programming that applies across a variety of Java technologies. This API provides annotations for resource injection, lifecycle callbacks, security annotations, and generated code marking.

Package Information

  • Package Name: jakarta.annotation-api
  • Package Type: maven
  • Group ID: jakarta.annotation
  • Artifact ID: jakarta.annotation-api
  • Language: Java
  • Installation:
    <dependency>
        <groupId>jakarta.annotation</groupId>
        <artifactId>jakarta.annotation-api</artifactId>
        <version>3.0.0</version>
    </dependency>

Core Imports

import jakarta.annotation.*;
import jakarta.annotation.security.*;
import jakarta.annotation.sql.*;

For specific annotations:

import jakarta.annotation.PostConstruct;
import jakarta.annotation.PreDestroy;
import jakarta.annotation.Resource;
import jakarta.annotation.security.RolesAllowed;
import jakarta.annotation.sql.DataSourceDefinition;

Basic Usage

import jakarta.annotation.*;
import jakarta.annotation.security.*;

@RolesAllowed({"admin", "user"})
public class UserService {
    
    @Resource(name = "jdbc/UserDB")
    private DataSource dataSource;
    
    @PostConstruct
    public void initialize() {
        // Initialization logic after dependency injection
        System.out.println("UserService initialized");
    }
    
    @PreDestroy
    public void cleanup() {
        // Cleanup logic before instance destruction
        System.out.println("UserService cleanup");
    }
    
    @RolesAllowed("admin")
    public void deleteUser(String userId) {
        // Admin-only operation
    }
    
    @PermitAll
    public List<User> getUsers() {
        // Public operation
        return userRepository.findAll();
    }
}

Architecture

Jakarta Annotations provides three main functional areas:

  • Core Annotations (jakarta.annotation): Lifecycle management, resource injection, nullability constraints, code generation markers, and priority ordering
  • Security Annotations (jakarta.annotation.security): Declarative authorization and role-based access control for methods and classes
  • SQL Annotations (jakarta.annotation.sql): Database DataSource configuration and JNDI registration

The annotations are designed to work across the Jakarta EE ecosystem, providing consistent behavior in application servers, dependency injection frameworks, and other Jakarta EE-compliant containers.

Capabilities

Core Annotations

Fundamental annotations for lifecycle management, resource injection, nullability, code generation, and priority ordering. These form the foundation for dependency injection and container-managed components.

@PostConstruct
public void methodName() { }

@PreDestroy  
public void methodName() { }

@Resource(name = "resource/name")
private ResourceType resource;

@Generated(value = "com.example.Generator")
public class GeneratedClass { }

@Priority(100)
public class PriorityComponent { }

@Nonnull
public String nonNullMethod(@Nullable String param) { }

Core Annotations

Security Annotations

Declarative security annotations for role-based access control. These annotations enable method-level and class-level authorization without programmatic security checks.

@RolesAllowed({"admin", "user"})
public class SecureService { }

@DenyAll
public void restrictedMethod() { }

@PermitAll  
public void publicMethod() { }

@RunAs("system")
public class SystemService { }

@DeclareRoles({"admin", "user", "guest"})
public class Application { }

Security Annotations

SQL DataSource Configuration

Annotations for defining and configuring database DataSources with JNDI registration. These annotations enable declarative database configuration without external configuration files.

@DataSourceDefinition(
    name = "java:global/MyDataSource",
    className = "com.mysql.cj.jdbc.MysqlDataSource", 
    url = "jdbc:mysql://localhost:3306/mydb",
    user = "user",
    password = "password"
)
public class DatabaseConfig { }

@DataSourceDefinitions({
    @DataSourceDefinition(name = "java:global/DB1", className = "..."),
    @DataSourceDefinition(name = "java:global/DB2", className = "...")
})
public class MultiDatabaseConfig { }

SQL Annotations

Workspace
tessl
Visibility
Public
Created
Last updated
Describes
mavenpkg:maven/jakarta.annotation/jakarta.annotation-api@3.0.x
Publish Source
CLI
Badge
tessl/maven-jakarta-annotation--jakarta-annotation-api badge