#SpringBootの基本的な一般的な注釈の説明

SpringBootの基本的な一般的な注釈の説明


@Autowired

  • 依存関係の挿入に使用されるオブジェクトは、セッターメソッド、構築メソッド、およびフィールドに使用できます。あるpackage org.springframework.beans.factory.annotation;コメント内は。タイプ(ByType)に従って依存オブジェクトをアセンブルします。デフォルトでは、注入されたオブジェクトが存在する必要があります。オブジェクトが存在しない場合、エラーが報告され、@Autowired(required=false)注入されたオブジェクトを使用できます

  • @Qualifier注釈と組み合わせて使用されます。これは、現在注入されているBeanの名前が@Qualifier後者のBeanであることを意味します。@Qualifier後者のBeanは使用中に存在する必要があることに注意してください。存在しない場合、エラーが報告されます。

@Autowired注入オブジェクトの例
@Component
public class AnnoationClazz {
    
    

    private UserService userService;

    @Autowired
    RedisProperties redis;

    @Autowired(required = true)
    public void setUserService(@Qualifier("userService") UserService userService) {
    
    
        this.userService = userService;
    }
}
静的オブジェクトを挿入する@Autowriedの例
@Component
public class AnnoationClazz {
    
    
    
    private static RedisProperties redisProperties;

    @Autowired(required = true)
    public void setRedisProperties(RedisProperties redisProperties) {
    
    
        AnnoationClazz.redisProperties=redisProperties;
    }
}

@資源

  • デフォルトの注入メソッドはByNameで、これはjava.lang.annotation.*次のクラスです。
  • Name属性とType属性があり、Spring@Resourceは注釈付きの名前をBean名に解析し、TypeはBeanタイプです。name属性を使用する場合は、byNameの自動注入戦略を使用し、type属性を使用する場合は、byTypeの自動注入戦略を使用します。name属性もtype属性も指定されていない場合、byName自動注入戦略がリフレクションメカニズムを通じて使用されます。
インスタンス@Resource注入オブジェクト
@Resource
private UserService userervice;

@Resource
private void setUserService(UserService userService){
    
    
    this.userService=userService;
}

@RequestParam

  • @RequestParamは、requestHeaderからパラメーターを受け取ります。
  • 要求されたUrlの上のパラメーターをメソッドのパラメーターにマップします。
  • たとえば、要求されたUrlはlocalhost:9999/request/test2?name=张三&age=1
インスタンス@RequestParamはリクエストパラメータを受け取ります
@RequestMapping("/test2")
public String getMap(@RequestParam String name,int age) {
    
    
    System.out.println("方法请求到了!");
    return name+String.valueOf(age);
}

@RequestBody

  • @RequestBodyは、requestBodyおよびリクエスト本文からパラメーターを受け取ります。
  • 通常Content-Type: application/x-www-form-urlencoded、次のようなデータエンコーディング形式application/jsonapplication/xmlおよびその他のタイプのデータを処理するため。
インスタンス受信パラメータ
@RequestMapping("/test1")
public List<String> getList(@RequestBody List<String> list){
    
    
    System.out.println("方法请求到了!");
    return list;
}

AthPathVariable

  • Urlでデータを取得する
  • 次のようなUrl:localhost:9999/request/test3/12/张三
URLのデータを取得します
@RequestMapping("/test3/{age}/{name}")
public String str(@PathVariable("age") int age,@PathVariable("name") String name) {
    
    
    return age+name;
}

@成分

  • クラスがコンポーネントクラスであり、SpringがこのクラスのBeanを作成する必要があることを示します。
  • @Component(@ Controller、@ Service、@ Respository)は、クラスパススキャンによって自動的にBeanコンテナにアセンブルされます。

@豆

  • 構成クラスのメソッドであり、オブジェクトをSpringコンテナに返すことを示します。このオブジェクトは、SpringコンテキストでBeanとして登録する必要があります。
  • Beanとマークされたメソッドは、通常、Beanオブジェクトを生成するロジックを記述します
@Component
public class TestComponent {
    
    
	
	@Bean
	public User getUser() {
    
    
		User user =new User(1,"张三",new Date());
		return user;
	}
}

@PostConstruct

  • これはJava独自の注釈です。javax.annotation.PostConstruct
  • Bean初期化全体での注釈の順序は次のとおりです。Constructor-> @ Autowired-> @ PostConstruct
インスタンス初期化静的オブジェクト
@Component
public class UserUtils {
    
    
	
	private Logger logger=Logger.getLogger(UserUtils.class);
	
	private static User users;
	
	@Autowired
	User user;
		
	@PostConstruct
	public void init() {
    
    
		UserUtils.users=user;
	}
	
	public static Map<String,String> getUserMap(){
    
    
		Map<String,String> map=new HashMap<String, String>();
		map.put("age",String.valueOf(users.getAge()));
		map.put("name",users.getName());
		map.put("date", String.valueOf(users.getDate()));
		return map;		
	}
}

@Qualifier

  • 1つのタイプのBeanが複数ある場合は、@ Qualifier( "name")を使用して指定できます。@Autowiredアノテーションとともに使用します。

@PropertySource

  • 読み取る構成ファイルのアドレスを指定し、@ Valueアノテーションとともに使用します。
@Component
@PropertySource(value = {
    
    "redis.properties"})
public class RedisProperties {
    
    
	
	@Value("${redis.url}")
	private String url;
	
	@Value("${redis.password}")
	private String password;
	
	@Value("${redis.username}")
	private String username;

}

おすすめ

転載: blog.csdn.net/qq_37248504/article/details/108859121
おすすめ