JavaBeans가 사용되는 장소?
JavaBean이란 무엇이며 왜 필요한가요?클래스나 인터페이스 구조로 모든 앱을 만들 수 있기 때문에?왜 콩이 필요하죠?그리고 수업이나 인터페이스 대신 콩이 꼭 필요한 예를 몇 가지 들어주세요.
아래 문맥에서 콩의 중요성에 대해 설명해주세요.
- Wep 앱
- 스탠드아론 어플리케이션
실제 데이터를 나타내는 경우가 많습니다.다음은 자바인의 간단한 예입니다.
public class User implements java.io.Serializable {
// Properties.
private Long id;
private String name;
private Date birthdate;
// Getters.
public Long getId() { return id; }
public String getName() { return name; }
public Date getBirthdate() { return birthdate; }
// Setters.
public void setId(Long id) { this.id = id; }
public void setName(String name) { this.name = name; }
public void setBirthdate(Date birthdate) { this.birthdate = birthdate; }
// Important java.lang.Object overrides.
public boolean equals(Object other) {
return (other instanceof User) && (id != null) ? id.equals(((User) other).id) : (other == this);
}
public int hashCode() {
return (id != null) ? (getClass().hashCode() + id.hashCode()) : super.hashCode();
}
public String toString() {
return String.format("User[id=%d,name=%s,birthdate=%d]", id, name, birthdate);
}
}
실장Serializable
그 자체는 필수가 아니지만 Java 메모리 외부(하드디스크 또는 네트워크 등)에서 Java를 지속하거나 전송할 수 있는 경우 매우 유용합니다.
예를 들어 DAO 클래스에서는 DAO 클래스를 사용하여 사용자 목록을 만들고 이 목록을 사용하여 데이터 저장에 사용할 수 있습니다.user
데이터베이스의 테이블:
List<User> users = new ArrayList<User>();
while (resultSet.next()) {
User user = new User();
user.setId(resultSet.getLong("id"));
user.setName(resultSet.getString("name"));
user.setBirthdate(resultSet.getDate("birthdate"));
users.add(user);
}
return users;
예를 들어 Servlet 클래스에서는 이 클래스를 사용하여 데이터베이스에서 UI로 데이터를 전송할 수 있습니다.
protected void doGet(HttpServletRequest request, HttpServletResponse response) {
List<User> users = userDAO.list();
request.setAttribute("users", users);
request.getRequestDispatcher("users.jsp").forward(request, response);
}
예를 들어 JSP 페이지에서는 Javaabean 표기법에 따라 EL로 액세스하여 데이터를 표시할 수 있습니다.
<table>
<tr>
<th>ID</th>
<th>Name</th>
<th>Birthdate</th>
</tr>
<c:forEach items="${users}" var="user">
<tr>
<td>${user.id}</td>
<td><c:out value="${user.name}" /></td>
<td><fmt:formatDate value="${user.birthdate}" pattern="yyyy-MM-dd" /></td>
</tr>
</c:forEach>
</table>
그게 말이 되는 건가요?데이터 저장, 전송 및 액세스에 어디서나 사용할 수 있는 일종의 규칙입니다.
다음 항목도 참조하십시오.
콩 자체
JavaBean은 어디에나 있는 관례이며, 약간 큰 라이브러리는 거의 모두 이러한 규약을 사용하여 작업을 자동화합니다.JavaBeans를 사용해야 하는 이유는 다음과 같습니다.
- 잘 연재되고 있어요.
- 반사를 사용하여 인스턴스화할 수 있습니다.
- 그렇지 않으면 반사를 사용하여 매우 쉽게 제어할 수 있습니다.
- 비즈니스 코드에서 실제 데이터를 캡슐화하는 데 적합합니다.
- 일반적인 규약이란 누구나 콩을 사용할 수 있다는 것을 의미하며, 다른 모든 사람의 콩은 어떤 종류의 설명서나 매뉴얼 없이도 쉽고 일관된 방식으로 사용할 수 있습니다.
- POJO에 매우 가깝기 때문에 실제로 시스템의 개별 부품 간의 상호 운용성이 더욱 향상됩니다.
물론 엔터프라이즈 JavaBeans도 있습니다.이것은 전혀 다른 문제이며, 플레인 JavaBeans와 혼재해서는 안 됩니다.EJB:s는 이름이 비슷하고 헷갈리기 쉽기 때문에 말씀드리겠습니다.
웹 어플리케이션의 콩
웹 앱 컨텍스트에서 "일반적인" JavaBeans를 생각한다면 발에 신발을 신는 것보다 더 말이 된다.Servlet 사양에서는 세션이 시리얼화 가능해야 하므로 세션에 데이터를 시리얼화 가능한 것으로 저장해야 합니다.그러면 빈으로 만드는 것이 어떨까요?SomeBusinessDataBean을 세션에 넣으면 쉽게 사용할 수 있고 사양에 적합하며 편리합니다.
또한 JavaBeans는 애플리케이션의 일부를 완전히 분리하는 데 도움이 되기 때문에 애플리케이션 주변의 데이터 전송도 간단합니다.JavaBeans는 대기업 내의 부서로서 어플리케이션의 레터 및 다양한 서브시스템이라고 생각하십시오.부서에서는 많은 데이터를 부서로 보냅니다.B, 부서B는 데이터의 출처를 정확히 알 수 없거나 심지어 신경도 쓰지 않습니다.편지를 열어 읽고 데이터를 기반으로 작업을 수행할 수 있습니다.
스탠드아론 어플리케이션에서의 콩
실제로 위의 내용은 스탠드아론 어플리케이션에도 적용됩니다.단, 스탠드아론 어플리케이션에는 스테이트 풀 UI가 있는 반면 웹 어플리케이션에는 스테이트 풀 UI만 시뮬레이트하는 스테이트 풀 UI가 있기 때문에 UI를 조금 더 복잡하게 만들 수 있습니다.이 차이 때문에 스탠드아론 어플리케이션에서는 혼란을 일으키기 쉽지만 이는 전혀 다른 토픽의 가치가 있으며 JavaBeans와는 전혀 관련이 없습니다.
사실 콩은 별것 아니다.클래스가 "빈"이 되기 위해 필요한 것은 다음과 같습니다.
- 논거가 없는 대중을 거느리다
- 시리얼화 가능(직접 또는 슈퍼 클래스 중 하나를 통해 시리얼화 가능 인터페이스를 구현합니다).
특정 상황에서 필드를 검색할 수 있도록 하려면(예를 들어 IDE의 비주얼 에디터에서 해당 클래스를 끌어서 놓을 수 있는 개체로 만드는 등) 특정 명명 규칙을 준수하는 클래스의 속성에 getter 및 setter를 추가할 수 있습니다.
Sun에서 직접 자세한 내용을 보실 수 있습니다.
Java Bean은 다양한 환경에서 재사용할 수 있도록 설계된 소프트웨어 구성 요소입니다.콩의 능력에는 제한이 없습니다.문서 철자 검사와 같은 간단한 기능을 수행하거나 주식 포트폴리오의 성과를 예측하는 복잡한 기능을 수행할 수 있습니다.Bean은 최종 사용자에게 표시될 수 있습니다.예를 들어 그래피컬 사용자 인터페이스의 버튼을 들 수 있습니다.Bean은 사용자에게 보이지 않을 수도 있습니다.멀티미디어 정보의 스트림을 실시간으로 디코딩하는 소프트웨어가 이러한 유형의 구성 요소의 한 예입니다.마지막으로 Bean은 사용자의 워크스테이션에서 자율적으로 동작하거나 분산된 다른 컴포넌트 세트와 연계하여 동작하도록 설계될 수 있습니다.데이터 포인트 집합에서 원형 차트를 생성하는 소프트웨어는 로컬에서 실행할 수 있는 Bean의 예입니다.그러나 주식 또는 상품 거래소에서 실시간으로 가격 정보를 제공하는 Bean은 데이터를 얻기 위해 다른 분산 소프트웨어와 협력해야 합니다.
Java Bean으로 사용할 수 있도록 소프트웨어 개발자가 클래스에 대해 구체적으로 어떤 변경을 가해야 하는지 잠시 살펴보겠습니다.그러나 자바 디자이너들의 목표 중 하나는 이 기술을 사용하기 쉽게 만드는 것이었다.따라서 코드 변경은 최소입니다.
자바빈의 장점
소프트웨어 컴포넌트 아키텍처는 소프트웨어 구성 요소를 처리하기 위한 표준 메커니즘을 제공합니다.다음 목록에는 Java 기술이 컴포넌트 개발자에게 제공하는 특정 이점이 나열되어 있습니다.
- Bean은 Java의 "한 번 쓰기, 어디서나 실행" 패러다임의 모든 이점을 제공합니다.
- 응용 프로그램빌더 도구에 노출되는 Bean의 속성, 이벤트 및 메서드를 제어할 수 있습니다.
- Bean은 다른 지역에서 올바르게 작동하도록 설계되어 글로벌 시장에서 유용합니다.
- 보조 소프트웨어를 제공하여 Bean을 구성할 수 있습니다.이 소프트웨어는 해당 컴포넌트의 디자인 타임 파라미터를 설정할 때만 필요합니다.런타임 환경에 포함할 필요가 없습니다.
- Bean의 구성 설정은 영구 스토리지에 저장했다가 나중에 복원할 수 있습니다.
- Bean은 다른 개체로부터 이벤트를 수신하도록 등록하고 다른 개체로 전송되는 이벤트를 생성할 수 있습니다.
다음은 자바인의 간단한 예입니다.
public class MyBean implements java.io.Serializable
{
protected int theValue;
public MyBean()
{
}
public void setMyValue(int newValue)
{
theValue = newValue;
}
public int getMyValue()
{
return theValue;
}
}
이것은 MyBean이라는 이름의 실제 Bean으로, JavaBeans 지속성 메커니즘에 의해 자동으로 저장 및 복원되는 상태(변수 theValue)를 가지고 있으며, MyValue라는 이름의 속성을 가지고 있어 비주얼 프로그래밍 환경에서 사용할 수 있습니다.이 Bean에는 시각적인 표현이 없지만 JavaBean 컴포넌트의 요건은 아닙니다.
언급URL : https://stackoverflow.com/questions/1727603/places-where-javabeans-are-used
'programing' 카테고리의 다른 글
조건이 충족되는 경우에만 슬롯의 폴백 콘텐츠 사용 (0) | 2022.08.09 |
---|---|
strdup() - C에서 무엇을 합니까? (0) | 2022.08.09 |
javac 옵션: 지정된 디렉토리 아래에 있는 모든 Java 파일을 재귀적으로 컴파일합니다. (0) | 2022.08.09 |
webpack 2 및 vue-cli를 사용하여 로컬 글꼴로 로드 (0) | 2022.08.09 |
Java에서 Integer와 int의 차이점은 무엇입니까? (0) | 2022.08.09 |