Присоединяйтесь к нашему каналу и погрузитесь в мир для Java-разработчика
Связь: @devmangx
РКН: https://clck.ru/3H4WUg
Post #1370
3.44K
JA @java_iibrary
Showing posts older than #1371 · Back to latest

void main() {
var after = new Final(this::before);
IO.println("After value=" + after.value);
}
private void before(Final before){
IO.println("Before value=" + before.value);
}
class Final {
final int value;
Final(Consumer<? super Final> listener) {
listener.accept(this);
value = 123;
}
}Before value=0
After value=123
this. Код в начале конструктора не должен использовать this, кроме как для инициализации полей, у которых нет своих инициализаторов.
this, пока объект не готов
this. Например, следующий код выведет Hello, World!:private Runnable runnable = () -> {
System.out.println(this);
};
@Override
public String toString() {
return "Hello, World!";
}
void main() {
runnable.run();
}InnerClassThis$1@568bf312:private Runnable runnable = new Runnable() {
@Override public void run() {
System.out.println(this);
}
};
@Override
public String toString() {
return "Hello, World!";
}
void main(String[] args) {
runnable.run();
}this — она использует this из внешнего контекста. Это чётко описано в спецификации Java:Значение this в теле лямбды — то же самое, что и this во внешнем контексте.


@OneToMany и @ManyToOne помогают определить связи между сущностями в базе данных@OneToMany(mappedBy = "user")
private List<Order> orders;
@ManyToOne
@JoinColumn(name = "user_id")
private User user;



1. Authentication Manager
> Authentication Manager отвечает за обработку запросов на аутентификацию. Он делегирует процесс проверки различным провайдерам, которые можно настроить для поддержки разных способов аутентификации (например, логин/пароль, OAuth, LDAP).
2. Security Filter Chain
> Security Filter Chain — это набор фильтров, перехватывающих HTTP-запросы. Каждый фильтр выполняет свою задачу, например, проверку аутентификации, контроль доступа или управление сессией. Фильтры выполняются в определённой последовательности, обеспечивая многоуровневую защиту.
3. UserDetailsService
> Интерфейс UserDetailsService используется для загрузки пользовательских данных, необходимых для процессов аутентификации и авторизации. Разработчики могут реализовать его, чтобы подключаться к внешним источникам данных, таким как базы данных или сторонние сервисы.
4. GrantedAuthority
> GrantedAuthority представляет собой полномочие, предоставляемое объекту Authentication. Обычно используется для определения ролей или разрешений пользователя в приложении, обеспечивая тонкую настройку доступа.
5. Security Context
> Security Context хранит информацию о текущем пользователе — его данные аутентификации и полномочия. Эта информация размещается в потоко-безопасной переменной и доступна на протяжении всей сессии пользователя.

java.lang.ClassCircularityError в Javajava.lang.ClassCircularityError, если при загрузке классов обнаруживает циклическую зависимость, например:class A extends B {}
class B extends A {}// A.java
public class A extends B {}
class B {}
// B.java
public class B extends A {}
class A {}
// Run.java
void main() {
new A();
}
mkdir step{1..3}
javac -d step1 A.java
javac -d step2 B.java
cp step1/A.class step3/
cp step2/B.class step3/
rm A.java B.java
java --enable-preview -cp step3/ Run.javaException in thread "main" java.lang.ClassCircularityError: A
at java.base/java.lang.ClassLoader.defineClass1(Native Method)
at java.base/java.lang.ClassLoader.defineClass(ClassLoader.java:962)
...
at Run.main(Run.java:2)
DatabaseConnection conn = new DatabaseConnection();
class DatabaseConnection {
private static DatabaseConnection instance;
private DatabaseConnection() {
System.out.println("Connecting to database...");
}
public static synchronized DatabaseConnection getInstance() {
if (instance == null) {
instance = new DatabaseConnection();
}
return instance;
}
public void query(String sql) {
System.out.println("Running query: " + sql);
}
}
@Override
public final String toString() {
return "Annotations are just modifiers";
}
public @Override final String toString() ...public final @Override String toString() ...


try не скомпилируетсяexports opens requires uses yield
module permits sealed var
non-sealed provides to when
open record transitive with
