Quantcast
Channel: Crunchify
Viewing all articles
Browse latest Browse all 1037

How to Read config.properties value using Spring MVC ‘singleton’ Scope in Java?

$
0
0

Spring MVC Singleton scope tutorial - Crunchify

Sometime back I have written a tutorial on how to read config file in tradition way. But what if you want to load it as a Spring MVC framework?

It is most common that you may need to access some of your config.properties values all the time in your Java class. There is a simple way to get it using Spring MVC’s singleton scope.

Kindly take a look at below complete workspace picture.

We need to create 4 files:

  1. CrunchifySpringExample.java under package com.crunchify.tutorial
  2. config.properties file under /resources/config/ folder
  3. spring-bean.xml file under /resources folder
  4. pom.xml file (convert project to Maven project)

Eclipse Project Structure - Crunchify Spring MVC - Load Config

Let’s get started:

Step-1

Create Dynamic Web Project called CrunchifyLoadPropertiesSpringMVC

Create new Dynamic Web Project - Crunchify

Step-2

Convert project to Maven Project.

This will create pom.xml file and we will add Spring dependancies.

Create Maven POM Project - Crunchify

Step-3

Create file CrunchifySpringExample.java

package com.crunchify.tutorial;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Scope;
import org.springframework.context.support.ClassPathXmlApplicationContext;
import org.springframework.stereotype.Component;

/**
 * 
 * @author Crunchify.com
 */

@Component("crunchifySpringExample")
@Scope("singleton")
public class CrunchifySpringExample {

    private static boolean springExample;
    private static String springTutorial;
    private static String url;

    @Autowired
    public CrunchifySpringExample(@Value("${CRUNCHIFY_URL}") String url, @Value("${SPRING_TUTORIAL}") String springTutorial,
            @Value("${IS_THIS_SPRING_EXAMPLE}") boolean springExample) {
        CrunchifySpringExample.springExample = springExample;
        CrunchifySpringExample.springTutorial = springTutorial;
        CrunchifySpringExample.url = url;

    }

    @SuppressWarnings({ "resource", "unused" })
    public static void main(String[] args) {
        try {
            ClassPathXmlApplicationContext ctx = new ClassPathXmlApplicationContext(new String[] { "spring-bean.xml" });
        } catch (Throwable e) {
            System.out.println(e);
        }

        System.out.println("\nLoading Properties from Config File during application startup: \n\nSPRING_TUTORIAL: " + springTutorial);
        System.out.println("IS_THIS_SPRING_EXAMPLE: " + springExample);
        System.out.println("CRUNCHIFY_URL: " + url);
    }

}

Step-4

Here is my pom.xml file.

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <groupId>CrunchifyLoadPropertiesSpringMVC</groupId>
    <artifactId>CrunchifyLoadPropertiesSpringMVC</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <packaging>war</packaging>
    <name>CrunchifyLoadPropertiesSpringMVC</name>
    <build>
        <sourceDirectory>src</sourceDirectory>
        <plugins>
            <plugin>
                <artifactId>maven-compiler-plugin</artifactId>
                <version>3.1</version>
                <configuration>
                    <source>1.7</source>
                    <target>1.7</target>
                </configuration>
            </plugin>
            <plugin>
                <artifactId>maven-war-plugin</artifactId>
                <version>2.3</version>
                <configuration>
                    <warSourceDirectory>WebContent</warSourceDirectory>
                    <failOnMissingWebXml>false</failOnMissingWebXml>
                </configuration>
            </plugin>
        </plugins>
    </build>

    <properties>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
        <spring.version>4.0.2.RELEASE</spring.version>
    </properties>

    <dependencies>

        <!-- Spring base -->
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-aop</artifactId>
            <version>${spring.version}</version>
            <exclusions>
                <exclusion>
                    <groupId>commons-logging</groupId>
                    <artifactId>commons-logging</artifactId>
                </exclusion>
            </exclusions>
        </dependency>
        <!-- Spring MVC -->
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-webmvc</artifactId>
            <version>${spring.version}</version>
        </dependency>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-web</artifactId>
            <version>${spring.version}</version>
        </dependency>
        <dependency>
            <groupId>commons-logging</groupId>
            <artifactId>commons-logging</artifactId>
            <version>1.1.1</version>
        </dependency>
    </dependencies>
</project>

Step-5

If you don’t see “resources” folder. create one.

Create Resource Folder - Crunchify Spring Example

Step-6

Create config.properties file with below contents.

# Crunchify Properties
IS_THIS_SPRING_EXAMPLE=true
SPRING_TUTORIAL=CRUNCHIFY_TUTORIAL
CRUNCHIFY_URL=https://crunchify.com

Step-7

Content of spring-bean.xml file

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
    xmlns:util="http://www.springframework.org/schema/util" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xmlns:context="http://www.springframework.org/schema/context"
    xsi:schemaLocation="
       http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
       http://www.springframework.org/schema/util http://www.springframework.org/schema/util/spring-util-3.0.xsd 
       http://www.springframework.org/schema/context
       http://www.springframework.org/schema/context/spring-context-3.0.xsd">

    <util:properties id="nodeProperty"
        location="classpath:config/config.properties" />
    <context:property-placeholder
        properties-ref="nodeProperty" />
    <context:component-scan base-package="com.crunchify.tutorial" />
</beans>

Step-8

Now run CrunchifySpringExample.java and you should see result like this.

Step-9

Output

Jul 05, 2014 3:38:52 PM org.springframework.context.support.AbstractApplicationContext prepareRefresh
INFO: Refreshing org.springframework.context.support.ClassPathXmlApplicationContext@7e3bfb66: startup date [Sat Jul 05 15:38:52 CDT 2014]; root of context hierarchy
Jul 05, 2014 3:38:52 PM org.springframework.beans.factory.xml.XmlBeanDefinitionReader loadBeanDefinitions
INFO: Loading XML bean definitions from class path resource [spring-bean.xml]
Jul 05, 2014 3:38:52 PM org.springframework.core.io.support.PropertiesLoaderSupport loadProperties
INFO: Loading properties file from class path resource [config/config.properties]

Loading Properties from Config File during application startup: 

SPRING_TUTORIAL: CRUNCHIFY_TUTORIAL
IS_THIS_SPRING_EXAMPLE: true
CRUNCHIFY_URL: https://crunchify.com

Enjoy and Happy Coding..

The post How to Read config.properties value using Spring MVC ‘singleton’ Scope in Java? appeared first on Crunchify.


Viewing all articles
Browse latest Browse all 1037

Trending Articles