31 Ocak 2018 Çarşamba

BeanDefinitionRegistryPostProcessor Arayüzü

postProcess metodu
İmzası şöyle.
@Component
public class MyPostProcessor implements BeanDefinitionRegistryPostProcessor {

  @Override
  public void postProcessBeanFactory(ConfigurableListableBeanFactory beanFactory)
  throws BeansException {
    ...
  }
}

30 Ocak 2018 Salı

SpringSecurity AuthorizationCodeServices Arayüzü

Giriş
Açıklaması şöyle.
Where Authorization Code is stored will depend on what implementation of AuthorizationCodeServices is used in AuthorizationTokenGranter and AuthorizationEndpoint

If JdbcAuthorizationCodeServices is used, then Authorization code will be stored in a table named oauth_code.

If InMemoryAuthorizationCodeServices is used, then Authorization code will be stored in a ConcurrentHashMap in memory.

SpringBoot Jackson2ObjectMapperBuilderCustomizer Arayüzü

Giriş
Jackson ayarlarını özelleştirmek için 3 tane yöntem ver
1. application.properties ile özeleştirmek
2. Jackson2ObjectMapperBuilderCustomizer  ile özeleştirmek
3. Jackson2ObjectMapperBuilder ile özeleştirmek
4. ObjectMapper nesnesi direkt yaratılır ve özelleştirilir

Kendisine verilen Jackson2ObjectMapperBuilder nesnesini özelleştirmek için kullanılır. Örneğin bu nesneye modül eklenir.

customize metodu
Örnek
Şöyle yaparız.
@Bean
public Jackson2ObjectMapperBuilderCustomizer jc() {
  return builder -> builder.serializationInclusion(JsonInclude.Include.NON_NULL);
}
Örnek
Şöyle yaparız.
@Configuration
public class JacksonConfiguration {

  @Bean
  public Jackson2ObjectMapperBuilderCustomizer addCustomBigDecimalDeserialization() {
    return new Jackson2ObjectMapperBuilderCustomizer() {

    @Override
    public void customize(Jackson2ObjectMapperBuilder jacksonObjectMapperBuilder) {
      //Add your customization
    }

  };
}
Örnek
Şöyle yaparız.
@Bean
Jackson2ObjectMapperBuilderCustomizer jackson2ObjectMapperBuilderCustomizer(){
  return jacksonObjectMapperBuilder -> {
    jacksonObjectMapperBuilder.modules(new JsonOrgModule());
  };
}

23 Ocak 2018 Salı

SpringMVC ModelAndView Sınıfı - Server Side Rendering İçindir

Giriş
Şu satırı dahil ederiz.
import org.springframework.web.servlet.ModelAndView;
Açıklaması şöyle
ModelAndView is a holder for both Model and View , so that the controller can return both model and view together.
Bu sınıfın içinde bir tane 
private ModelMap model;
var. Yani sınıf yerine Model veya ModelMap kullanılabilir

Kullanım
addObject ile ismi olan bir nesne eklenir. Daha sonra bu nesneye JSP sayfasında tekrar ismi ile erişilir.
Eğer aynı anda birden fazla ismi olan nesne eklemek istersek addObjects() kullanılır

Örnek - addObject
Şöyle yaparız.
@Controller
public class HelloWorldController {
  @RequestMapping("/welcome")
  public ModelAndView hello() {
    ModelAndView model = new ModelAndView("hello");
    model.addObject("message", "spring mvc");
    return model;
  }
}
jsp sayfası şöyledir
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>Insert title here</title>
</head>
<body>
    <h1>${message}</h1>
</body>
</html>
Örnek - addAllOjbects
Şöyle yaparız
@RequestMapping(value = "/showCars", method = RequestMethod.GET)
public ModelAndView showApp() {

  ModelAndView modelAndView = new ModelAndView();

  //adding a single attribute for the modelMap
  PageContent pageContent = new PageContent();
  pageContent.setHeaderName("All Cars - From Controller");
  modelAndView.addObject(pageContent);

  List<Car> carList = new ArrayList<>();
  ...
  Map<String,Object> allObjectsMap = new HashMap<>();
  allObjectsMap.put("allCarObjects", carList);

  //adding a set of objects for the model map
  modelAndView.addAllObjects(allObjectsMap);

  modelAndView.setViewName("CarView");
  return modelAndView;
}
jsp için şöyle yaparız. Burada modelAndView nesnesine pageContent
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%@ taglib prefix="spring" uri="http://www.springframework.org/tags"%>

<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
<!DOCTYPE html>
<html>
  <head>
    <title>ModelAttribute Example</title>
  </head>
  <body>
    <h1>${pageContent.headerName}</h1>
    <table>
      <tr>
        <th>Model</th>
        <th>Registration No</th>
        <th>Year of Manufacture</th>
      </tr>

      <c:forEach var="car" items="${allCarObjects}">
        <tr>
          <td><c:out value="${car.model}" /></td>

          <td><c:out value="${car.regNo}" /></td>

          <td><c:out value="${car.year}" /></td>
        </tr>
      </c:forEach>
    </table>
  </body>
</html>
constructor
jsp sayfasının ismi belirtilir. Şöyle yaparız.
 ModelAndView model = new ModelAndView("hello");
addObject
İmzası şöyle. jsp sayfasında gösterilecek nesne belirtilir. 
public ModelAndView addObject(Object attrbiuteValue);
addObject

İmzası şöyle. jsp sayfasında gösterilecek nesne belirtilir. 
public ModelAndView addObject(String attributeName, Object attrbiuteValue);
Metodun içi şöyle. ModelMap'e ekleme yapar.
public ModelAndView addObject(String attributeName, Object attributeValue) {
  getModelMap().addAttribute(attributeName, attributeValue);
  return this;
}
Örnek
Şöyle yaparız.
model.addObject("message", "spring mvc");
addAll