Ioc, DI(2)
19051 ワード
Ioc, DI (2)
package me.sungbin.iocspring;
import org.springframework.beans.BeansException;
import org.springframework.context.ApplicationContext;
import org.springframework.context.ApplicationContextAware;
import org.springframework.stereotype.Component;
@Component
public class ApplicationContextProvider implements ApplicationContextAware {
private static ApplicationContext context;
@Override
public void setApplicationContext(ApplicationContext applicationContext) throws BeansException {
context = applicationContext;
}
public static ApplicationContext getContext() {
return context;
}
}
package me.sungbin.iocspring;
import org.springframework.stereotype.Component;
import java.util.Base64;
@Component("base74Encoder")
public class Base64Encoder implements IEncoder {
public String encode(String message) {
return Base64.getEncoder().encodeToString(message.getBytes());
}
}
package me.sungbin.iocspring;
public class Encoder {
private IEncoder iEncoder;
public Encoder( IEncoder iEncoder) {
this.iEncoder = iEncoder;
}
public void setiEncoder(IEncoder iEncoder) {
this.iEncoder = iEncoder;
}
public String encode(String message) {
return iEncoder.encode(message);
}
}
package me.sungbin.iocspring;
@FunctionalInterface
public interface IEncoder {
String encode(String message);
}
package me.sungbin.iocspring;
import org.springframework.stereotype.Component;
import java.io.UnsupportedEncodingException;
import java.net.URLEncoder;
@Component
public class UrlEncoder implements IEncoder {
public String encode(String message) {
try {
return URLEncoder.encode(message, "UTF-8");
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
return null;
}
}
}
package me.sungbin.iocspring;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.context.ApplicationContext;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
@SpringBootApplication
public class IocSpringApplication {
public static void main(String[] args) {
SpringApplication.run(IocSpringApplication.class, args);
ApplicationContext context = ApplicationContextProvider.getContext();
// Base64Encoder base64Encoder = context.getBean(Base64Encoder.class);
// UrlEncoder urlEncoder = context.getBean(UrlEncoder.class);
Encoder encoder = context.getBean("urlEncode", Encoder.class);
String url = "www.naver.com/books/it?page=10&size=20&name=spring-boot";
String result = encoder.encode(url);
System.out.println(result);
}
}
@Configuration
class AppConfig {
@Bean("base64Encode")
public Encoder encoder(Base64Encoder base64Encoder) {
return new Encoder(base64Encoder);
}
@Bean("urlEncode")
public Encoder encoder(UrlEncoder urlEncoder) {
return new Encoder(urlEncoder);
}
}
これまで,開発者が直接オブジェクトを作成するのではなく,スプリングコンテナに依存性を登録し注入する方法を理解してきた.Reference
この問題について(Ioc, DI(2)), 我々は、より多くの情報をここで見つけました https://velog.io/@ysb05222/Ioc-DI2テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol