Example bean class in java

Java Bean Standard, Specification, Properties, Requirements

A Java Bean is a java class that should follow the java bean standards and requirements. If a java class meets the java bean specification, the java class is called as java bean. The java bean has some properties and characteristics.

A JavaBean is a java class which should follow the specification/requirements/standards/properties below

  • Java class should have a public default constructor / no argument constructor.
  • All Java-class member variables should be private and non-static.
  • All the member variables should have public getter and setter methods, that are used to set and get values.
  • Java class is optionally Serializable.

Explanation

The java bean class must have public default constructor. The default constructor is used to create bean object programmatically. The java program dynamically creates an object and assigns a value using the setter methods.

All the member variables must be private and not static, thus the member variables can not be accessed out side of the class even in the inherited class. The only way to access the member variable is to use the Java Bean Getter and Setter methods.

Java beans are referred to as carrier objects. Java beans carry data through several layers of the application. The java bean must be serialised if it is transmitted as data streams to any network or input output system.

Java Bean Example

Student.java

package com.yawintutor; public class Student < private int id; private String name; private boolean active; public int getId() < return id; >public void setId(int id) < this.id = id; >public String getName() < return name; >public void setName(String name) < this.name = name; >public boolean isActive() < return active; >public void setActive(boolean active) < this.active = active; >>

The above example shows Student Class JavaBean which contains three member variables student id, student name and active. Please notice that boolean variables are accessed by prefixing “is” rather than “get”.

Читайте также:  Select sort in python

The main method below shows how to use setter and getter methods to access the java bean.

StudentMain.java

package com.yawintutor; public class StudentMain < public static void main(String[] args) < Student student = new Student(); //setting bean values student.setId(101); student.setName("Karthik"); student.setActive(true); //getting bean value System.out.println("Student Id : "+student.getId()); System.out.println("Student name : "+student.getName()); System.out.println("Student active : "+student.isActive()); >>

Output

Student Id : 101 Student name : Karthik Student active : true

Arrays and JavaBeans

A JavaBean can have arrays and can be accessed using the getter and setter method as shown below. Student java bean class has one or more subjects stored in String Array.

Student.java

package com.yawintutor; public class Student < private int id; private String name; public String[] subjects; public int getId() < return id; >public void setId(int id) < this.id = id; >public String getName() < return name; >public void setName(String name) < this.name = name; >public String[] getSubjects() < return subjects; >public void setSubjects(String[] subjects) < this.subjects = subjects; >>

StudentMain.java

package com.yawintutor; public class StudentMain < public static void main(String[] args) < Student student = new Student(); String[] subjects = < "English", "Science", "Computer" >; // setting bean values student.setId(101); student.setName("Karthik"); student.setSubjects(subjects); // getting bean value System.out.println("Student Id : " + student.getId()); System.out.println("Student name : " + student.getName()); String[] subjectArray = student.getSubjects(); for (int i = 0; i < subjectArray.length; i++) < System.out.println("Student subject " + (i + 1) + " : " + subjectArray[i]); >> >

Output

Student Id : 101 Student name : Karthik Student subject 1 : English Student subject 2 : Science Student subject 3 : Computer

JavaBeans with Collections object

A Java Bean can have Java Collections object. In the example below, a list of subjects is stored in the Student Java Bean class.

Student.java

package com.yawintutor; import java.util.List; public class Student < private int id; private String name; public Listsubjects; public int getId() < return id; >public void setId(int id) < this.id = id; >public String getName() < return name; >public void setName(String name) < this.name = name; >public List getSubjects() < return subjects; >public void setSubjects(List subjects) < this.subjects = subjects; >> 

StudentMain.java

package com.yawintutor; import java.util.ArrayList; import java.util.List; public class StudentMain < public static void main(String[] args) < Student student = new Student(); Listsubjects = new ArrayList(); subjects.add("English"); subjects.add("Science"); subjects.add("Computer"); // setting bean values student.setId(101); student.setName("Karthik"); student.setSubjects(subjects); // getting bean value System.out.println("Student Id : " + student.getId()); System.out.println("Student name : " + student.getName()); List subjectList = student.getSubjects(); for (int i = 0; i < subjectList.size(); i++) < System.out.println("Student subject " + (i + 1) + " : " + subjectList.get(i)); >> > 

Output

Student Id : 101 Student name : Karthik Student subject 1 : English Student subject 2 : Science Student subject 3 : Computer

Nested JavaBeans

Nested JavaBean is a Java Bean, containing one or more Java Beans. There are two javabeans called Student and Subject. The Student class has one or more Subject Java Beans.

Читайте также:  Запрет выделения картинок css

Subject.java

package com.yawintutor; public class Subject < private int code; private String name; public int getCode() < return code; >public void setCode(int code) < this.code = code; >public String getName() < return name; >public void setName(String name) < this.name = name; >> 

Student.java

package com.yawintutor; import java.util.List; public class Student < private int id; private String name; public Listsubjects; public int getId() < return id; >public void setId(int id) < this.id = id; >public String getName() < return name; >public void setName(String name) < this.name = name; >public List getSubjects() < return subjects; >public void setSubjects(List subjects) < this.subjects = subjects; >> 

StudentMain.java

package com.yawintutor; import java.util.ArrayList; import java.util.List; public class StudentMain < public static void main(String[] args) < Student student = new Student(); Listsubjects = new ArrayList(); Subject subject1 = new Subject(); subject1.setCode(210); subject1.setName("English"); subjects.add(subject1); Subject subject2 = new Subject(); subject2.setCode(220); subject2.setName("Science"); subjects.add(subject2); Subject subject3 = new Subject(); subject3.setCode(230); subject3.setName("Computer"); subjects.add(subject3); // setting bean values student.setId(101); student.setName("Karthik"); student.setSubjects(subjects); // getting bean value System.out.println("Student Id : " + student.getId()); System.out.println("Student name : " + student.getName()); List subjectList = student.getSubjects(); for (int i = 0; i < subjectList.size(); i++) < Subject subject = subjectList.get(i); System.out.println("Student subject " + (i + 1) + " : " + subject.getCode() + " : " + subject.getName()); >> > 

Output

Student Id : 101 Student name : Karthik Student subject 1 : 210 : English Student subject 2 : 220 : Science Student subject 3 : 230 : Computer

Источник

@Bean

@Bean – это аннотация уровня метода и прямой аналог элемента на XML. Аннотация поддерживает некоторые атрибуты, предлагаемые , такие как:

Вы можете использовать аннотацию @Bean в классе с аннотацией @Configuration или в классе с аннотацией @Component .

Объявление бина

Чтобы объявить бин, можно аннотировать метод с помощью @Bean . Этот метод используется для регистрации определения бина в ApplicationContext того типа, который задан в качестве возвращаемого значения метода. По умолчанию имя бина совпадает с именем метода. В следующем примере показано объявление метода с аннотацией @Bean :

@Configuration public class AppConfig < @Bean public TransferServiceImpl transferService() < return new TransferServiceImpl(); >>
@Configuration class AppConfig

Предшествующая конфигурация в точности эквивалентна следующей на основе XML в Spring:

Читайте также:  Java net socket address

Оба объявления делают бин с именем transferService доступным в ApplicationContext , привязанном к экземпляру объекта типа TransferServiceImpl , как показано на следующем текстовом изображении:

transferService -> com.acme.TransferServiceImpl

Также можно использовать методы по умолчанию для определения бинов. Это позволяет создавать конфигурации бинов путем реализации интерфейсов с определениями бинов в методах по умолчанию.

public interface BaseConfig < @Bean default TransferServiceImpl transferService() < return new TransferServiceImpl(); >> @Configuration public class AppConfig implements BaseConfig

Можно также объявить свой метод, аннотированный @Bean , с помощью возвращаемого типа интерфейса (или базового класса), как показано в следующем примере:

@Configuration public class AppConfig < @Bean public TransferService transferService() < return new TransferServiceImpl(); >>
@Configuration class AppConfig < @Bean fun transferService(): TransferService < return TransferServiceImpl() >>

Однако это ограничивает видимость для прогнозирования расширенного типа указанным типом интерфейса (TransferService ). Затем, когда полный тип (TransferServiceImpl ) единожды распознается контейнером, создается экземпляр затронутого бина-одиночки. Экземпляры бинов-одиночек без отложенной инициализации создаются в соответствии с порядком их объявления, поэтому вы можете заметить разные результаты согласования по типам в зависимости от того, когда другой компонент пытается выполнить согласование по необъявленному типу (например, @Autowired TransferServiceImpl , который разрешается только после создания экземпляра бина transferService ).

Если вы постоянно ссылаетесь на свои типы по объявленному интерфейсу службы, то ваши возвращаемые типы, помеченные аннотацией @Bean , могут без проблем следовать этому проектному решению. Однако для компонентов, реализующих несколько интерфейсов, или для компонентов, на которые потенциально можно ссылаться по их типу реализации, безопаснее объявить максимально конкретный возвращаемый тип (по крайней мере, настолько конкретный, насколько этого требуют точки внедрения, ссылающиеся на ваш бин).

Зависимости бинов

Метод, аннотированный @Bean , может иметь произвольное количество параметров, которые описывают зависимости, необходимые для создания этого бина. Например, если нашему TransferService требуется AccountRepository , мы можем осуществить эту зависимость с помощью параметра метода, как показано в следующем примере:

@Configuration public class AppConfig < @Bean public TransferService transferService(AccountRepository accountRepository) < return new TransferServiceImpl(accountRepository); >>

Источник

Оцените статью