SpringBootプラクティス(4):SpringBootの一般的なアノテーション

従来のSpringは.xmlファイルを使用してBeanを挿入したり、aopを構成したりするため、読みやすさが低下し、メンテナンスが不十分になります。注釈を使用すると、エンティティまたはクラスに全面的に注釈を付けることができるため、構成の記述が大幅に簡素化されます。

1. @Autowired(自動アセンブリ)

Springがxmlファイルを使用してBeanと参照を使用する場合、zooエンティティには次のように記述されたtigerクラスとmonkeyクラスがあります。

     <bean id="zoo" class="com.spring.model.Zoo" >
        <property name="tiger" ref="tiger" />
        <property name="monkey" ref="monkey" />
    </bean>

アノテーション@Autowiredを使用してオートワイヤリングする場合、この参照を削除できます。Springが@Autowiredアノテーションを検出すると、コードコンテキストでそれに一致するBeanが自動的に検出され(デフォルトはタイプ一致)、自動的に挿入されます。対応する場所に行きます。

public class Zoo {
    @Autowired
    private Tiger tiger;    
    @Autowired
    private Monkey monkey;
    public String toString(){
        return tiger + "\n" + monkey;
    }    
}

2. @Qualifier(注入されたBeanの名前を指定します)

Carクラスに2つのサブクラスがあるとすると、@ Autowiredを使用してアセンブルするときに、@ Qualifierを使用してアセンブルするサブクラスの名前を指定できます。

public class CarFactory { 
    @Autowired
    @Qualifier("bmwCar")
    private ICar car;
    public String toString(){
        return car.getCarName();
    }    
}

3、@ Service(Beanとして宣言)

クラスに@Serviceアノテーションが付けられた後、それはBeanとして宣言されます。それがBeanの別のクラスになった場合にのみ、@ Autowiredを使用してメンバー変数として自動的に注入できます。@ Scopeアノテーションは、このクラスがシングルトンモデルであることを示します。そしてそれは毎回新しいものです動物園のクラス。

@Service("Zoo")
@Scope("prototype")
public class Zoo {   
    @Autowired
    private Tiger tiger;  
    @Autowired
    private Monkey monkey;  
    public String toString(){
        return tiger + "\n" + monkey;
    }
}

4、@ Component(一般にコンポーネントを指します。分類が容易でない場合はこのアノテーションを使用してください)

@Componentアノテーション付きクラスはSpringによって管理されます。これは、xmlでBeanを構成するのと同じです。このアノテーションは通常、プレゼンテーション層でもビジネス層でも永続層でもないクラスに使用されます。プロジェクトの開始時に、クラスインスタンス化されています。

5つ、@ Controller(プレゼンテーション層Beanとしてラベル付けされている)および@RestController

@RestControllerは、Spring4の後に追加されたアノテーションであり、@ Controllerの+ @ ResponseBodyと同じであり、これがjson文字列を返すことができるプレゼンテーション層インターフェイスクラスであることを示します。次の例では、このクラスにアノテーションが付けられた@Controllerはhelloを返します。 .htmlリソースであり、@ RestControllerに変更すると、RESTインターフェースを定義できるようになります。

6、@ RequestMapping(リクエストマッピングパスを定義)

@RequestMappingをクラスとメソッドの上に配置して、RESTリクエストのリクエストパスを定義できます。/userは、UserControllerクラスのメソッドによって提供されるAPIリクエストのルートパスになります。@ RequestMappingには8つの属性があります。

value:リクエストの実際のアドレスを指定します。

method:リクエストメソッドタイプ(GET、POST、PUT、DELETE)などを指定します。

消費:リクエストを処理するために送信されたコンテンツのコンテキストタイプを指定します。

生成:返されるコンテンツのタイプを指定し、戻り値の文字エンコードを設定することもできます。

params:メソッドが処理される前に特定のパラメーター値をリクエストに含める必要があることを指定します。

ヘッダー:メソッドがリクエストを処理する前に、指定されたリクエストに特定の指定されたヘッダー値が含まれている必要があります。

@RestController
@RequestMapping("/user")
@Api("统一认证管理")
@Slf4j
public class UserController {
    @Autowired
    AuthServiceImpl authService;
    @Autowired
    UserServiceImpl userService;
    @Autowired
    private HttpSession session;
    @PostMapping("/login")
    @ApiImplicitParam(name = "req", value = "用户登陆信息", dataType = "LoginReq")
    public R login(@RequestBody @NotNull LoginReq req) throws Exception {
}

セブン、@ RequestParam

これは、リクエストパラメータデータを処理メソッドのパラメータにマッピングするために使用されます。つまり、渡されたパラメータを使用してページでリクエストを開始すると、次の例では渡されたIDを取得し、メソッド本体でIDを論理的に処理します。 ;

8. @リポジトリ(ラベル付きデータアクセスコンポーネント、つまりDAOコンポーネント)

アノテーション付きクラスは一般に永続層であり、使用法は厄介です。@ mapperの後、Spring構成でスキャンアドレスを設定する必要はありません。mapper.xmlのnamespace属性は、関連するmapperクラスに対応します。Springは動的になります。 Beanを生成し、のServiceImplに挿入します。@Repositoryは、Springでスキャンパッケージアドレスを構成してから、daoレイヤーBeanを生成し、それをServiceImplに注入する必要があります。次の例では、@ Repositoryアノテーションを記述せずにマッパーをSpringに注入することもできます。

package com.example.testspring.mapper;
import com.example.testspring.model.Students;
import org.apache.ibatis.annotations.Mapper;
import org.springframework.stereotype.Repository;
import java.util.List;
@Repository
@Mapper
public interface StudentMapper {
    List<Students> SelectAll();
    Students SelectByID(int id);
}

9、@ Configuration(構成クラス)および@ConfigurationProperties

@Configurationアノテーションは、クラスを構成として扱い、IoCコンテナーとしても扱います。@ Beanがそのメソッドヘッダーの1つに登録されている場合、SpringコンテナーのBeanとして使用されます。

Springソースコードでは多数の@ConfigurationPropertiesアノテーション(server.portなど)が使用されており、Beansのオンデマンド構成は、他のアノテーションと組み合わせて使用​​することで実現されます。このアノテーションにはプレフィックス属性があります。構成構成ファイル内は、指定されたプレフィックスでバインドされます。このアノテーションは、クラスまたはメソッドに配置できます。メソッドとして使用する場合は、@ Beanでアノテーションを付ける必要があり、所属するクラスは次のようになります。 @Configurationアノテーションが付けられています。

次の例では、結合されたアノテーションを使用して、application.propertity、spring.datasource.ds1で記述されたデータソースを定義します。

@Configuration
public class DataSourceConfig {
	// 主数据源 ds1数据源
	@Primary
	@Bean(name = "ds1DataSourceProperties")
	@ConfigurationProperties(prefix = "spring.datasource.ds1")
	public DataSourceProperties ds1DataSourceProperties() {
		return new DataSourceProperties();
	}
}

10、@ Mapperアノテーション

Mybatis3.4.0は@Mapperアノテーションの追加を開始しました。目的は、マッパーマッピングファイルを書き込まないことです。次の例では、mybatisPlusを使用しています。

@Mapper
public interface UserMapper extends BaseMapper<User>{
    User getByIdLazy(String userId);
    User findById(String userId);
    boolean deleteRoleByUserId(String userId);
    boolean insertRolesBatch(@Param("list") List<UserRole> list);}

11、@ getMappingおよび@postMapping

@getMappingと@postMappingは、組み合わせたアノテーションです。

@getMapping = @requestMapping(method = RequestMethod.GET)

@postMapping = @requestMapping(method = RequestMethod.POST)

おすすめ

転載: blog.csdn.net/yezonggang/article/details/110318278