提交 02dada7b 编写于 作者: W wizardforcel

2020-06-22 15:33:37

上级 3d459e46
......@@ -1017,7 +1017,7 @@ public void insertBooksForAuthor(String author, List<String> titles) {
```
`@Transaction`使`insertBooksForAuthor()`在事务内运行。 因此,要么插入所有书籍,要么不插入任何书籍。
`@Transaction`使`insertBooksForAuthor()`在事务内运行。 因此,要么插入所有书籍,要么不插入任何书籍。
`JDBIEx9.java`
......
......@@ -534,7 +534,7 @@ public class Car implements Serializable {
```
该类用`@Entity`注解装饰; `@Table`指定被注释实体的主表。
该类用`@Entity`注解装饰; `@Table`指定被注释实体的主表。
```java
@Id
......@@ -543,6 +543,6 @@ public Long getId() {
```
`@Id`指定实体的主键,`@GeneratedValue`提供规范主键值的生成策略。
`@Id`指定实体的主键,`@GeneratedValue`提供规范主键值的生成策略。
在本教程中,我们介绍了 Hibernate ORM。 我们已经使用了 Derby 数据库。 ZetCode 具有以下相关教程: [EclipseLink 教程](/java/eclipselink/)[MySQL Java 教程](/db/mysqljava/)[JDBC 模板教程](db/jdbctemplate/)[Apache Derby 教程](/db/apachederbytutorial/)
\ No newline at end of file
......@@ -1024,7 +1024,7 @@ public BigValueException(string msg) : base(msg) {}
```
在构造函数内部,我们称为父级的构造函数。 我们将消息传递给父
在构造函数内部,我们称为父级的构造函数。 我们将消息传递给父
```cs
if (x > LIMIT)
......
......@@ -928,7 +928,7 @@ End Sub
```
在构造函数内部,我们称为父级的构造函数。 我们将消息传递给父
在构造函数内部,我们称为父级的构造函数。 我们将消息传递给父
```vb
If (x > LIMIT) Then
......
......@@ -774,7 +774,7 @@ public class ShootingMissilesEx extends JFrame {
```
最后,这是主要课程
最后,这是主要
![Shooting missiles](img/18c4a40e9287a3753b29e323555effe9.jpg)
......
......@@ -779,7 +779,7 @@ public class CollisionEx extends JFrame {
```
最后,这是主要课程
最后,这是主要
![Shooting aliens](img/63963f143c0334a096538fa962ff3cc1.jpg)
......
......@@ -78,7 +78,7 @@ wxPython API 是一组方法和对象。 小部件是 GUI 应用的基本构建
### 继承
wxPython 中的小部件之间有特定的关系。 此关系是通过继承开发的。 继承是面向对象编程的关键部分。 小部件形成层次结构。 小部件可以继承其他小部件的功能。 现有的类称为基类,父或祖先。 继承的小部件我们称为派生小部件,子小部件或后代。
wxPython 中的小部件之间有特定的关系。 此关系是通过继承开发的。 继承是面向对象编程的关键部分。 小部件形成层次结构。 小部件可以继承其他小部件的功能。 现有的类称为基类,父或祖先。 继承的小部件我们称为派生小部件,子小部件或后代。
![Inheritance diagram](img/582a6d80f78f4af134c37c1d679fe86c.jpg)
......
......@@ -61,7 +61,7 @@ frame.Show()
```
在这里,我们创建一个`wx.Frame`对象。 `wx.Frame`小部件是重要的容器小部件。 稍后我们将详细分析此小部件。 `wx.Frame`小部件是其他小部件的父级小部件。 它本身没有父。 如果为父参数指定`None`,则表明我们的小部件没有父项。 它是小部件层次结构中的顶部小部件。 创建`wx.Frame`小部件后,必须调用`Show()`方法才能将其实际显示在屏幕上。
在这里,我们创建一个`wx.Frame`对象。 `wx.Frame`小部件是重要的容器小部件。 稍后我们将详细分析此小部件。 `wx.Frame`小部件是其他小部件的父级小部件。 它本身没有父。 如果为父参数指定`None`,则表明我们的小部件没有父项。 它是小部件层次结构中的顶部小部件。 创建`wx.Frame`小部件后,必须调用`Show()`方法才能将其实际显示在屏幕上。
```py
app.MainLoop()
......
......@@ -503,7 +503,7 @@ public class Nibbles {
```
本课程中,我们设置了半字节游戏。
这个类中,我们设置了贪食蛇游戏。
```java
int borW = shell.getSize().x - shell.getClientArea().width;
......
......@@ -258,7 +258,7 @@ halign.add(hbox);
```
水平框将添加到路线小部件。 对齐小部件将使按钮向右对齐。 我们必须记住,对齐容器仅包含一个子窗口小部件。 这就是为什么我们必须使用盒子。
水平框将添加到对齐小部件。 对齐小部件将使按钮向右对齐。 我们必须记住,对齐容器仅包含一个子窗口小部件。 这就是为什么我们必须使用盒子。
```java
vbox.packStart(halign, false, false, 3);
......
......@@ -427,7 +427,7 @@ public class GNibbles extends Window {
```
本课程中,我们设置了半字节游戏。 注意,我们从板上获得了计时器对象。 这是执行干净的退出。
这个类中,我们设置了贪食蛇游戏。 注意,我们从板上获得了计时器对象。 这是执行干净的退出。
![Nibbles](img/57db65522728ac2974d526684831d9e1.jpg)
......
......@@ -304,7 +304,7 @@ QPushButton(string text, QWidget parent = None)
```
`text`参数是将在按钮上显示的文本。 `parent`是一个小部件,我们在其上放置了按钮。 在我们的情况下,它将是`QWidget`。 应用的小部件形成层次结构。 在此层次结构中,大多数小部件都有其父级。 没有父的小部件是顶层窗口。
`text`参数是将在按钮上显示的文本。 `parent`是一个小部件,我们在其上放置了按钮。 在我们的情况下,它将是`QWidget`。 应用的小部件形成层次结构。 在此层次结构中,大多数小部件都有其父级。 没有父的小部件是顶层窗口。
`quitbutton.py`
......
......@@ -424,7 +424,7 @@ public class Nibbles extends QMainWindow {
```
本课程中,我们设置了半字节游戏。
这个类中,我们设置了贪食蛇游戏。
![Nibbles](img/38dfabbb54cf4bd80685b7fa00729df4.jpg)
......
......@@ -479,7 +479,7 @@ Gtk.main
```
本课程中,我们设置了半字节游戏。
这个类中,我们设置了贪食蛇游戏。
```rb
def on_key_down widget, event
......
......@@ -478,7 +478,7 @@ End Class
```
本课程中,我们设置了半字节游戏。
这个类中,我们设置了贪食蛇游戏。
```vb
Protected Overrides Function OnKeyPressEvent(ByVal e As Gdk.EventKey) As Boolean
......@@ -488,7 +488,7 @@ End Function
```
本课程中,我们捕获按键事件。 并将处理委托给板类的`OnKeyDown`方法。
这个类中,我们捕获按键事件。 并将处理委托给板类的`OnKeyDown`方法。
![Nibbles](img/4d4f26dc144b79ca59058907f50bf63d.jpg)
......
......@@ -109,7 +109,7 @@ w.add(fixed);
## 按钮
在此代码示例中,我们将使用垂直框,水平框和路线小部件。 水平框将小部件排列为一行。 同样,垂直框将其小部件放在一列中。 `Alignment`容器控制其子窗口小部件的对齐方式和大小。
在此代码示例中,我们将使用垂直框,水平框和对齐小部件。 水平框将小部件排列为一行。 同样,垂直框将其小部件放在一列中。 `Alignment`容器控制其子窗口小部件的对齐方式和大小。
```php
<?php
......
......@@ -507,7 +507,7 @@ public function on_key_down($sender, $event) {
```
本课程中,我们捕获按键事件。 并将处理委托给板类的`on_key_down()`方法。
这个类中,我们捕获按键事件。 并将处理委托给板类的`on_key_down()`方法。
![Nibbles](img/cc9837b492e7cf6b21bf0f0003fbd64d.jpg)
......
......@@ -444,7 +444,7 @@ public class QyotoApp : QMainWindow
```
本课程中,我们设置了半字节游戏。
这个类中,我们设置了贪食蛇游戏。
![Nibbles](img/07938cc93a43199f427253e15c28e70a.jpg)
......
......@@ -452,7 +452,7 @@ End Class
```
本课程中,我们设置了半字节游戏。
这个类中,我们设置了贪食蛇游戏。
![Nibbles](img/532d4d18c02dbb62c8bda2ee974ee1fb.jpg)
......
......@@ -391,7 +391,7 @@ if __name__ == '__main__':
```
本课程中,我们设置了半字节游戏。
这个类中,我们设置了贪食蛇游戏。
![Nibbles](img/6cbd152194890384d5ac4820b904749e.jpg)
......
......@@ -483,7 +483,7 @@ end
```
本课程中,我们设置了半字节游戏。
这个类中,我们设置了贪食蛇游戏。
![Nibbles](img/2d4939f71a10abd7514734adeb54f691.jpg)
......
......@@ -71,7 +71,7 @@ Public Class WinVBApp
```
在 Winforms 中,任何窗口或对话框都是窗体。 该控件是一个基本容器,其目的是显示其他子控件。 我们的课程继承于一种形式。 这样,它本身就成为一种形式。
在 Winforms 中,任何窗口或对话框都是窗体。 该控件是一个基本容器,其目的是显示其他子控件。 我们的继承于一种形式。 这样,它本身就成为一种形式。
```vb
Public Sub New
......
......@@ -112,7 +112,7 @@ w.add(fixed);
## 按钮
在此代码示例中,我们将使用垂直框,水平框和路线小部件。 水平框将小部件排列为一行。 同样,垂直框将其小部件放在一列中。 `Alignment`容器控制其子窗口小部件的对齐方式和大小。
在此代码示例中,我们将使用垂直框,水平框和对齐小部件。 水平框将小部件排列为一行。 同样,垂直框将其小部件放在一列中。 `Alignment`容器控制其子窗口小部件的对齐方式和大小。
```js
#!/usr/bin/seed
......
......@@ -12,7 +12,7 @@
`JCheckBox`是带有标签的框,该标签具有两种状态:开和关。 如果选中此复选框,则在复选框中用勾号表示。 复选框可用于在启动时显示或隐藏启动屏幕,切换工具栏的可见性等。
通过`JCheckBox`可以使用`ActionListener``ItemListener`。 通常使用后一种选项。 `ItemListener`是用于接收项目事件的界面。 对处理项目事件感兴趣的类,例如观察者,实现此接口。 使用组件的`addItemListener()`方法向组件注册观察者对象。 发生项目选择事件时,将调用观察者的`itemStateChanged()`方法。
通过`JCheckBox`可以使用`ActionListener``ItemListener`。 通常使用后一种选项。 `ItemListener`是用于接收项目事件的接口。 对处理项目事件感兴趣的类,例如观察者,实现此接口。 使用组件的`addItemListener()`方法向组件注册观察者对象。 发生项目选择事件时,将调用观察者的`itemStateChanged()`方法。
`CheckBoxEx.java`
......
......@@ -602,7 +602,7 @@ public class DragGesture extends JFrame implements
```
`DragGesture`实现两个接口。 `DragGestureListener`监听拖动手势。 `Transferable`处理用于传输操作的数据。 在该示例中,我们将不会传输任何数据; 我们仅演示拖动手势。 `Transferable`界面的三种必要方法未实现。
`DragGesture`实现两个接口。 `DragGestureListener`监听拖动手势。 `Transferable`处理用于传输操作的数据。 在该示例中,我们将不会传输任何数据; 我们仅演示拖动手势。 `Transferable`接口的三种必要方法未实现。
```java
var ds = new DragSource();
......
......@@ -33,7 +33,7 @@ HWND CreateWindowW(LPCWSTR lpClassName, LPCWSTR lpWindowName,
```
`lpClassName`唯一标识窗口。 它是我们注册窗口的名称。 `lpWindowName`是窗口名称。 它的效果取决于上下文-它可以是父窗口中的窗口标题,也可以是子窗口中的标签(如按钮或静态文本)。 可以使用多种样式创建 Windows。 为此,我们有`dwStyle`参数。 `x``y`指定窗口的初始水平和垂直位置。 `nWidth``nHeight`指定窗口的宽度和高度。 `hWndParent`是父窗口的句柄。 对于没有父的窗口,我们使用`NULL`。 对于父窗口,`hMenu`是菜单的可选句柄,对于子窗口,`hMenu`是控件标识符。 `hInstance`是程序实例的句柄。 `lpParam`是最后一个参数,它是在`WM_CREATE`消息期间传递到窗口的可选值。 `CreateWindowW()`函数将句柄返回到新创建的窗口。
`lpClassName`唯一标识窗口。 它是我们注册窗口的名称。 `lpWindowName`是窗口名称。 它的效果取决于上下文-它可以是父窗口中的窗口标题,也可以是子窗口中的标签(如按钮或静态文本)。 可以使用多种样式创建 Windows。 为此,我们有`dwStyle`参数。 `x``y`指定窗口的初始水平和垂直位置。 `nWidth``nHeight`指定窗口的宽度和高度。 `hWndParent`是父窗口的句柄。 对于没有父的窗口,我们使用`NULL`。 对于父窗口,`hMenu`是菜单的可选句柄,对于子窗口,`hMenu`是控件标识符。 `hInstance`是程序实例的句柄。 `lpParam`是最后一个参数,它是在`WM_CREATE`消息期间传递到窗口的可选值。 `CreateWindowW()`函数将句柄返回到新创建的窗口。
## 消息内容
......
......@@ -1015,7 +1015,7 @@ public String toString() {
```
创建的每个类都从基`Object`继承。 `toString()`方法属于此对象类。 `@Override`通知编译器该元素旨在替代超类中声明的元素。 然后,编译器将检查我们是否未创建任何错误。
创建的每个类都从基`Object`继承。 `toString()`方法属于此对象类。 `@Override`通知编译器该元素旨在替代超类中声明的元素。 然后,编译器将检查我们是否未创建任何错误。
```java
Being b = new Being();
......
......@@ -198,7 +198,7 @@ public void doInform() {
```
该类提供了`doInform()`方法的实现。 `@Override`告诉编译器我们正在重写方法。
该类提供了`doInform()`方法的实现。 `@Override`告诉编译器我们正在重写方法。
Java 不允许直接从多个类中继承。 它允许实现多个接口。 下一个示例显示了一个类如何实现多个接口。
......
......@@ -251,7 +251,7 @@ public class BookStore {
```
我们用`@XmlRootElement`定义根元素。
我们用`@XmlRootElement`定义根元素。
```java
// XmLElementWrapper generates a wrapper element around XML representation
......@@ -262,7 +262,7 @@ private ArrayList<Book> bookList;
```
`@XmlElementWrapper``book`元素周围定义了包装元素。 `@XmlElement`注解定义包装器内的 XML 元素的名称。
`@XmlElementWrapper``book`元素周围定义了包装元素。 `@XmlElement`注解定义包装器内的 XML 元素的名称。
`JavaWriteXmlJaxbEx.java`
......
......@@ -302,7 +302,7 @@ public class Car implements Serializable {
```
实体 bean 用`@Entity`修饰。 该实体映射到`Cars`表。
实体 bean 用`@Entity`修饰。 该实体映射到`Cars`表。
```java
@Id
......@@ -416,7 +416,7 @@ private EntityManager em;
```
容器使用`persistence.xml`中的信息创建`EntityManager``@PersistenceContext`将实体管理器注入到 Bean 中。 管理器已映射到`carpu`持久性单元。 实体管理器用于通过持久性上下文与数据进行交互。
容器使用`persistence.xml`中的信息创建`EntityManager``@PersistenceContext`将实体管理器注入到 Bean 中。 管理器已映射到`carpu`持久性单元。 实体管理器用于通过持久性上下文与数据进行交互。
```java
@Override
......@@ -586,7 +586,7 @@ public class SaveCar extends HttpServlet {
```
`@WebServlet``SaveCar` Servlet 映射到`/save`路径。
`@WebServlet``SaveCar` Servlet 映射到`/save`路径。
```java
@EJB
......
......@@ -714,7 +714,7 @@ public interface CarDAO {
```
这是`CarDAO`界面,显示用于访问我们的数据库的方法签名。
这是`CarDAO`接口,显示用于访问我们的数据库的方法签名。
`Executable.java`
......
......@@ -159,7 +159,7 @@ public Resolution hello() {
```
`@DefaultHandler`为此动作 bean 设置了默认处理器。 它用当前日期填充`date`属性,并返回一个新的`ForwardResolution`。 分辨率转发到视图。
`@DefaultHandler`为此动作 bean 设置了默认处理器。 它用当前日期填充`date`属性,并返回一个新的`ForwardResolution`。 分辨率转发到视图。
`showDate.jsp`
......@@ -356,7 +356,7 @@ private String userName;
```
`@Validate`用于强制验证表单的用户名字段。 如果未输入任何值,则会显示一条错误消息。
`@Validate`用于强制验证表单的用户名字段。 如果未输入任何值,则会显示一条错误消息。
![Validation error message](img/1cf288248acf4b19eec2ee353d47047c.jpg)
......
......@@ -540,7 +540,7 @@ public Resolution addBook() {
```
`@DefaultHandler`指定此操作 bean 的默认处理器方法。 (可以定义多个处理器。)处理器创建`Book` bean,调用`BookService.saveBook()`并转发到适当的视图。
`@DefaultHandler`指定此操作 bean 的默认处理器方法。 (可以定义多个处理器。)处理器创建`Book` bean,调用`BookService.saveBook()`并转发到适当的视图。
`SelectOneBookActionBean.java`
......@@ -763,7 +763,7 @@ public interface BookDAO {
```
访问数据的方法在`BookDAO`界面中定义。 当我们根据该接口进行编程时,代码的耦合较少。
访问数据的方法在`BookDAO`接口中定义。 当我们根据该接口进行编程时,代码的耦合较少。
`MyBatisDAO.java`
......
......@@ -10,7 +10,7 @@ EclipseLink 是来自 Eclipse Foundation 的开源 Eclipse Persistence Services
Java 持久性 API (JPA) 是 Java 应用编程接口规范,它描述了使用 Java 的应用中关系数据的管理。 Java 持久性查询语言(JPQL) 是独立于平台的面向对象的查询语言。 它是 JPA 规范的一部分。 JPQL 用于对关系数据库中存储的实体进行查询。 它在很大程度上受到 SQL 的启发,其查询在语法上类似于 SQL 查询,但是针对 JPA 实体对象而不是直接针对数据库表进行操作。
实体是 Java 类,将与 JPA 保持在一起。 它必须用`javax.persistence.Entity`修饰。 此外,它必须具有`@Id`注解和`@GeneratedValue`,注解定义实体的主键的唯一 ID,该`@GeneratedValue`定义生成主键的策略。 `@Table`注解指定实体映射到的数据库表。
实体是 Java 类,将与 JPA 保持在一起。 它必须用`javax.persistence.Entity`修饰。 此外,它必须具有`@Id`注解和`@GeneratedValue`,注解定义实体的主键的唯一 ID,该`@GeneratedValue`定义生成主键的策略。 `@Table`注解指定实体映射到的数据库表。
`persistence.xml`是 JPA 中的标准配置文件。 它必须包含在包含实体 bean 的 JAR 文件内的`META-INF`目录中。 在此文件中,我们定义了持久性单元,这些持久性单元定义了由应用中的实体管理器实例管理的所有实体类的集合。 `EntityManager`是管理实体的持久状态的类。
......@@ -185,7 +185,7 @@ public class Car implements Serializable {
```
这是我们的实体类。 它用`@Entity`修饰。
这是我们的实体类。 它用`@Entity`修饰。
```java
@Table(name="Cars")
......@@ -631,7 +631,7 @@ public interface CarsService {
```
`CarsService`界面中,我们定义了通过实体管理器访问数据库的合同方法。
`CarsService`接口中,我们定义了通过实体管理器访问数据库的合同方法。
`CarsServiceImpl.java`
......
......@@ -253,7 +253,7 @@ public class ValidationFilter implements Filter {
```
`@WebFilter`声明一个 servlet 过滤器。 过滤器将应用于指定的 URL 模式。 在我们的例子中,它在`Greet` servlet 调用之前被调用。
`@WebFilter`声明一个 servlet 过滤器。 过滤器将应用于指定的 URL 模式。 在我们的例子中,它在`Greet` servlet 调用之前被调用。
```java
public class ValidationFilter implements Filter {
......
......@@ -111,7 +111,7 @@ public class Car {
```
`Car` bean 用 lombok 的`@Data`修饰。 它会自动创建获取器和设置器方法,`equals()`方法,`toString()`方法和`hashCode()`方法。
`Car` bean 用 lombok 的`@Data`修饰。 它会自动创建获取器和设置器方法,`equals()`方法,`toString()`方法和`hashCode()`方法。
```java
@NotNull
......@@ -120,7 +120,7 @@ private String name;
```
`@NotNull`释指出`name`属性可能不是`null``@Size`注释设置属性的最小和最大大小。
`@NotNull`解指出`name`属性可能不是`null``@Size`注解设置属性的最小和最大大小。
```java
@Min(value = 1000)
......@@ -451,7 +451,7 @@ private String name;
```
`@NotEmpty`导致用户名不能为空。
`@NotEmpty`导致用户名不能为空。
```java
@NotEmpty
......@@ -461,7 +461,7 @@ private String email;
```
电子邮件不能为空,并且必须匹配给定的模式。 用`@Pattern`设置模式。
电子邮件不能为空,并且必须匹配给定的模式。 用`@Pattern`设置模式。
`DoValidate.java`
......
......@@ -582,7 +582,7 @@ public class SpringBootClient {
```
`SpringBootClient`设置 Spring Boot 应用。 `@EnableAutoConfiguration`启用 Spring Application Context 的自动配置,尝试猜测和配置我们可能需要的 bean。
`SpringBootClient`设置 Spring Boot 应用。 `@EnableAutoConfiguration`启用 Spring Application Context 的自动配置,尝试猜测和配置我们可能需要的 bean。
`MyRunner.java`
......
......@@ -123,7 +123,7 @@ public class HelloServlet extends HttpServlet {
```
Java 类用`@WebServlet`修饰。 它映射到`hello` URL 模式。
Java 类用`@WebServlet`修饰。 它映射到`hello` URL 模式。
```java
@Override
......
......@@ -1094,7 +1094,7 @@ Spring 将扫描`com.zetcode`包中的组件。
```
`<context:property-placeholder>`元素注册一个`PropertySourcesPlaceholderConfigurer`,该元素允许使用`@Value`设置属性。 `location`属性指示在哪里查找属性。
`<context:property-placeholder>`元素注册一个`PropertySourcesPlaceholderConfigurer`,该元素允许使用`@Value`设置属性。 `location`属性指示在哪里查找属性。
`my.properties`
......@@ -1323,7 +1323,7 @@ public class Application {
```
`Application`设置 Spring Boot 应用。 `@SpringBootApplication`执行三件事:1)将类定义为配置类,2)启用自动配置,3)启用组件扫描。
`Application`设置 Spring Boot 应用。 `@SpringBootApplication`执行三件事:1)将类定义为配置类,2)启用自动配置,3)启用组件扫描。
`MyController.java`
......
......@@ -6,7 +6,7 @@
## `ImageIcon`
`Icon`是固定大小的小图片,通常用于装饰组件。 `ImageIcon``Icon`界面的实现,可从图像绘制图标。 可以从 URL,文件名或字节数组创建图像。
`Icon`是固定大小的小图片,通常用于装饰组件。 `ImageIcon``Icon`接口的实现,可从图像绘制图标。 可以从 URL,文件名或字节数组创建图像。
```java
paintIcon(Component c, Graphics g, int x, int y)
......@@ -412,7 +412,7 @@ class MissingIcon implements Icon {
```
要创建自定义图标,我们实现`Icon`界面
要创建自定义图标,我们实现`Icon`接口
```java
@Override
......
......@@ -363,7 +363,7 @@ val labels = stdCols.map {
`JCheckBox`是带有标签的框,该标签具有两种状态:开和关。 如果选中此复选框,则在复选框中用勾号表示。 复选框可用于在启动时显示或隐藏启动屏幕,切换工具栏的可见性等。
通过`JCheckBox`可以使用`ActionListener``ItemListener`。 通常使用后一种选项。 `ItemListener`是用于接收项目事件的界面。 对处理项目事件感兴趣的类,例如观察者,实现此接口。 使用组件的`addItemListener()`方法向组件注册观察者对象。 发生项目选择事件时,将调用观察者的`itemStateChanged()`方法。
通过`JCheckBox`可以使用`ActionListener``ItemListener`。 通常使用后一种选项。 `ItemListener`是用于接收项目事件的接口。 对处理项目事件感兴趣的类,例如观察者,实现此接口。 使用组件的`addItemListener()`方法向组件注册观察者对象。 发生项目选择事件时,将调用观察者的`itemStateChanged()`方法。
`KotlinSwingCheckBoxEx.kt`
......
......@@ -88,7 +88,7 @@ Page.getCurrent().setTitle("CheckBox");
```
在这里,我们设置网页的标题。 我们也可以使用`@Title`设置页面标题。
在这里,我们设置网页的标题。 我们也可以使用`@Title`设置页面标题。
```java
cbox.addValueChangeListener(e -> {
......
......@@ -228,7 +228,7 @@ $p->name = "Jane";
```
我们从外部访问`$name`成员。 在外部世界,我们的意思是“不在课堂上”。 可以,因为`$name`变量被声明为`public`。 无法访问`$age`成员。 `private`修饰符禁止这样做。 如果取消注释代码行,则将出现“致命错误:无法访问私有属性`Person::$age`”错误。
我们从外部访问`$name`成员。 在外部世界,我们的意思是“不在类中”。 可以,因为`$name`变量被声明为`public`。 无法访问`$age`成员。 `private`修饰符禁止这样做。 如果取消注释代码行,则将出现“致命错误:无法访问私有属性`Person::$age`”错误。
`access2.php`
......@@ -311,7 +311,7 @@ $sys->getInfo();
```
在此脚本中,我们有一个`SysInfo`类。 它将一些系统信息输出到控制台。 我们有两个私人职能和一个公共职能。 这里的私有方法仅用于`SysInfo`类的内部工作。 他们不应该在课外被称为
在此脚本中,我们有一个`SysInfo`类。 它将一些系统信息输出到控制台。 我们有两个私有职能和一个公共职能。 这里的私有方法仅用于`SysInfo`类的内部工作。 他们不应该在类外被调用
```php
$sys = new SysInfo();
......
......@@ -10,7 +10,7 @@ Doctrine 是一组 PHP 库,主要致力于在 PHP 中提供持久性服务。
## Doctrine `QueryBuilder`
Doctrine `QueryBuilder`为创建和运行数据库查询提供了方便,流畅的界面。 它是对运行 SQL 语句的低级详细信息的抽象。 它可以使程序员避免过程的复杂性。
Doctrine `QueryBuilder`为创建和运行数据库查询提供了方便,流畅的接口。 它是对运行 SQL 语句的低级详细信息的抽象。 它可以使程序员避免过程的复杂性。
Doctrine 有两种查询构建器; 一个用于 ORM,一个用于 DBAL。 在本教程中,我们介绍了 DBAL 的`QueryBuilder`
......
......@@ -258,7 +258,7 @@ This is the output.
## CakePHP 查询构建器
查询构建器为创建和运行数据库查询提供了方便,流畅的界面。 它是对运行 SQL 语句的低级详细信息的抽象。 它可以使程序员避免过程的复杂性。
查询构建器为创建和运行数据库查询提供了方便,流畅的接口。 它是对运行 SQL 语句的低级详细信息的抽象。 它可以使程序员避免过程的复杂性。
`query_builder.php`
......
......@@ -300,7 +300,7 @@ True
并且,或者对短路进行了求值。 短路求值意味着仅当第一个参数不足以确定表达式的值时,才求值第二个参数:当和的第一个参数求值为`false`时,总值必须为`false`; 当或的第一个参数为`true`时,总值必须为`true`
以下示例演示了简短的课时求值。
以下示例演示了简短的短路求值。
`short_circuit.py`
......
......@@ -495,7 +495,7 @@ class Dog:
```
这是`animals.py`文件的内容。 我们有两节课
这是`animals.py`文件的内容。 我们有两个类
`mclass.py`
......
......@@ -299,7 +299,7 @@ print(f"The parent of the parent of {path} is {path.parent.parent}")
```
我们可以得到父母的父母
我们可以得到父级的父级
```py
$ parents.py
......
......@@ -62,7 +62,7 @@ def hello():
```
使用`@route()`装饰器,我们定义了一条路线。 路由是 URL 与 Web 服务器函数之间的映射。 在我们的例子中,该函数返回一条简单的文本消息。
使用`@route()`装饰器,我们定义了一个路由。 路由是 URL 与 Web 服务器函数之间的映射。 在我们的例子中,该函数返回一条简单的文本消息。
```py
run(host='localhost', port=8080, debug=True)
......
......@@ -399,7 +399,7 @@ end
```
Sinatra 应用在`/target`线上返回问候语。 它从`params`哈希中获取值。
Sinatra 应用在`/target`上返回问候语。 它从`params`哈希中获取值。
`mpost.rb`
......
......@@ -411,7 +411,7 @@ end
```
Sinatra 应用在`/target`线上返回问候语。 它从`params`哈希中获取值。
Sinatra 应用在`/target`上返回问候语。 它从`params`哈希中获取值。
`mpost.rb`
......
......@@ -437,7 +437,7 @@ $ ./circle.rb
请注意,与其他面向对象的编程语言不同,继承在 Ruby 访问修饰符中不扮演的角色。 只有两件事很重要。 首先,如果我们在类定义的内部或外部调用方法。 其次,如果我们使用或不使用指向当前接收器的`self`关键字。
访问修饰符可防止意外修改数据。 它们使程序更强大。 某些方法的实现可能会发生变化。 这些方法是很好的私有方法。 公开给用户的界面仅应在确实必要时更改。 多年来,用户习惯于使用特定的方法,并且通常不赞成向后兼容。
访问修饰符可防止意外修改数据。 它们使程序更强大。 某些方法的实现可能会发生变化。 这些方法是很好的私有方法。 公开给用户的接口仅应在确实必要时更改。 多年来,用户习惯于使用特定的方法,并且通常不赞成向后兼容。
```ruby
#!/usr/bin/ruby
......@@ -836,7 +836,7 @@ puts d.show_count
```
我们从`Human``Dog`类创建实例。 我们在`Dog`对象上调用`show_count`方法。 `Dog`类没有这种方法。 然后调用祖父母的(Being)方法。
我们从`Human``Dog`类创建实例。 我们在`Dog`对象上调用`show_count`方法。 `Dog`类没有这种方法。 然后调用祖父`Being`方法。
```ruby
$ ./inheritance2.rb
......
......@@ -42,7 +42,7 @@ p c2
```
我们有汽车。 在类的定义中,我们使用`attr_reader``attr_writer``Car`类创建两个获取器和设置器方法。
我们有汽车。 在类的定义中,我们使用`attr_reader``attr_writer``Car`类创建两个获取器和设置器方法。
```ruby
attr_reader :name, :price
......
......@@ -37,7 +37,7 @@ puts "Orange"
```
`puts`方法将两个字符串打印到控制台。 每个人都有自己的路线。 该方法自动包括换行符。
`puts`方法将两个字符串打印到控制台。 每个人都有自己的路。 该方法自动包括换行符。
```ruby
$ ./printing.rb
......
......@@ -275,7 +275,7 @@ strategy.setType(Country.class);
```
我们使用 OpenCSV 的`HeaderColumnNameMappingStrategy``Country` bean 映射到 CSV 文件中的行。 每行都转换为一个 bean。 映射是在`@CsvBindByName`的帮助下完成的。
我们使用 OpenCSV 的`HeaderColumnNameMappingStrategy``Country` bean 映射到 CSV 文件中的行。 每行都转换为一个 bean。 映射是在`@CsvBindByName`的帮助下完成的。
```java
try (var br = new BufferedReader(
......
......@@ -272,7 +272,7 @@ public class ReadCountries extends HttpServlet {
```
Java 类用`@WebServlet`修饰。 它映射到`ReadCountries` URL 模式。
Java 类用`@WebServlet`修饰。 它映射到`ReadCountries` URL 模式。
```java
response.setContentType("text/html;charset=UTF-8");
......
......@@ -402,7 +402,7 @@ public class GetCities extends HttpServlet {
```
Java 类用`@WebServlet`修饰。 它映射到`GetCities` URL 模式。
Java 类用`@WebServlet`修饰。 它映射到`GetCities` URL 模式。
```java
@Inject
......
......@@ -253,7 +253,7 @@ public class Car {
```
使用`@XmlRootElement`,我们设置元素的名称。 `@XmlType`用于设置元素标签的生成顺序。
使用`@XmlRootElement`,我们设置元素的名称。 `@XmlType`用于设置元素标签的生成顺序。
`CarList.java`
......@@ -293,14 +293,14 @@ public class CarList {
```
`@XmlElementWrapper`在列表中的元素周围创建了一个包装。
`@XmlElementWrapper`在列表中的元素周围创建了一个包装。
```java
@XmlElement(name = "car")
```
`@XmlElement`设置包装元素的名称。
`@XmlElement`设置包装元素的名称。
`ServiceLocator.java`
......@@ -638,7 +638,7 @@ public class GetCars extends HttpServlet {
```
Java 类用`@WebServlet`修饰。 它映射到`GetCars` URL 模式。
Java 类用`@WebServlet`修饰。 它映射到`GetCars` URL 模式。
```java
response.setContentType("application/xml;charset=UTF-8");
......
......@@ -8,7 +8,7 @@ Spring 是流行的 Java 应用框架,而 Spring Boot 是 Spring 的演进,
## Spring Data JPA
Spring Data JPA 是伞式 Spring Data 项目的一部分,该项目使实现基于 JPA 的存储库更加容易。 Spring Data JPA 使用 JPA 将数据存储在关系数据库中。 它可以在运行时从存储库界面自动创建存储库实现。
Spring Data JPA 是伞式 Spring Data 项目的一部分,该项目使实现基于 JPA 的存储库更加容易。 Spring Data JPA 使用 JPA 将数据存储在关系数据库中。 它可以在运行时从存储库接口自动创建存储库实现。
## Spring Data JPA 排序
......
......@@ -12,7 +12,7 @@ Spring Data JPA 有助于实现基于 JPA 的存储库。 它增强了对基于
## Spring Data JPA 查询示例
示例查询(QBE)是一种具有简单界面的用户友好查询技术。 它允许动态查询创建。 我们不需要使用商店特定的查询语言编写查询。
示例查询(QBE)是一种具有简单接口的用户友好查询技术。 它允许动态查询创建。 我们不需要使用商店特定的查询语言编写查询。
我们处理三个对象。 `probe`是带有填充字段的域对象的实际示例。 `ExampleMatcher`包含有关如何匹配特定字段的详细信息。 `Example`由探针和`ExampleMatcher`组成。 它用于创建查询。
......
......@@ -10,7 +10,7 @@ CSV(逗号分隔值)是一种简单的数据格式,其中(大多数)
Hibernate 是 Java 语言的对象关系映射框架。 它提供了一个框架,用于将面向对象的域模型映射到关系数据库。 对象关系映射(ORM)是一种编程技术,用于在面向对象的编程语言中的不兼容类型系统之间转换数据。
Spring Data JPA 是 Spring Data 项目的一部分,该项目使实现基于 JPA 的存储库变得更加容易。 Spring Data JPA 使用 JPA 将数据存储在关系数据库中。 它可以在运行时从存储库界面自动创建存储库实现。
Spring Data JPA 是 Spring Data 项目的一部分,该项目使实现基于 JPA 的存储库变得更加容易。 Spring Data JPA 使用 JPA 将数据存储在关系数据库中。 它可以在运行时从存储库接口自动创建存储库实现。
RESTFul 应用遵循 REST 架构样式,该样式用于设计网络应用。 RESTful 应用生成 HTTP 请求,这些请求对资源执行 CRUD(创建/读取/更新/删除)操作。
......
......@@ -10,7 +10,7 @@ Spring 是用于开发 Java 企业应用的 Java 应用框架。 它还有助于
H2 是完全用 Java 实现的开源关系数据库管理系统。 它可以嵌入 Java 应用中或以客户端-服务器模式运行。 它占地面积小,易于部署和安装。 它包含一个基于浏览器的控制台应用,用于查看和编辑数据库表。
Spring Data JPA 是总括性 Spring Data 项目的一部分,该项目使实现基于 JPA 的存储库变得更加容易。 Spring Data JPA 使用 JPA 将数据存储在关系数据库中。 它可以在运行时从存储库界面自动创建存储库实现。
Spring Data JPA 是总括性 Spring Data 项目的一部分,该项目使实现基于 JPA 的存储库变得更加容易。 Spring Data JPA 使用 JPA 将数据存储在关系数据库中。 它可以在运行时从存储库接口自动创建存储库实现。
## Spring Boot 服务 PDF 示例
......
......@@ -186,7 +186,7 @@ $ mvn spring-boot:run
应用运行后,我们可以导航到`localhost:8080/`
在本教程中,我们展示了如何使用 Spring `ViewControllerRegistry`创建简单的路线
在本教程中,我们展示了如何使用 Spring `ViewControllerRegistry`创建简单的路
* [Spring Boot PostgreSQL 教程](/springboot/postgresql/)
* [Spring Boot `@Bean`](/articles/springbootbean/)
......
......@@ -8,7 +8,7 @@ Spring 是用于创建企业应用的流行 Java 应用框架。 Spring Boot 是
H2 是 Java 开源关系数据库管理。 它可以在客户端-服务器模式下运行,也可以嵌入 Java 应用中。 H2 易于部署和安装,占地面积小。
Spring Data JPA 是总括性 Spring Data 项目的一部分,该项目使实现基于 JPA 的存储库变得更加容易。 Spring Data JPA 使用 JPA 将数据存储在关系数据库中。 它可以在运行时从存储库界面自动创建存储库实现。
Spring Data JPA 是总括性 Spring Data 项目的一部分,该项目使实现基于 JPA 的存储库变得更加容易。 Spring Data JPA 使用 JPA 将数据存储在关系数据库中。 它可以在运行时从存储库接口自动创建存储库实现。
RESTFul 应用遵循 REST 架构样式,该样式用于设计网络应用。 RESTful 应用生成对资源执行 CRUD(创建/读取/更新/删除)操作的 HTTP 请求。 RESTFul 应用通常以 JSON 或 XML 格式返回数据。
......
......@@ -176,7 +176,7 @@ public class MyRoutesTest {
```
使用`WebTestClient`,我们测试了两条路线
使用`WebTestClient`,我们测试了两个路由
`com/zetcode/Application.java`
......
......@@ -8,7 +8,7 @@ Spring 是用于创建企业应用的流行 Java 应用框架。
## Spring `@RequestHeader`
`@RequestHeader`将请求标头值绑定到方法参数。 如果方法参数为`Map``MultiValueMap<String, String>``HttpHeaders`,则将使用所有标头名称和值填充映射。
`@RequestHeader`将请求标头值绑定到方法参数。 如果方法参数为`Map``MultiValueMap<String, String>``HttpHeaders`,则将使用所有标头名称和值填充映射。
## Spring `@RequestHeader`示例
......
......@@ -8,7 +8,7 @@ Spring 是用于创建企业应用的流行 Java 应用框架。
## 重定向
视图名称中的特殊`redirect:`前缀将重定向到其他 URL。 最终效果与控制器已返回`RedirectView`的效果相同。 重定向应用于发布/重定向/获取(PRG)场景; PGR 是一种 Web 开发设计模式,可防止重复提交表单。 默认情况下,发送状态代码 302。 如果要更改,可以使用`@ResponseStatus`处理器方法的返回类型。
视图名称中的特殊`redirect:`前缀将重定向到其他 URL。 最终效果与控制器已返回`RedirectView`的效果相同。 重定向应用于发布/重定向/获取(PRG)场景; PGR 是一种 Web 开发设计模式,可防止重复提交表单。 默认情况下,发送状态代码 302。 如果要更改,可以使用`@ResponseStatus`处理器方法的返回类型。
`RedirectAttributes``Model`接口的一种特殊化,控制器可以用来选择重定向方案的属性。
......
......@@ -196,4 +196,4 @@ $ mvn -q exec:java
在本教程中,我们展示了如何使用`BeanFactoryPostProcessor`注册新 bean。
您可能也对这些相关教程感兴趣: [Spring `@Qualifier`注释教程](/spring/qualifier/)[Spring 单例范围 bean](/spring/singletonscope/)[Spring C 命名空间教程](/spring/cnamespace/)[Spring `context:property-placeholder`教程](/spring/propertyplaceholder/)[Spring `BeanDefinitionBuilder`教程](/spring/beandefinitionbuilder/)[Spring bean 参考教程](/spring/beanreference/)[Java 教程](/lang/java/)
\ No newline at end of file
您可能也对这些相关教程感兴趣: [Spring `@Qualifier`注解教程](/spring/qualifier/)[Spring 单例范围 bean](/spring/singletonscope/)[Spring C 命名空间教程](/spring/cnamespace/)[Spring `context:property-placeholder`教程](/spring/propertyplaceholder/)[Spring `BeanDefinitionBuilder`教程](/spring/beandefinitionbuilder/)[Spring bean 参考教程](/spring/beanreference/)[Java 教程](/lang/java/)
\ No newline at end of file
# Spring `@Bean`注教程
# Spring `@Bean`注教程
> 原文: [http://zetcode.com/spring/bean/](http://zetcode.com/spring/bean/)
Spring `@Bean`释教程展示了如何使用`@Bean`注释在 Java 配置类中声明 bean。
Spring `@Bean`解教程展示了如何使用`@Bean`注解在 Java 配置类中声明 bean。
Spring 是用于创建企业应用的流行 Java 应用框架。
## Spring `@Bean`
`@Bean`指示带注释的方法产生要由 Spring 容器管理的 bean。 它是`<bean/>` XML 标签的直接模拟。 `@Bean`支持`<bean/>`提供的大多数属性,例如:`init-method``destroy-method``autowiring``lazy-init``dependency-check``depends-on``scope`
`@Bean`指示带注释的方法产生要由 Spring 容器管理的 bean。 它是`<bean/>` XML 标签的直接模拟。 `@Bean`支持`<bean/>`提供的大多数属性,例如:`init-method``destroy-method``autowiring``lazy-init``dependency-check``depends-on``scope`
## Spring `@Bean`示例
......@@ -157,7 +157,7 @@ public class HelloMessage {
```
`HelloMessage` bean 是使用`@Bean`方法创建的。
`HelloMessage` bean 是使用`@Bean`方法创建的。
`com/zetcode/config/AppCofig.java`
......@@ -218,7 +218,7 @@ public HelloMessage helloMessageProducer() {
```
`helloMessageProducer()`产生一个新的`HelloMessage` bean。 它从外部属性获取消息。 `@Bean`使`HelloMessage` bean 由 Spring 生产和管理。 另外,我们给 Bean 两个别名。
`helloMessageProducer()`产生一个新的`HelloMessage` bean。 它从外部属性获取消息。 `@Bean`使`HelloMessage` bean 由 Spring 生产和管理。 另外,我们给 Bean 两个别名。
`com/zetcode/Application.java`
......@@ -255,7 +255,7 @@ public class Application {
```
该应用带有`@ComponentScan``basePackages`选项告诉 Spring 在`com/zetcode`包及其子包中查找组件。
该应用带有`@ComponentScan``basePackages`选项告诉 Spring 在`com/zetcode`包及其子包中查找组件。
```java
var ctx = new AnnotationConfigApplicationContext(Application.class);
......@@ -293,6 +293,6 @@ $ mvn -q exec:java
我们运行该应用。
在本教程中,我们使用了`@Bean`来生成托管的 Spring bean。
在本教程中,我们使用了`@Bean`来生成托管的 Spring bean。
您可能也会对这些相关教程感兴趣: [Spring 单例范围 bean](/spring/singletonscope/)[Spring `@ComponentScan`教程](/spring/componentscan/)[Spring `@Autowired`教程](/spring/autowired/)[Java 教程](/lang/java/),或列出[所有 Spring 教程](/all/#spring)
\ No newline at end of file
# Spring `@PropertySource`注教程
# Spring `@PropertySource`注教程
> 原文: [http://zetcode.com/spring/propertysource/](http://zetcode.com/spring/propertysource/)
......@@ -257,6 +257,6 @@ $ mvn -q exec:java
我们运行该应用。
在本教程中,我们展示了如何使用`@PropertySource`在 Spring 应用中方便地使用属性。
在本教程中,我们展示了如何使用`@PropertySource`在 Spring 应用中方便地使用属性。
您可能也对这些相关教程感兴趣: [Spring `@Qualifier`注释教程](/spring/qualifier/)[Spring `@Configuration`注释教程](/spring/configuration/)[Spring `context:property-placeholder`教程](/spring/propertyplaceholder/),Java 教程,或列出[所有 Spring 教程](/all/#spring)
\ No newline at end of file
您可能也对这些相关教程感兴趣: [Spring `@Qualifier`注解教程](/spring/qualifier/)[Spring `@Configuration`注解教程](/spring/configuration/)[Spring `context:property-placeholder`教程](/spring/propertyplaceholder/),Java 教程,或列出[所有 Spring 教程](/all/#spring)
\ No newline at end of file
......@@ -8,9 +8,9 @@ Spring 是用于创建企业应用的流行 Java 应用框架。
## Spring `@ComponentScan`
`@ComponentScan`启用 Spring 中的组件扫描。 Spring 会自动检测以`@Component``@Configuration``@Service`等构造型修饰的 Java 类。 使用`@ComponentScan``basePackages`属性指定应扫描哪些包装中的装饰豆。
`@ComponentScan`启用 Spring 中的组件扫描。 Spring 会自动检测以`@Component``@Configuration``@Service`等构造型修饰的 Java 类。 使用`@ComponentScan``basePackages`属性指定应扫描哪些包装中的装饰豆。
`@ComponentScan``<context:component-scan>` XML 标签的替代方法。
`@ComponentScan``<context:component-scan>` XML 标签的替代方法。
## Spring `@ComponentScan`示例
......@@ -180,7 +180,7 @@ public class Application {
```
该应用带有`@ComponentScan``basePackages`选项告诉 Spring 在`com/zetcode`包及其子包中查找组件。
该应用带有`@ComponentScan``basePackages`选项告诉 Spring 在`com/zetcode`包及其子包中查找组件。
```java
var ctx = new AnnotationConfigApplicationContext(Application.class);
......@@ -207,4 +207,4 @@ $ mvn -q exec:java
在本教程中,我们使用`@ComponentScan`启用了组件扫描。
您可能也对这些相关教程感兴趣: [Spring `BeanDefinitionBuilder`教程](/spring/beandefinitionbuilder/)[Spring `AnnotationConfigApplicationContext`](/spring/annotationconfigapplicationcontext/)[Spring 单例范围 bean](/spring/singletonscope/)[Spring `@Bean`注释教程](/spring/bean/)[Spring `@Configuration`注释教程](/spring/configuration/)[Spring 注入列表 XML 教程](/spring/injectlistxml/)[Spring `BeanDefinitionBuilder`教程](/spring/beandefinitionbuilder/)[Spring HikariCP 教程](/articles/springhikaricp/)[Java 教程](/lang/java/)
\ No newline at end of file
您可能也对这些相关教程感兴趣: [Spring `BeanDefinitionBuilder`教程](/spring/beandefinitionbuilder/)[Spring `AnnotationConfigApplicationContext`](/spring/annotationconfigapplicationcontext/)[Spring 单例范围 bean](/spring/singletonscope/)[Spring `@Bean`注解教程](/spring/bean/)[Spring `@Configuration`注解教程](/spring/configuration/)[Spring 注入列表 XML 教程](/spring/injectlistxml/)[Spring `BeanDefinitionBuilder`教程](/spring/beandefinitionbuilder/)[Spring HikariCP 教程](/articles/springhikaricp/)[Java 教程](/lang/java/)
\ No newline at end of file
......@@ -2,13 +2,13 @@
> 原文: [http://zetcode.com/spring/configuration/](http://zetcode.com/spring/configuration/)
Spring `@Configuration`释教程展示了如何使用`@Configuration`注释配置 Spring 应用。
Spring `@Configuration`解教程展示了如何使用`@Configuration`注解配置 Spring 应用。
Spring 是用于创建企业应用的流行 Java 应用框架。
## Spring `@Configuration`
`@Configuration`用于基于 Spring 注释的配置。 `@Configuration`是标记注释,指示类声明了一个或多个`@Bean`方法,并且可以由 Spring 容器处理以在运行时为这些 bean 生成 bean 定义和服务请求
`@Configuration`用于基于 Spring 注释的配置。 `@Configuration`是标记注释,指示类声明了一个或多个`@Bean`方法,并且可以由 Spring 容器处理以在运行时为这些 bean 生成 bean 定义和服务请求
## Spring `@Configuration`示例
......@@ -158,7 +158,7 @@ public class AppConfig {
```
`AppConfig`是应用配置类。 它装饰有`@Configuration`,这是`@Component`的一种特殊形式。
`AppConfig`是应用配置类。 它装饰有`@Configuration`,这是`@Component`的一种特殊形式。
```java
@Configuration
......
......@@ -219,4 +219,4 @@ $ mvn -q exec:java
在本教程中,我们展示了如何在 C-命名空间中使用基于构造函数的注入。
您可能也对这些相关教程感兴趣: [Spring `@Qualifier`注释教程](/spring/qualifier/)[Spring 单例范围 bean](/spring/singletonscope/)[Spring P-命名空间教程](/spring/pnamespace/)[Spring `BeanDefinitionBuilder`教程](/spring/beandefinitionbuilder/)[Spring HikariCP 教程](/articles/springhikaricp/)[Java 教程](/lang/java/)
\ No newline at end of file
您可能也对这些相关教程感兴趣: [Spring `@Qualifier`注解教程](/spring/qualifier/)[Spring 单例范围 bean](/spring/singletonscope/)[Spring P-命名空间教程](/spring/pnamespace/)[Spring `BeanDefinitionBuilder`教程](/spring/beandefinitionbuilder/)[Spring HikariCP 教程](/articles/springhikaricp/)[Java 教程](/lang/java/)
\ No newline at end of file
......@@ -211,4 +211,4 @@ $ mvn -q exec:java
在本教程中,我们展示了如何在 P 名称空间中使用基于属性的注入。
您可能也对这些相关教程感兴趣: [Spring `@Qualifier`注释教程](/spring/qualifier/)[Spring 单例范围 bean](/spring/singletonscope/)[Spring C-命名空间教程](/spring/cnamespace/)[Spring `BeanDefinitionBuilder`教程](/spring/beandefinitionbuilder/)[Spring HikariCP 教程](/articles/springhikaricp/)[Java 教程](/lang/java/)
\ No newline at end of file
您可能也对这些相关教程感兴趣: [Spring `@Qualifier`注解教程](/spring/qualifier/)[Spring 单例范围 bean](/spring/singletonscope/)[Spring C-命名空间教程](/spring/cnamespace/)[Spring `BeanDefinitionBuilder`教程](/spring/beandefinitionbuilder/)[Spring HikariCP 教程](/articles/springhikaricp/)[Java 教程](/lang/java/)
\ No newline at end of file
......@@ -247,4 +247,4 @@ $ mvn -q exec:java
在本教程中,我们展示了如何使用 Spring 的 XML `ref`属性引用其他 bean。
您可能也对这些相关教程感兴趣: [Spring `@Qualifier`注释教程](/spring/qualifier/)[Spring `context:property-placeholder`教程](/spring/propertyplaceholder/)[Spring 单例范围 bean](/spring/singletonscope/)[Spring 注入列表 XML 教程](/spring/injectlistxml/)[Spring `BeanDefinitionBuilder`教程](/spring/beandefinitionbuilder/)[Spring HikariCP 教程](/articles/springhikaricp/)[Java 教程](/lang/java/)
\ No newline at end of file
您可能也对这些相关教程感兴趣: [Spring `@Qualifier`注解教程](/spring/qualifier/)[Spring `context:property-placeholder`教程](/spring/propertyplaceholder/)[Spring 单例范围 bean](/spring/singletonscope/)[Spring 注入列表 XML 教程](/spring/injectlistxml/)[Spring `BeanDefinitionBuilder`教程](/spring/beandefinitionbuilder/)[Spring HikariCP 教程](/articles/springhikaricp/)[Java 教程](/lang/java/)
\ No newline at end of file
# Spring `@Qualifier`注教程
# Spring `@Qualifier`注教程
> 原文: [http://zetcode.com/spring/qualifier/](http://zetcode.com/spring/qualifier/)
Spring `@Qualifier`教程显示了如何使用`@Qualifier`来区分 Spring 应用中的 bean。
Spring `@Qualifier`教程显示了如何使用`@Qualifier`来区分 Spring 应用中的 bean。
Spring 是用于创建企业应用的流行 Java 应用框架。
## Spring `@Qualifier`注解
如果 Spring 不能这样做,则`@Qualifier`有助于消除 Bean 引用的歧义。
如果 Spring 不能这样做,则`@Qualifier`有助于消除 Bean 引用的歧义。
## Spring `@Qualifier`示例
......
......@@ -8,7 +8,7 @@ Spring 是用于创建企业应用的流行 Java 应用框架。
## Spring `@Autowired`
`@Autowired`注解标记将由 Spring 的依赖项注入工具自动装配的构造函数,字段,设置器方法或配置方法。 它是 JSR-330 `@Inject`的替代方法。
`@Autowired`注解标记将由 Spring 的依赖项注入工具自动装配的构造函数,字段,设置器方法或配置方法。 它是 JSR-330 `@Inject`的替代方法。
## Spring `@Autowired`示例
......@@ -226,4 +226,4 @@ $ mvn -q exec:java
在本教程中,我们使用`@Autowired`在 Spring 中注入了依赖项。
您可能也对这些相关教程感兴趣: [Spring `@Bean`注释教程](/spring/bean/)[Spring `@ComponentScan`教程](/spring/componentscan/)[Java 教程](/lang/java/)或列出[所有 Spring 教程](/all/#spring)
\ No newline at end of file
您可能也对这些相关教程感兴趣: [Spring `@Bean`注解教程](/spring/bean/)[Spring `@ComponentScan`教程](/spring/componentscan/)[Java 教程](/lang/java/)或列出[所有 Spring 教程](/all/#spring)
\ No newline at end of file
......@@ -223,4 +223,4 @@ $ mvn -q -Dspring.profiles.active=dev exec:java
在本教程中,我们为 Spring 应用创建了开发和生产数据。
您可能也对这些相关教程感兴趣: [Spring `@Bean`注释教程](/spring/bean/)[Spring 单例范围 bean](/spring/singletonscope/)[Spring `@ComponentScan`教程](/spring/componentscan/)[Spring 注入列表 XML 教程](/spring/injectlistxml/)[Spring `BeanDefinitionBuilder`教程](/spring/beandefinitionbuilder/)[Spring HikariCP 教程](/articles/springhikaricp/)[Java 教程](/lang/java/)
\ No newline at end of file
您可能也对这些相关教程感兴趣: [Spring `@Bean`注解教程](/spring/bean/)[Spring 单例范围 bean](/spring/singletonscope/)[Spring `@ComponentScan`教程](/spring/componentscan/)[Spring 注入列表 XML 教程](/spring/injectlistxml/)[Spring `BeanDefinitionBuilder`教程](/spring/beandefinitionbuilder/)[Spring HikariCP 教程](/articles/springhikaricp/)[Java 教程](/lang/java/)
\ No newline at end of file
......@@ -199,7 +199,7 @@ public class Message {
```
`Message` bean 用`@Component`修饰。 此类由 Spring 自动检测。
`Message` bean 用`@Component`修饰。 此类由 Spring 自动检测。
`Application.java`
......
......@@ -172,7 +172,7 @@ src
```
这告诉 Spring 在哪里寻找带有`@Controller``@Repository``@Service``@Component`注解的类并进行注册。 在我们的例子中,我们有一个带有`@Controller`的控制器。
这告诉 Spring 在哪里寻找带有`@Controller``@Repository``@Service``@Component`注解的类并进行注册。 在我们的例子中,我们有一个带有`@Controller`的控制器。
```java
<mvc:annotation-driven/>
......@@ -604,7 +604,7 @@ public class MyController {
```
这是 Spring Boot Web 应用的控制器类。 控制器以`@Controller`修饰。 控制器具有一个映射。 映射解析为`showMessage.html`模板,该模板位于`WEB-INF/templates`目录中。
这是 Spring Boot Web 应用的控制器类。 控制器以`@Controller`修饰。 控制器具有一个映射。 映射解析为`showMessage.html`模板,该模板位于`WEB-INF/templates`目录中。
`Application.java`
......
......@@ -8,7 +8,7 @@ Spring 是用于创建企业应用的流行 Java 应用框架。
## `@GetMapping`
`@GetMapping`将 HTTP GET 请求映射到特定的处理器方法。 它是一个组合的注释,用作`@RequestMapping(method = RequestMethod.GET)`的快捷方式。
`@GetMapping`将 HTTP GET 请求映射到特定的处理器方法。 它是一个组合的注释,用作`@RequestMapping(method = RequestMethod.GET)`的快捷方式。
## Spring `@GetMapping`示例
......
......@@ -8,7 +8,7 @@ Spring 是用于创建企业应用的流行 Java 应用框架。
## `@PostMapping`
`@PostMapping`将 HTTP POST 请求映射到特定的处理器方法。 它是一个组合的注释,用作`@RequestMapping(method = RequestMethod.POST)`的快捷方式。
`@PostMapping`将 HTTP POST 请求映射到特定的处理器方法。 它是一个组合的注释,用作`@RequestMapping(method = RequestMethod.POST)`的快捷方式。
## Spring `@PostMapping`示例
......
......@@ -319,7 +319,7 @@ public class HelloServiceTest {
```
测试类用`@RunWith(SpringRunner.class)``@ContextConfiguration`定义了类级别的元数据,用于确定如何加载和配置用于集成测试的应用上下文。 此外,我们还提供了`@TestPropertySource`自定义测试属性文件。
测试类用`@RunWith(SpringRunner.class)``@ContextConfiguration`定义了类级别的元数据,用于确定如何加载和配置用于集成测试的应用上下文。 此外,我们还提供了`@TestPropertySource`自定义测试属性文件。
```java
@Value("${app.message}")
......
......@@ -8,7 +8,7 @@ Spring 是用于创建企业应用的流行 Java 应用框架。
## `@DeleteMapping`
`@DeleteMapping`将 HTTP DELETE 请求映射到特定的处理器方法。 它是一个组合的注释,用作`@RequestMapping(method = RequestMethod.DELETE)`的快捷方式。
`@DeleteMapping`将 HTTP DELETE 请求映射到特定的处理器方法。 它是一个组合的注释,用作`@RequestMapping(method = RequestMethod.DELETE)`的快捷方式。
## Spring `@DeleteMapping`示例
......@@ -252,7 +252,7 @@ public ResponseEntity<Set<Post>> all() {
```
`@GetMapping`的方法返回所有帖子。
`@GetMapping`的方法返回所有帖子。
```java
@DeleteMapping(value = "/posts/{id}")
......@@ -269,7 +269,7 @@ public ResponseEntity<Long> deletePost(@PathVariable Long id) {
```
`deletePost()`带有`@DeleteMapping`。 该方法的工作是尝试使用`IPostService`删除帖子。 根据结果​​返回适当的`ResponseEntity`
`deletePost()`带有`@DeleteMapping`。 该方法的工作是尝试使用`IPostService`删除帖子。 根据结果​​返回适当的`ResponseEntity`
`com/zetcode/model/Post.java`
......
......@@ -2,7 +2,7 @@
> 原文: [http://zetcode.com/spring/requestmapping/](http://zetcode.com/spring/requestmapping/)
Spring `@RequestMapping`教程显示了如何在 Spring Web 应用中使用`@RequestMapping`。 注解用于将 Web 请求映射到请求处理类中的处理器方法上。
Spring `@RequestMapping`教程显示了如何在 Spring Web 应用中使用`@RequestMapping`。 注解用于将 Web 请求映射到请求处理类中的处理器方法上。
Spring 是用于创建企业应用的流行 Java 应用框架。
......@@ -369,7 +369,7 @@ public class TestController {
```
我们也可以将`@RequestMapping`放在课堂上。 然后将路径与方法路径合并。
我们也可以将`@RequestMapping`放在上。 然后将路径与方法路径合并。
```java
@RequestMapping(value = "/info")
......@@ -450,6 +450,6 @@ This is some page
最后是蚂蚁风格的映射。
在本教程中,我们使用`@RequestMapping`创建了各种路径。
在本教程中,我们使用`@RequestMapping`创建了各种路径。
您可能也对这些相关教程感兴趣: [Spring WebJars 教程](/spring/webjars/)[Spring `@GetMapping`教程](/spring/getmapping/)[Spring `DefaultServlet`教程](/spring/defaultservlet/)[Spring Web 应用简介](/articles/springwebfirst/)[Java 教程](/lang/java/)
\ No newline at end of file
......@@ -8,7 +8,7 @@ Spring 是用于创建企业应用的流行 Java 应用框架。
## Spring `@RequestBody`
`@RequestBody`释将请求主体绑定到方法参数。 序列化/反序列化的过程由`HttpMessageConverter`执行。 另外,可以通过使用`@Valid`注释自变量来应用自动验证。
`@RequestBody`解将请求主体绑定到方法参数。 序列化/反序列化的过程由`HttpMessageConverter`执行。 另外,可以通过使用`@Valid`注解自变量来应用自动验证。
## Spring `@RequestBody`示例
......
+ [Spring `@Bean`注教程](2.md)
+ [Spring `@Bean`注教程](2.md)
+ [Spring `@Autowired`教程](3.md)
+ [Spring `@GetMapping`教程](4.md)
+ [Spring `@PostMapping`教程](5.md)
......@@ -17,13 +17,13 @@
+ [Spring `BeanFactoryPostProcessor`教程](18.md)
+ [Spring `BeanFactory`教程](19.md)
+ [Spring `context:property-placeholder`教程](20.md)
+ [Spring `@PropertySource`注教程](21.md)
+ [Spring `@PropertySource`注教程](21.md)
+ [Spring `@ComponentScan`教程](22.md)
+ [Spring `@Configuration`教程](23.md)
+ [Spring C 命名空间教程](24.md)
+ [Spring P 命名空间教程](25.md)
+ [Spring bean 参考教程](26.md)
+ [Spring `@Qualifier`注教程](27.md)
+ [Spring `@Qualifier`注教程](27.md)
+ [Spring `ClassPathResource`教程](28.md)
+ [Spring 原型作用域 bean](29.md)
+ [Spring Inject List XML 教程](30.md)
......
......@@ -186,7 +186,7 @@ class MessageController extends AbstractController
```
`@Route``message`路径映射到`index()`方法。 `methods`参数定义请求类型。
`@Route``message`路径映射到`index()`方法。 `methods`参数定义请求类型。
```php
public function index(Request $request)
......
......@@ -55,7 +55,7 @@ process-form:
```
我们为应用定义了两路由。 `index`路由显示带有表单的主页。 `process-form`处理提交的表单并检查 CSRF 令牌。
我们为应用定义了两路由。 `index`路由显示带有表单的主页。 `process-form`处理提交的表单并检查 CSRF 令牌。
`src/Controller/AppController.php`
......
......@@ -114,7 +114,7 @@ public function helloPlain()
```
路由是从 URL 路径到控制器方法的映射。 `@Route``/plain` URL 路径映射到`helloPlain()`函数。
路由是从 URL 路径到控制器方法的映射。 `@Route``/plain` URL 路径映射到`helloPlain()`函数。
```php
return new Response("Hello there", Response::HTTP_OK,
......
......@@ -97,7 +97,7 @@ class MyController extends AbstractController
```
`MyController`具有使用注释,XML,YAML 和 PHP 创建的四个路由。 每路由均返回简单文本。
`MyController`具有使用注释,XML,YAML 和 PHP 创建的四个路由。 每路由均返回简单文本。
```php
/**
......@@ -111,7 +111,7 @@ public function about()
```
About 路由与`@Route`映射。
About 路由与`@Route`映射。
`config/routes.yaml`
......@@ -184,4 +184,4 @@ This is Contacts page
在本教程中,我们使用注释,XML,YAML 配置和 PHP 代码在 Symfony 中创建了路由。
您可能也对以下相关教程感兴趣: [Symfony `@Route`注释教程](/symfony/routeannotation/)[Symfony 简介](/symfony/intro/)[Symfony 表单教程](/symfony/form/)[PHP 教程](/lang/php/)
\ No newline at end of file
您可能也对以下相关教程感兴趣: [Symfony `@Route`注解教程](/symfony/routeannotation/)[Symfony 简介](/symfony/intro/)[Symfony 表单教程](/symfony/form/)[PHP 教程](/lang/php/)
\ No newline at end of file
......@@ -213,7 +213,7 @@ public function findAll() {
```
我们使用 DBAL `QueryBuilder`从表中获取所有行。 Doctrine DBAL `QueryBuilder`提供了一个方便,流畅的界面来创建和运行数据库查询。
我们使用 DBAL `QueryBuilder`从表中获取所有行。 Doctrine DBAL `QueryBuilder`提供了一个方便,流畅的接口来创建和运行数据库查询。
```php
$ php bin/console server:run
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册