প্রারম্ভকালে লোড হওয়া সমস্ত বসন্ত বিনগুলি মুদ্রণের কোনও উপায় আছে? আমি স্প্রিং ২.০ ব্যবহার করছি using
প্রারম্ভকালে লোড হওয়া সমস্ত বসন্ত বিনগুলি মুদ্রণের কোনও উপায় আছে? আমি স্প্রিং ২.০ ব্যবহার করছি using
উত্তর:
হ্যাঁ, ApplicationContextকল করুন এবং কল করুন.getBeanDefinitionNames()
আপনি এর দ্বারা প্রসঙ্গটি পেতে পারেন:
ApplicationContextAware@Inject/ @Autowired(2.5 পরে)WebApplicationContextUtils.getRequiredWebApplicationContext(..)সম্পর্কিত: আপনি শিমের রেজিস্ট্রেশন করেও প্রতিটি শিমের নিবন্ধন সনাক্ত করতে পারেন BeanPostprocessor। এটি প্রতিটি শিমের জন্য অবহিত করা হবে।
public class PrintBeans {
@Autowired
ApplicationContext applicationContext;
public void printBeans() {
System.out.println(Arrays.asList(applicationContext.getBeanDefinitionNames()));
}
}
সমস্ত শিমের নাম এবং এর ক্লাসগুলি মুদ্রণ করুন:
package com.javahash.spring.controller;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.ApplicationContext;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
@Controller
public class HelloWorldController {
@Autowired
private ApplicationContext applicationContext;
@RequestMapping("/hello")
public String hello(@RequestParam(value="key", required=false, defaultValue="World") String name, Model model) {
String[] beanNames = applicationContext.getBeanDefinitionNames();
for (String beanName : beanNames) {
System.out.println(beanName + " : " + applicationContext.getBean(beanName).getClass().toString());
}
model.addAttribute("name", name);
return "helloworld";
}
}
applicationContext.getBeanDefinitionNames () শিম প্রদর্শন করে না যা বিন বিন্যাস উদাহরণ ছাড়াই নিবন্ধিত রয়েছে ।
package io.velu.core;
import org.springframework.context.annotation.AnnotationConfigApplicationContext;
import org.springframework.context.annotation.ComponentScan;
import org.springframework.context.annotation.Configuration;
@Configuration
@ComponentScan
public class Core {
public static void main(String[] args) {
AnnotationConfigApplicationContext context = new AnnotationConfigApplicationContext(Core.class);
String[] singletonNames = context.getDefaultListableBeanFactory().getSingletonNames();
for (String singleton : singletonNames) {
System.out.println(singleton);
}
}
}
environment
systemProperties
systemEnvironment
org.springframework.context.annotation.internalConfigurationAnnotationProcessor
org.springframework.context.annotation.ConfigurationClassPostProcessor.importRegistry
org.springframework.context.event.internalEventListenerProcessor
org.springframework.context.event.internalEventListenerFactory
org.springframework.context.annotation.internalAutowiredAnnotationProcessor
org.springframework.context.annotation.internalCommonAnnotationProcessor
messageSource
applicationEventMulticaster
lifecycleProcessor
যেমন আপনি আউটপুট, পরিবেশ, সিস্টেমপ্রপার্টি, সিস্টেম-পরিবেশ মটরশুটিগুলি প্রসঙ্গ.বিটবিয়ান ডেফিনিশননাম () পদ্ধতি ব্যবহার করে প্রদর্শিত হবে না ।
স্প্রিং বুট ওয়েব অ্যাপ্লিকেশনগুলির জন্য, সমস্ত মটরশুটি নীচের শেষ পয়েন্টটি ব্যবহার করে তালিকাভুক্ত করা যেতে পারে।
@RestController
@RequestMapping("/list")
class ExportController {
@Autowired
private ApplicationContext applicationContext;
@GetMapping("/beans")
@ResponseStatus(value = HttpStatus.OK)
String[] registeredBeans() {
return printBeans();
}
private String[] printBeans() {
AutowireCapableBeanFactory autowireCapableBeanFactory = applicationContext.getAutowireCapableBeanFactory();
if (autowireCapableBeanFactory instanceof SingletonBeanRegistry) {
String[] singletonNames = ((SingletonBeanRegistry) autowireCapableBeanFactory).getSingletonNames();
for (String singleton : singletonNames) {
System.out.println(singleton);
}
return singletonNames;
}
return null;
}
}
["অটোসিঙ্কিগ্রেশনআরপোর্ট", "স্প্রিং অ্যাপ্লিকেশনআরগমেন্টস", "স্প্রিংবুটব্যানার", "স্প্রিংবুটলগিংসিসটেম", "এনভায়রনমেন্ট", "সিস্টেমপ্রপ্রেটিস", "সিস্টেমইএনভায়রনমেন্ট", "org.springframework.context.annotation.internConfigration.frugation.torpaorgeg.org। internalCachingMetadataReaderFactory "," org.springframework.boot.autoconfigure.condition.BeanTypeRegistry "," org.springframework.context.annotation.ConfigurationClassPostProcessor.importRegistry "," propertySourcesPlaceholderConfigurer "," org.springframework.boot.context.properties.ConfigurationPropertiesBindingPostProcessor.store " , "সংরক্ষণ করুনআররকন্ট্রোলারট্রেটক্লাসপোস্টপ্রসেসর "," org.springframework.context.annotation.internAutowiredAnnotationProcessor "," org.springframework.context.annotation.internalRequiredAnnotationProcessor.transmontext.com। org.spong.com। "কনফিগারেশনপ্রিন্টসবাইন্ডিংপোস্টপ্রসেসর", "org.springframework.schedolve.annotation.ProxyAsyncConfigration", "org.springframework.context.annotation.in আন্তঃসিঙ্কঅ্যানোটেশনপ্রসেসার", "পদ্ধতিবিলিডসপ্রেসট্রেসন সার্ভারস্রোসিংপ্রেসিটার"applicationEventMulticaster "," org.springframework.boot.autoconfigure.web.EmbeddedServletContainerAutoConfiguration $ EmbeddedTomcat "," tomcatEmbeddedServletContainerFactory "," org.springframework.boot.autoconfigure.websocket.WebSocketAutoConfiguration $ TomcatWebSocketConfiguration "," websocketContainerCustomizer "," spring.http.encoding- org.springframework.boot.autoconfigure.web.HttpEncodingProperties "," org.springframework.boot.autoconfigure.web.HttpEncodingAutoConfigration "," localeCharsetMappingsCusomf.gug.sug.gp.gp.gp.gp.gp.png.fg.pngsgg.pnggg.pngsgg.pngsgg.pngsgg.pngsgg.pngsgg.png " সদৃশ সার্ভারপ্রপিটিস ডিটেক্টর "," বসন্ত.সোর্স-org.springframework.boot।অটোকনফিগার.ওয়েব.আরসোর্সপ্রপ্রেটিস "," org.springframework.boot.autoconfigure.web.ErrorMvcAutoConfigration $ DefaultErrorViewResolverConfigration "," কনভেনশনআররভিউরিজলভার.স্রুটিগ্রাগগ্রাফ্রেকচারগ্রেটগ্রেটারগ্রেটগ্রাম কনটেক্সটপ্যারামিটারস "," কনটেক্সটঅ্যাট্রিবিউটস "," স্প্রিং.এমভিসি -আরগ.স্প্রিংফ্রেমওয়ার্ক.বूट.আটোকনফিগিউর.ইউব.উইব এমভিসিপ্রপিটিস "," স্প্রিং। htp.mલ્ટpart-org.springframework.boot.autoconfigure.web.tspartworkProp। " boot.autoconfigure.web.MultpartAutoConfigration "," মাল্টিপার্টকনফিগমেন্ট "," org.springframework.boot.autoconfigure.web।DispatcherServletAutoConfiguration $ DispatcherServletRegistrationConfiguration "," org.springframework.boot.autoconfigure.web.DispatcherServletAutoConfiguration $ DispatcherServletConfiguration "," dispatcherServlet "," dispatcherServletRegistration "," requestContextFilter "," org.springframework.boot.autoconfigure.web.WebMvcAutoConfiguration "," hiddenHttpMethodFilter " , "এইচপিপুটফর্মকন্টেন্টফিল্টার", "চরিত্রের এনকোডিং ফিল্টার", "org.springframework.context.event.internEventListener প্রসেসর", "org.springframework.context.event.internEventListenerF কারখানা", "রিপোর্টারেটর এক্সপোর্টিংসর্ট।" বুটautoconfigure.AutoConfigurationPackages "," org.springframework.boot.autoconfigure.context.PropertyPlaceholderAutoConfiguration "," org.springframework.boot.autoconfigure.jackson.JacksonAutoConfiguration $ Jackson2ObjectMapperBuilderCustomizerConfiguration "," spring.jackson-org.springframework.boot.autoconfigure.jackson। JacksonProperties "," standardJacksonObjectMapperBuilderCustomizer "," org.springframework.boot.autoconfigure.jackson.JacksonAutoConfiguration $ JacksonObjectMapperBuilderConfiguration "," org.springframework.boot.autoconfigure.jackson.JacksonAutoConfiguration "," jsonComponentModule "," jacksonObjectMapperBuilder "," org.springframework। boot.autoconfigure.jackson।JacksonAutoConfiguration $ JacksonObjectMapperConfiguration "," jacksonObjectMapper "," org.springframework.boot.autoconfigure.websocket.WebSocketAutoConfiguration "," org.springframework.boot.autoconfigure.web.EmbeddedServletContainerAutoConfiguration "," org.springframework.boot.autoconfigure.web.DispatcherServletAutoConfiguration " , "org.springframework.boot.autoconfigure. માન્યকরণ.ভালিডেশনআউটকনফিগারেশন", "ডিফল্টভিডিয়েটর", "org.springframework.boot.autoconfigure.web.ErrorMvcAutoConfigration $ হোয়াইটলেলআরওয়্যার" ক্রিয়াকলাপের ত্রুটি "কনফিগারেশন , "org.springframework.boot.autoconfigure.web।WebMvcAutoConfiguration $ EnableWebMvcConfiguration "," org.springframework.boot.autoconfigure.web.WebMvcAutoConfiguration $ WebMvcAutoConfigurationAdapter "," mvcContentNegotiationManager "," org.springframework.boot.autoconfigure.web.HttpMessageConvertersAutoConfiguration $ StringHttpMessageConverterConfiguration "," stringHttpMessageConverter "," org.springframework। boot.autoconfigure.web.JacksonHttpMessageConvertersConfiguration $ MappingJackson2HttpMessageConverterConfiguration "," mappingJackson2HttpMessageConverter "," org.springframework.boot.autoconfigure.web.HttpMessageConvertersAutoConfiguration "," messageConverters "," mvcConversionService "," mvcValidator ","requestMappingHandlerAdapter "," mvcResourceUrlProvider "," requestMappingHandlerMapping "," mvcPathMatcher "," mvcUrlPathHelper "," viewControllerHandlerMapping "," beanNameHandlerMapping "," resourceHandlerMapping "," defaultServletHandlerMapping "," mvcUriComponentsContributor "," httpRequestHandlerAdapter "," simpleControllerHandlerAdapter "," handlerExceptionResolver " , "এমভিসিভিউরেসলভার", "org.springframework.boot.autoconfigure.web.WebMvcAutoConfigration $ WebMvcAutoConfigrationAdapter $ ফ্যাভিকন কনফিগারেশন", "ফ্যাভিকনরেকুথহ্যান্ডার", "ডিফল্ট" অ্যাপ্লিকেশনভিউরেসোলভার "," ওয়েলকামপেজহ্যান্ডলারম্যাপিং "," org.springframework.boot.autoconfigure.jmx.Jmx আউটকনফিগারেশন "," অবজেক্টনমিংস্ট্রেজি "," মায়াবাইনসर्ভার "," মিবিন এক্সপোর্টার "," org.springframeConstationAdation.figaut.com "" org.springframework.boot.autoconfigure.context.ConfigrationPropertiesAutoConfigration "," org.springframework.boot.autoconfigure.web.JacksonHttpMessageConvertersConfigration "।" স্পট.ইন.ফ্রোগ্রিফ.গ্রিপশন.ফ্রন্ট.ইন.ফোরোগ্রাট। স্প্রিংফ্রেমওয়ার্ক.বूट.আটোকনফিগিউর.ইন.ফো.প্রজেক্ট ইনফো অটো কন্টিগিগ্রেশন "," মাল্টিপার্টআরসোলভার "," org।স্প্রিংফ্রেমওয়ার্ক.বুট.আউটকনফিগুর.আর.বি.বিউবপ্লাইটআউটকোফাইগ্রেশন $ রিসেটপ্লেট কনফিগারেশন "," রিসটেম্পলেটবিল্ডার "," org.springframework.boot.autoconfigure.web.WebClientToGonfigrationGotsgfigrationto. " org.springframework.boot.devtools.autoconfigure.LocalDevToolsAutoConfiguration $ RestartConfiguration "," fileSystemWatcherFactory "," classPathRestartStrategy "," classPathFileSystemWatcher "," hateoasObjenesisCacheDisabler "," org.springframework.boot.devtools.autoconfigure.LocalDevToolsAutoConfiguration $ LiveReloadConfiguration $ LiveReloadServerConfiguration "," org.springframework.boot.devtools.autoconfigure।লোকালডিভটুলসআউটকোফিগ্রেশন $ লাইভরেলওড কনফিগারেশন "," alচ্ছিক লাইভরেলওড সার্ভার "," অরগ।
আপনি কল করার চেষ্টা করতে পারেন
org.springframework.beans.factory.ListableBeanFactory.getBeansOfType(Object.class)
অথবা ডিবাগ লগিং চালু করুন org.springframework। (বসন্ত বুটে, এটি পরামিতি ব্যবহার করছে --logging.level.org.springframework=DEBUG)
ListableBeanFactoryএকটি ইন্টারফেস। ইন্টারফেসের পদ্ধতি getBeansOfTypeবা অন্য কোনও পদ্ধতি চালনার জন্য এমন একটি শ্রেণীর উদাহরণ কোথায় পাওয়া যাবে যাতে ইন্টারফেসটি প্রসারিত হয় ? আমি দেখতে পাচ্ছি যে ApplicationContextএটি প্রসারিত হয়েছে, তবে আপনার উদাহরণটি দেখায় না যে কীভাবে সেগুলির মধ্যে একটি অর্জন করা যায়।
@Autowired ListableBeanFactory listableBeanFactoryএবং একটি পাবেন (বাস্তবায়নের ধরণের বিষয়টি বিবেচনা করা উচিত নয়)
spring-boot-starter-actuatorআপনি ব্যবহার করে সহজেই সমস্ত শিম অ্যাক্সেস করতে পারেন।
সেটআপ প্রক্রিয়াটি এখানে:
গ্রেড গ্রেড ফাইল এ যুক্ত করুন:
compile("org.springframework.boot:spring-boot-starter-actuator")
যোগ management.security.enabled=falseআপনার application.property ফাইলে
কল / মটরশুটি শেষ পয়েন্ট :
এর পরে বসন্ত সেটআপের সাথে সম্পর্কিত কিছু মেট্রিকগুলি সক্ষম করে। এর একটি বিন্দু হল / মটরশুটি এই এন্ডপয়েন্টগুলিকে কল করার পরে এটি একটি জসন ফাইল সরবরাহ করবে যা এতে আপনার নির্ভরযোগ্যতা এবং স্কোপ সহ সমস্ত মটরশুটি রয়েছে।
এখানে জেসন ফাইলের একটি উদাহরণ রয়েছে:
[{"context":"application:8442","parent":null,"beans":[{"bean":"beanName","aliases":[],"scope":"singleton","type":"packageName$$4b46c703","resource":"null","dependencies":["environment","beanName1","beanName2"]},{"bean":"org.springframework.boot.autoconfigure.internalCachingMetadataReaderFactory","aliases":[],"scope":"singleton","type":"org.springframework.core.type.classreading.CachingMetadataReaderFactory","resource":"null","dependencies":[]}]
আরও তথ্যের জন্য দর্শন লিংক ভিজিট করুন:
আশা করি এটা তোমাকে সাহায্য করবে। ধন্যবাদ :)
বসন্ত অ্যাপ্লিকেশন প্রসঙ্গ থেকে সমস্ত শিমের নাম মুদ্রণের জন্য এখানে আরেকটি উপায় রয়েছে:
import java.util.Arrays;
import java.util.concurrent.atomic.AtomicInteger;
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.context.ConfigurableApplicationContext;
/***********************************************************************************************************
* Java File: MainApplication.java
* Description: Main class to run the application.
*
***********************************************************************************************************/
@SpringBootApplication
public class MainApplication {
private static final Logger logger = LogManager.getLogger(MainApplication.class);
public static void main(String[] args)
{
final ConfigurableApplicationContext context = SpringApplication.run(MainApplication.class, args);
final AtomicInteger counter = new AtomicInteger(0);
logger.info("**************** START: Total Bean Objects: {} ******************", context.getBeanDefinitionCount());
Arrays.asList(context.getBeanDefinitionNames())
.forEach(beanName -> {
logger.info("{}) Bean Name: {} ", counter.incrementAndGet(), beanName);
});
logger.info("**************** END: Total Bean: {} ******************", context.getBeanDefinitionCount());
}
}
Sample Output:
2019-11-27 20:08:02.821 INFO [main] [c.c.a.MainApplication:18] - **************** START: Total Bean Objects: 564 ******************
...........................
2019-11-27 20:08:02.821 INFO [main] [c.c.a.MainApplication:22] - 460) Bean Name: mvcPathMatcher
2019-11-27 20:08:02.821 INFO [main] [c.c.a.MainApplication:22] - 461) Bean Name: mvcUrlPathHelper
2019-11-27 20:08:02.821 INFO [main] [c.c.a.MainApplication:22] - 462) Bean Name: viewControllerHandlerMapping
2019-11-27 20:08:02.821 INFO [main] [c.c.a.MainApplication:22] - 463) Bean Name: beanNameHandlerMapping
2019-11-27 20:08:02.821 INFO [main] [c.c.a.MainApplication:22] - 464) Bean Name: resourceHandlerMapping
...........................
2019-11-27 20:08:02.821 INFO [main] [c.c.a.MainApplication:25] - **************** END: Total Bean: 564 ******************
ApplicationContextAwareইন্টারফেস বাস্তবায়নের কারণ হ'ল বসন্ত কাঠামো এটিকে অ্যাপ্লিকেশন প্রসঙ্গে অ্যাক্সেস করার সুযোগ দেয়।@Configurationউদ্দেশ্যযুক্ত অ্যাপ্লিকেশন প্রসঙ্গে আপনার এটি ক্লাসে রাখা উচিত ।