Spring 5.2 Study Guide Overview
Spring 5.2 Study Guide Overview
SPRING 5.2
STUDY GUIDE
Author
Som Prakash Rai
S
o
[Link] 1 Spring-5.2 Study Guide
Guide
The Spring Framework provides a comprehensive programming and configuration model for
modern Java-based enterprise applications
Spring Framework is a Java platform that provides comprehensive infrastructure support for
developing Java applications.
1) Spring Boot
2) Spring Data.
3) Spring Cloud
4) Spring Messaging
5) Spring AMQP
6) Spring Kafka
7) Spring Android.
8) Spring Batch
9) Spring Social.
10) Spring Web Flow.
11) Spring LDAP.
12) Spring Hadoop.
13) Spring Scala.
14) Spring Mobile.
15) Spring Roo.
Dependency Injection
Dependency Injection is the process of Injecting bean dependencies automatically.
Spring Dependency Injection uses 3 ways to inject the dependencies
1) Setter Injection
2) Constructor Injection
3) Field Injection (using Annotations)
Ex:
class Student{
String sid; //1 Setter Injection
7) Copy 21-Binary Jars into required Folder to use in your Eclipse Projects.
1. [Link] 2. [Link]
3. [Link] 4. [Link]
5. [Link] 6. [Link]
Hello h=(Hello)[Link]("myhello");
[Link]();
}
}
5. [Link]
package [Link];
/*
* @Author : Som Prakash
* @Company : jtcindia
* @Website : [Link]
* */
public class Hello {
A aobj; //S.I
B bobj; //C.I
static {
[Link]("Hello - S.B");
}
public Hello(B bobj)
{ [Link]("Hello(B) -
1arg"); [Link] = bobj;
}
public void setAobj(A aobj)
{ [Link]("Hello-
setAobj()");
[Link] 6 Spring-5.2 Study Guide
Guide
[Link] = aobj;
}
public void show() {
[Link]("Hello-show()");
[Link](aobj);
[Link](bobj);
}
}
6. [Link]
package [Link];
import [Link];
import [Link];
/*
* @Author : Som Prakash
* @Company : jtcindia
* @Website : [Link]
* */
@Configuration
public class JTCAppConfig {
@Bean
public A createA() {
//Task1 : Create and Initialize A object
A ao=new A();
[Link](101);
[Link]("I am A");
return ao;
}
@Bean("BO")
public B createB() {
//Task2 : Create and Initialize B object
B bo=new B(102,"I am B");
return bo;
}
@Bean("myhello")
public Hello createHello(A ao,B bo) {
//Task3 : Create and Initialize Hello object
Hello h=new Hello(bo);
[Link](ao);
return h;
}
}
Scope Description
singleton When bean scope is singleton then only one instance will be created for
that bean and the same instance will be returned when you call getBean()
method.
singleton is the default scope in the ApplicationContext container.
When scope is single-ton then default loading type is aggressive loading.
prototype When bean scope is prototype then every time a new instance will be
created for that bean when you call getBean() method.
When scope is prototype then default loading type is lazy loading.
request Scopes a single bean definition to the lifecycle of a single HTTP request.
Single Bean instance will be created per HTTP Request
Only valid in the context of a web-aware Spring ApplicationContext.
Usage:
@Scope(value="singleton")
@Scope(value=" prototype ")
@Scope("singleton")
@Scope("prototype")
1. [Link]
package [Link];
import [Link];
import [Link];
/*
* @Author : Som Prakash
* @Company : jtcindia
* @Website : [Link]
* */
public class Lab2 {
public static void main(String[] args) {
Hello hello1=(Hello)[Link]("hello");
Hello hello2=(Hello)[Link]("hello");
[Link](hello1==hello2);
Hai hai1=(Hai)[Link]("hai");
Hai hai2=(Hai)[Link]("hai");
[Link](hai1==hai2);
Hello hello=(Hello)[Link]("hello");
[Link]();
Hai hai=(Hai)[Link]("hai");
[Link]();
}
}
2. [Link]
package [Link];
/*
* @Author : Som Prakash
* @Company : jtcindia
* @Website : [Link]
* */
public class Hello {
static {
3. [Link]
package [Link];
/*
* @Author : Som Prakash
* @Company : jtcindia
* @Website : [Link]
* */
public class Hai {
static
{ [Link]("Hai -
S.B");
}
public Hai()
{ [Link]("Hai - D.C");
}
public void showHai() {
[Link]("Hai-showHai()");
}
}
4. [Link]
package [Link];
import [Link];
import [Link];
import [Link];
/*
* @Author : Som Prakash
* @Company : jtcindia
* @Website : [Link]
* */
@Configuration
public class JTCAppConfig {
@Bean("hello")
@Scope("singleton")
public Hello createHello() {
[Link]("-------createHello()-------- called");
Bean configured in the Spring Configuration Class can be loaded in two ways.
1) Aggressive loading or Eager loading
2) Lazy loading.
Usage:
@Lazy(value="true")
@Lazy(value="true")
@Lazy("true")
@Lazy("false")
In the case of lazy loading, all the Beans will be loaded, instantiated and initialized when
you or container try to use them by calling getBean() method.
Ex:
@Bean @Lazy(true)
public Hello hello() {
return new Hello();
}
1. [Link]
package [Link];
import [Link];
import [Link];
/*
* @Author : Som Prakash
* @Company : jtcindia
* @Website : [Link]
* */
public class Lab3 {
public static void main(String[] args) {
Hello hello=(Hello)[Link]("hello");
[Link]();
Hai hai=(Hai)[Link]("hai");
[Link]();
}
}
4. [Link]
package [Link];
import [Link];
import [Link];
import [Link];
import [Link];
/*
* @Author : Som Prakash
* @Company : jtcindia
* @Website : [Link]
* */
@Bean("hello")
@Scope("singleton")
@Lazy(true)
public Hello createHello() {
[Link]("-------createHello()-------- called");
return new Hello();
}
@Bean("hai")
@Scope("prototype")
@Lazy(true)
public Hai createHai() {
[Link]("-------createHai()--------called");
return new Hai();
}
}
1. [Link]
package [Link];
import [Link];
import [Link];
/*
* @Author : Som Prakash
* @Company : jtcindia
* @Website : [Link]
* */
public class Lab4 {
public static void main(String[] args) {
Hello hello=(Hello)[Link]("myhello");
[Link]();
Runtime rt =(Runtime)[Link]("myruntime");
[Link]([Link]());
} }
2. [Link]
package [Link];
/*
* @Author : Som Prakash
* @Company : jtcindia
* @Website : [Link]
* */
public class Hello
{ static Hello hello;
static {
hello=new Hello();
}
private Hello() {
}
public static Hello getHello()
{ return hello;
}
public void show() {
[Link]("Hello-show()");
} }
import [Link];
import [Link];
/*
* @Author : Som Prakash
* @Company : jtcindia
* @Website : [Link]
* */
@Configuration
public class JTCAppConfig
{ @Bean("myhello")
public Hello createHello() {
[Link]("-------createHello()-------- called");
Hello hello=[Link]();
return hello;
}
@Bean("myruntime")
public Runtime createRT() {
[Link]("-------createRT()--------called");
Runtime rt=[Link]();
return rt;
}
}
JTCAppConfig - Spring Configuration class which contains all the Bean Definitions.
@Import({[Link],[Link]})
public class JTCAppConfig2{
}...
@ImportResource({"[Link]","[Link]"})
public class JTCAppConfig {
1. [Link]
package [Link];
import [Link];
import [Link];
Hello hello=(Hello)[Link]("myhello");
[Link]();
Hai hai=(Hai) [Link]("myhai");
[Link]();
}
}
2. [Link]
package [Link];
/*
* @Author : Som Prakash
* @Company : jtcindia
* @Website : [Link]
* */
public class A
{ int a; //S.I
String msg; //S.I
static {
[Link]("A - S.B");
}
public A() {
[Link]("A - D.C");
}
public void setA(int a) {
[Link]("A - setA()");
this.a = a;
}
public void setMsg(String msg)
{ [Link]("A - setMsg()");
[Link] = msg;
}
public String toString()
{ return ""+a
+"\t"+msg;
}
}
4. [Link]
package [Link];
/*
* @Author : Som Prakash
* @Company : jtcindia
* @Website : [Link]
* */
public class Hai {
A aobj; //S.I
B bobj; //S.I
static {
[Link]("Hai - S.B");
}
public Hai() {
[Link]("Hai() - D.C");
}
public void setAobj(A aobj)
{ [Link]("Hai- setAobj()
");
[Link] = aobj;
}
public void setBobj(B bobj)
{ [Link]("Hai- setBobj()
"); [Link] = bobj;
}
import [Link];
import [Link];
/*
* @Author : Som Prakash
* @Company : jtcindia
* @Website : [Link]
* */
@Configuration
public class JTCAppConfig1 {
7. [Link]
package [Link];
import [Link];
import [Link];
/*
* @Author : Som Prakash
* @Company : jtcindia
* @Website : [Link]
* */
@Configuration
public class JTCAppConfig2 {
@Bean("myhello")
public Hello createHello(A ao,B bo)
{ Hello h=new Hello(ao,bo);
return h;
}
}
8. [Link]
package [Link];
import [Link];
import [Link];
/*
* @Author : Som Prakash
* @Company : Jtcindia
* @Website : [Link]
* */
@Configuration
public class JTCAppConfig3 {
1. [Link]
package [Link];
import [Link];
import [Link];
/*
* @Author : Som Prakash
* @Company : jtcindia
* @Website : [Link]
* */
public class Lab6 {
public static void main(String[] args) {
Hello hello=(Hello)[Link]("myhello");
[Link]();
import [Link];
import [Link];
/*
* @Author : Som Prakash
* @Company : jtcindia
* @Website : [Link]
* */
@Configuration
@Import({[Link],[Link]})
public class JTCAppConfig1 {
@Bean("ao")
public A createA()
{ A ao=new A();
[Link](101);
[Link]("I am A");
return ao;
}
@Bean("bo")
public B createB() {
B bo=new B(102,"I am B");
return bo;
}
}
1. [Link]
package [Link];
import [Link];
import [Link];
/*
* @Author : Som Prakash
* @Company : jtcindia
Hello hello=(Hello)[Link]("myhello");
[Link]();
6. [Link]
package [Link];
import [Link];
import [Link];
import [Link];
/*
* @Author : Som Prakash
* @Company : jtcindia
* @Website : [Link]
* */
@Configuration
@ImportResource({"[Link]","[Link]"})
public class JTCAppConfig {
@Bean("myhello")
public Hello createHello(A ao,B bo)
{ Hello h=new Hello(ao,bo);
return h;
}
@Bean("myhai")
public Hai createHai(A ao,B bo)
{ Hai hai=new Hai();
[Link](ao);
[Link](bo);
return hai;
}
</beans>
8. [Link]
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="[Link]
xmlns:xsi="[Link]
xsi:schemaLocation="[Link]
[Link]
</beans>
All of these types of Bean Properties can be Injected with Setter Injection or Constructor Injection. Lab8:
1. [Link]
package [Link];
import [Link];
import [Link];
/*
* @Author : Som Prakash
* @Company : jtcindia
* @Website : [Link]
* */
public class Lab8 {
public static void main(String[] args) {
for(Account acc:[Link]())
{ [Link](acc);
}
}
}
2. [Link]
package [Link];
/*
* @Author : Som Prakash
* @Company : jtcindia
* @Website : [Link]
* */
public class Address
{ private String
street; private String
city; private String
state; public
Address() {}
3. [Link]
package [Link];
/*
* @Author : Som Prakash
* @Company : jtcindia
* @Website : [Link]
* */
public class Account
{ private int accno;
private String atype;
private double bal;
public Account() {}
public Account(int accno, String atype, double bal)
{ super();
[Link] = accno;
[Link] = atype;
[Link] = bal;
}
@Override
public String toString() {
return accno + ", " + atype + ", " + bal ;
}
}
4. [Link]
package [Link];
import [Link].*;
/*
* @Author : Som Prakash
* @Company : jtcindia
* @Website : [Link]
* */
5. [Link]
package [Link];
import [Link].*;
import [Link];
import [Link];
/*
* @Author : Som Prakash
* @Company : jtcindia
* @Website : [Link]
* */
@Configuration
public class JTCAppConfig
{ @Bean(name="myemails")
public List<String> getEmails(){
[Link]("JTCAppConfig -getEmails() ");
List<String> ems=new ArrayList<>();
[Link]("sp@jtc");
[Link]("rai@jtc");
[Link]("som@jtc");
return ems;
}
@Bean(name="myrefs")
public Map<String,Integer>
getRefs(){ [Link]("JTCAppConfig -
getRefs() "); Map<String,Integer> refs=new
TreeMap<>(); [Link]("A",11);
[Link]("B",22);
[Link]("C",33);
[Link]("D",44);
return refs;
}
@Bean(name="myprops")
public Properties getProps(){
[Link]("JTCAppConfig -getProps() ");
Properties props=new Properties();
[Link]("A",11);
[Link]("B",22);
[Link]("C",33);
[Link]("D",44);
return props;
}
@Bean(name="myadd")
public Address getAdd() {
[Link]("JTCAppConfig -getAdd() ");
Address add=new Address();
[Link]("BTM Layout");
[Link]("Noida");
[Link]("noida
"); return add;
}
@Bean(name="myaccs")
public List<Account>
getAccounts(){ [Link]("JTCAppConfig -
getAccounts() ");
List<Account> myaccs=new ArrayList<>();
[Link](new Account(101,"SA",15000));
1. [Link]
package [Link];
import [Link];
import [Link];
/*
* @Author : Som Prakash
* @Company : jtcindia
* @Website : [Link]
* */
public class Lab9 {
public static void main(String[] args) {
import [Link].*;
/*
* @Author : Som Prakash
* @Company : jtcindia
* @Website : [Link]
* */
public class Customer {
private int cid;
private String cname;
private String email;
private long phone;
private List<String> emails;
private List<String> phones;
public Customer() {}
public Customer(int cid, String cname, String email, long phone, List<String> emails,
List<String> phones) {
super();
[Link] = cid;
[Link] = cname;
[Link] = email;
[Link] = phone;
[Link] = emails;
[Link] = phones;
}
3. [Link]
package [Link];
import [Link].*;
import [Link];
import [Link];
/*
* @Author : Som Prakash
* @Company : jtcindia
* @Website : [Link]
* */
@Configuration
public class JTCAppConfig {
1) Explicit Wiring:
In the case of Explicit Wiring, Bean Dependencies has to be specified by you explicitly.
Ex:
class Hello
{ Hai hai;
….
}
@Bean("myhello")
public Hello createHello(Hai hai)
{ Hello h=new Hello();
[Link](hai);
return h;
}
In the above Example, We are explicitly specifying the Hello dependency called Hai
Note: In the case of Collections Only , Container creates the Empty Object and passes that as
parameter .(Ref. Lab9)
If Any bean name is not matching with local variable name then Exception will be
thrown.(Ref.Lab13)
NoUniqueBeanDefinitionException: No qualifying bean of type.........expected single
matching bean but found 2: myhai1,myhai2
1. [Link]
package [Link];
import [Link];
import [Link];
/*
* @Author : Som Prakash
* @Company : jtcindia
* @Website : [Link]
* */
public class Lab10 {
public static void main(String[] args) {
Hello hello=(Hello)[Link]("myhello");
[Link]();
}
}
3. [Link]
package [Link];
/*
* @Author : Som Prakash
* @Company : jtcindia
* @Website : [Link]
* */
public class Hello {
Hai hai; //1. Dependency
static {
[Link]("Hello - S.B");
}
public Hello() {
[Link]("Hello() - D.C");
}
import [Link].*;
import [Link];
import [Link];
/*
* @Author : Som Prakash
* @Company : jtcindia
* @Website : [Link]
* */
@Configuration
public class JTCAppConfig
{ @Bean("myhello")
public Hello createHello(Hai hai) { //1. Dependency
Hello h=new Hello();
[Link](hai); //2. Setter Injection
return h;
}
}
4. [Link]
package [Link];
import [Link].*;
import [Link];
import [Link];
/*
* @Author : Som Prakash
* @Company : jtcindia
* @Website : [Link]
* */
@Configuration
public class JTCAppConfig {
@Bean("myhai")
public Hai createHai1() {
Hai hai=new Hai();
return hai;
}
4. [Link]
package [Link];
import [Link].*;
import [Link];
import [Link];
/*
* @Author : Som Prakash
* @Company : jtcindia
* @Website : [Link]
* */
@Configuration
public class JTCAppConfig {
@Bean("myhai1")
public Hai createHai1() {
Hai hai=new Hai("I am First Bean");
return hai;
}
@Bean("myhai2")
public Hai createHai2() {
Hai hai=new Hai("I am Second Bean");
return hai;
}
@Bean("myhello")
public Hello createHello(Hai myhai2) { //1. Dependency
Hello h=new Hello();
[Link](hai); //2. Setter Injection
return h;
}
}
4. [Link]
package [Link];
import [Link].*;
import [Link];
import [Link];
/*
* @Author : Som Prakash
* @Company : jtcindia
* @Website : [Link]
* */
@Configuration
public class JTCAppConfig {
@Bean("myhai1")
public Hai createHai1() {
Hai hai=new Hai("I am First Bean");
return hai;
}
@Bean("myhai2")
public Hai createHai2() {
Hai hai=new Hai("I am Second Bean");
return hai;
}
@Bean("myhello")
public Hello createHello(Hai hai) { //1. Dependency
Hello h=new Hello();
[Link](hai); //2. Setter Injection
return h;
}
}
@Bean(name="myhello",autowire = Autowire.BY_NAME)
@Bean(name="myhello",autowire = Autowire.BY_BYTE)
Case 3: What happens when two or more beans found.(Refer Lab 18)
Exception will be thrown
Caused by: [Link]: No
qualifying bean of type '[Link]' available: expected single matching
bean but found 3: myhai1,myhai2,hai
4. [Link]
package [Link];
import [Link].*;
import [Link];
import [Link];
/*
* @Author : Som Prakash
* @Company : jtcindia
* @Website : [Link]
* */
@Configuration
public class JTCAppConfig {
@Bean("myhai")
public Hai createHai1() {
Hai hai=new Hai("I am Hai Bean");
return hai;
}
@Bean(name="myhello",autowire = Autowire.BY_NAME)
public Hello createHello() {
Hello h=new Hello();
return h;
}
}
4. [Link]
package [Link];
import [Link].*;
import [Link];
import [Link];
/*
@Bean("hai")
public Hai createHai1() {
Hai hai=new Hai("I am Hai Bean");
return hai;
}
@Bean(name="myhello",autowire = Autowire.BY_NAME)
public Hello createHello() {
Hello h=new Hello();
return h;
}
}
4. [Link]
package [Link];
import [Link].*;
import [Link];
import [Link];
/*
* @Author : Som Prakash
* @Company : jtcindia
* @Website : [Link]
* */
@Configuration
public class JTCAppConfig {
@Bean(name="myhello",autowire = Autowire.BY_TYPE)
public Hello createHello() {
Hello h=new Hello();
return h;
}
}
4. [Link]
package [Link];
import [Link].*;
import [Link];
import [Link];
/*
* @Author : Som Prakash
* @Company : jtcindia
* @Website : [Link]
* */
@Configuration
public class JTCAppConfig {
@Bean("myhai")
public Hai createHai1() {
Hai hai=new Hai("I am Hai Bean");
return hai;
}
@Bean(name="myhello",autowire = Autowire.BY_TYPE)
public Hello createHello() {
Hello h=new Hello();
return h;
}
}
4. [Link]
package [Link];
import [Link].*;
import [Link];
import [Link];
/*
* @Author : Som Prakash
@Bean("myhai1")
public Hai createHai1() {
Hai hai=new Hai("I am First Hai Bean");
return hai;
}
@Bean("myhai2")
public Hai createHai2() {
Hai hai=new Hai("I am Second Hai Bean");
return hai;
}
@Bean("hai")
public Hai createHai3() {
Hai hai=new Hai("I am Third Hai Bean");
return hai;
}
@Bean(name="myhello",autowire = Autowire.BY_TYPE)
public Hello createHello() {
Hello h=new Hello();
return h;
}
}
1. [Link]
package [Link];
import [Link];
import [Link];
/*
* @Author : Som Prakash
* @Company : jtcindia
Hello hello=(Hello)[Link]("myhello");
[Link]();
}
}
2. [Link]
package [Link];
/*
* @Author : Som Prakash
* @Company : jtcindia
* @Website : [Link]
* */
public class A {
public String toString() {
return "I am Bean A";
}
}
3. [Link]
package [Link];
/*
* @Author : Som Prakash
* @Company : jtcindia
* @Website : [Link]
* */
public class B extends A{
public String toString() {
return "I am Bean B";
}
}
4. [Link]
package [Link];
/*
* @Author : Som Prakash
* @Company : jtcindia
* @Website : [Link]
* */
public interface CustomerDAO
{ public void addCustomer();
}
6. [Link]
package [Link];
/*
* @Author : Som Prakash
* @Company : jtcindia
* @Website : [Link]
* */
public class Hello {
A aobj; //1
CustomerDAO customerDAO; //2
7. [Link]
package [Link];
import [Link];
import [Link];
import [Link];
/*
* @Author : Som Prakash
* @Company : jtcindia
* @Website : [Link]
1. [Link]
package [Link];
import [Link];
import [Link];
/*
* @Author : Som Prakash
* @Company : jtcindia
* @Website : [Link]
* */
public class Lab20 {
public static void main(String[] args) {
ApplicationContext ctx=new AnnotationConfigApplicationContext([Link]);
[Link]("---------Now Spring Container is Ready---- ");
}
}
public Hai() {
[Link]("Hai-D.C");
}
public void setHello(Hello hello) { //Setter Injection
[Link]("Hai - setHello()");
[Link] = hello;
}
}
3. [Link]
package [Link];
/*
* @Author : Som Prakash
* @Company : jtcindia
* @Website : [Link]
* */
public class Hello {
public Hello() {
[Link]("Hello-D.C");
}
public void setHai(Hai hai) { //Setter Injection
[Link]("Hello-setHai()");
[Link] = hai;
}
}
import [Link];
import [Link];
import [Link];
/*
* @Author : Som Prakash
* @Company : jtcindia
* @Website : [Link]
* */
@Configuration
public class JTCAppConfig {
@Bean(name="myhai",autowire = Autowire.BY_TYPE)
public Hai createHai() {
Hai hai=new Hai();
return hai;
}
@Bean(name="myhello",autowire = Autowire.BY_TYPE)
public Hello createHello() {
Hello hello=new Hello();
return hello;
}
}
7. [Link]
package [Link];
import [Link];
import [Link];
import [Link];
/*
* @Author : Som Prakash
* @Company : jtcindia
* @Website : [Link]
* */
@Configuration
public class JTCAppConfig {
@Bean(name="aobj")
public A createA() {
return new A();
}
@Bean(name="mybo")
public B createB() {
return new B();
}
@Bean(name="customerDAO")
public CustomerDAO getCustDAO()
{ return new CustomerDAOImpl();
}
@Bean(name="myhello",autowire = Autowire.BY_NAME)
public Hello createHello() { //AutoWiring
return new Hello();
}
}
Using @Autowired:
@Autowired can be used in two ways.
1. ByType autowire process
2. ByName autowire process
A) @Autowired(required=true) / @Autowired
Identified single bean will be Injected Directly without any setter method.
If Any bean name is not matching with local variable name then Exception will be
thrown.(Ref.Lab25)
[Link]: No qualifying
bean of type '[Link]' available: expected single matching bean but
found 3: myhai1,myhai2,myhai3
1. [Link]
package [Link];
import [Link];
import [Link];
/*
* @Author : Som Prakash
* @Company : jtcindia
* @Website : [Link]
* */
public class Lab22 {
public static void main(String[] args) {
Hello hello=(Hello)[Link]("myhello");
[Link]();
}
}
2. [Link]
package [Link];
/*
* @Author : Som Prakash
* @Company : jtcindia
* @Website : [Link]
* */
public class Hai {
String msg;
import [Link];
/*
* @Author : Som Prakash
* @Company : jtcindia
* @Website : [Link]
* */
public class Hello {
@Autowired
Hai hai; //1
4. [Link]
package [Link];
import [Link];
import [Link];
/*
* @Author : Som Prakash
* @Company : jtcindia
* @Website : [Link]
* */
@Configuration
public class JTCAppConfig {
@Bean(name="myhello")
public Hello createHello()
{ return new Hello();
}
4. [Link]
package [Link];
import [Link];
import [Link];
/*
* @Author : Som Prakash
* @Company : jtcindia
* @Website : [Link]
* */
@Configuration
public class JTCAppConfig {
@Bean(name="myhai1")
public Hai createHai() {
Hai hai=new Hai();
[Link]("I am Hai Bean 1");
return hai;
}
@Bean(name="myhello")
public Hello createHello()
{ return new Hello();
}
4. [Link]
package [Link];
import [Link];
import [Link];
/*
* @Author : Som Prakash
* @Company : jtcindia
* @Website : [Link]
* */
@Configuration
public class JTCAppConfig {
@Bean(name="myhai1")
public Hai createHai1() {
Hai hai=new Hai();
[Link]("I am Hai Bean 1");
return hai;
}
@Bean(name="myhai2")
public Hai createHai2() {
Hai hai=new Hai();
[Link]("I am Hai Bean 2");
return hai;
}
@Bean(name="hai")
public Hai createHai() {
Hai hai=new Hai();
[Link]("I am also Hai Bean");
return hai;
}
@Bean(name="myhello")
public Hello createHello()
{ return new Hello();
}
}
4. [Link]
package [Link];
import [Link];
import [Link];
/*
* @Author : Som Prakash
* @Company : jtcindia
* @Website : [Link]
* */
@Configuration
public class JTCAppConfig {
@Bean(name="myhai1")
public Hai createHai1() {
Hai hai=new Hai();
[Link]("I am Hai Bean 1");
return hai;
}
@Bean(name="myhai2")
public Hai createHai2() {
Hai hai=new Hai();
[Link]("I am Hai Bean 2");
return hai;
}
@Bean(name="myhai3")
public Hai createHai() {
Hai hai=new Hai();
[Link]("I am Hai Bean 3");
return hai;
}
@Bean(name="myhello")
public Hello createHello()
{ return new Hello();
}
}
Identified single bean will be Injected Directly without any setter method.
If Any bean name is not matching with local variable name then Exception will be
thrown.(Ref.Lab29)
[Link]: No qualifying
bean of type '[Link]' available: expected single matching bean but
found 3: myhai1,myhai2,myhai3
3. [Link]
package [Link];
import [Link];
/*
* @Author : Som Prakash
* @Company : jtcindia
* @Website : [Link]
* */
public class Hello {
@Autowired(required = false)
Hai hai; //1
import [Link].*;
/*
* @Author : Som Prakash
* @Company : jtcindia
* @Website : [Link]
* */
@Configuration
public class JTCAppConfig {
@Bean(name="myhello")
public Hello createHello()
{ return new Hello();
}
}
Lab27: Files required
1. [Link] Same as Lab22
2. [Link] Same as Lab22
3. [Link] Updated in Lab27
4. [Link] Updated in Lab27
3. [Link]
package [Link];
import [Link];
/*
* @Author : Som Prakash
* @Company : jtcindia
* @Website : [Link]
* */
public class Hello {
@Autowired(required = false)
Hai hai; //1
import [Link].*;
/*
* @Author : Som Prakash
* @Company : jtcindia
* @Website : [Link]
* */
@Configuration
public class JTCAppConfig
{ @Bean(name="myhai1")
public Hai createHai1() {
Hai hai=new Hai();
[Link]("I am Hai Bean 1");
return hai;
}
@Bean(name="myhello")
public Hello createHello()
{ return new Hello();
}
}
3. [Link]
package [Link];
import [Link];
/*
* @Author : Som Prakash
* @Company : jtcindia
* @Website : [Link]
* */
public class Hello {
@Autowired(required = false)
Hai hai; //1
import [Link];
import [Link];
/*
* @Author : Som Prakash
* @Company : jtcindia
* @Website : [Link]
* */
@Configuration
public class JTCAppConfig {
@Bean(name="myhai1")
public Hai createHai1() {
Hai hai=new Hai();
[Link]("I am Hai Bean 1");
return hai;
}
@Bean(name="myhai2")
public Hai createHai2() {
Hai hai=new Hai();
[Link]("I am Hai Bean 2");
return hai;
}
@Bean(name="hai")
public Hai createHai() {
Hai hai=new Hai();
[Link]("I am also Hai Bean");
return hai;
}
@Bean(name="myhello")
public Hello createHello()
{ return new Hello();
}
}
3. [Link]
package [Link];
import [Link];
/*
* @Author : Som Prakash
* @Company : jtcindia
* @Website : [Link]
* */
public class Hello {
@Autowired(required = false)
Hai hai; //1
4. [Link]
package [Link];
import [Link];
import [Link];
/*
* @Author : Som Prakash
* @Company : jtcindia
* @Website : [Link]
* */
@Configuration
public class JTCAppConfig {
@Bean(name="myhai1")
public Hai createHai1() {
Hai hai=new Hai();
[Link]("I am Hai Bean 1");
return hai;
}
@Bean(name="myhai3")
public Hai createHai() {
Hai hai=new Hai();
[Link]("I am Hai Bean 3");
return hai;
}
@Bean(name="myhello")
public Hello createHello()
{ return new Hello();
}
}
A) @Autowired(required=true) / @Autowired
@Autowired(required=true)
@Qualifier("myhai")
Identified single bean will be Injected Directly without any setter method.
3. [Link]
package [Link];
import [Link].*;
/*
* @Author : Som Prakash
* @Company : jtcindia
* @Website : [Link]
* */
public class Hello {
@Autowired
@Qualifier("myhai")
Hai hai; //1
4. [Link]
package [Link];
import [Link];
import [Link];
/*
* @Author : Som Prakash
* @Company : jtcindia
* @Website : [Link]
* */
@Configuration
public class JTCAppConfig {
@Bean(name="myhello")
public Hello createHello()
{ return new Hello();
}
}
3. [Link]
package [Link];
import [Link].*;
/*
* @Author : Som Prakash
* @Company : jtcindia
* @Website : [Link]
* */
public class Hello {
@Autowired
@Qualifier("myhai")
Hai hai; //1
4. [Link]
package [Link];
import [Link].*;
/*
* @Author : Som Prakash
* @Company : jtcindia
* @Website : [Link]
* */
@Configuration
public class JTCAppConfig {
@Bean(name="myhai")
public Hai createHai1() {
Hai hai=new Hai();
[Link]("I am Hai Bean 1");
return hai;
}
@Bean(name="myhello")
public Hello createHello()
{ return new Hello();
}
}
B) @Autowired(required=false)
@Qualifier("myhai")
Identified single bean will be Injected Directly without any setter method.
3. [Link]
package [Link];
import [Link].*;
/*
* @Author : Som Prakash
* @Company : jtcindia
* @Website : [Link]
* */
public class Hello {
@Autowired(required=false)
@Qualifier("myhai")
Hai hai; //1
import [Link];
import [Link];
/*
* @Author : Som Prakash
* @Company : jtcindia
* @Website : [Link]
* */
@Configuration
public class JTCAppConfig {
@Bean(name="myhello")
public Hello createHello()
{ return new Hello();
}
}
3. [Link]
package [Link];
import [Link].*;
/*
* @Author : Som Prakash
* @Company : jtcindia
* @Website : [Link]
* */
public class Hello {
@Autowired(required=false)
@Qualifier("myhai")
Hai hai; //1
import [Link].*;
/*
* @Author : Som Prakash
* @Company : jtcindia
* @Website : [Link]
* */
@Configuration
public class JTCAppConfig {
@Bean(name="myhai")
public Hai createHai1() {
Hai hai=new Hai();
[Link]("I am Hai Bean 1");
return hai;
}
@Bean(name="myhello")
public Hello createHello()
{ return new Hello();
}
}
@Autowired
public void setAobj(A aobj)
{ [Link] = aobj;
}
@Autowired(required=false)
public void setAobj(A aobj)
{ [Link] = aobj;
}
1. [Link]
package [Link];
import [Link];
import [Link];
/*
* @Author : Som Prakash
* @Company : jtcindia
* @Website : [Link]
* */
public class Lab34 {
public static void main(String[] args) {
ApplicationContext ctx=new AnnotationConfigApplicationContext([Link]);
[Link]("---------Now Spring Container is Ready---- ");
Hello hello=(Hello)[Link]("myhello");
[Link]();
}
}
2. [Link]
package [Link];
/*
* @Author : Som Prakash
* @Company : jtcindia
* @Website : [Link]
* */
public class A {
String msg; //S.I
/*
* @Author : Som Prakash
* @Company : jtcindia
* @Website : [Link]
* */
public class Hai {
String msg; //Dependency
5. [Link]
package [Link];
import [Link];
/*
* @Author : Som Prakash
* @Company : jtcindia
* @Website : [Link]
* */
@Autowired
private Hai hai; //Field Injection
@Autowired
public void setAobj(A aobj)
{ [Link]("Hello-
setAobj()"); [Link] = aobj;
}
@Autowired
public void setBobj(B bobj)
{ [Link]("Hello-
setBobj()"); [Link] = bobj;
}
public void show() {
[Link]("Hello-show()");
[Link](hai);
[Link](aobj);
[Link](bobj);
}
}
6. [Link]
package [Link];
import [Link].*;
/*
* @Author : Som Prakash
* @Company : jtcindia
* @Website : [Link]
* */
@Configuration
public class JTCAppConfig {
@Bean(name="myhai")
public Hai createHai() {
Hai hai=new Hai();
[Link]("I am Hai Bean");
return hai;
}
@Bean(name="mybo")
public B createB() {
B bo=new B("I am Bean - B");
return bo;
}
@Bean(name="myhello")
public Hello createHello()
{ return new Hello();
}
}
5. [Link]
package [Link];
import [Link];
/*
* @Author : Som Prakash
* @Company : jtcindia
* @Website : [Link]
* */
public class Hello {
@Autowired
private Hai hai; //Field Injection
@Autowired (required=false)
public void setAobj(A aobj)
{ [Link]("Hello-
setAobj()"); [Link] = aobj;
}
import [Link].*;
/*
* @Author : Som Prakash
* @Company : jtcindia
* @Website : [Link]
* */
@Configuration
public class JTCAppConfig {
@Bean(name="myhai")
public Hai createHai() {
Hai hai=new Hai();
[Link]("I am Hai Bean");
return hai;
}
@Bean(name="myhello")
public Hello createHello()
{ return new Hello();
}
}
2) @PreDestroy:
You can mark the method with @ PreDestroy Annotation.
Method which is marked with @ PreDestroy Annotation
o will be called by the Spring Container before destroying Bean Instance
o contains the code for cleaning resources initialized with bean instance.
3) @Resource:
You can mark the Bean Property with @Resource Annotation.
When you use @Resource, then beans will be detected either based on byName or byType
process and injects them.
o When name attribute is specified for @Resource then uses byName autowire
process. (Refer Lab36)
o When name attribute is not specified for @Resource then uses byType autowire
process. (Refer Lab37)
3. [Link]
package [Link];
import [Link];
/*
* @Author : Som Prakash
* @Company : jtcindia
* @Website : [Link]
* */
@Resource //ByType(Default)
Hai hai; //Field Injection
import [Link].*;
/*
* @Author : Som Prakash
* @Company : jtcindia
* @Website : [Link]
* */
@Configuration
public class JTCAppConfig {
@Bean(name="myhai")
public Hai createHai1() {
Hai hai=new Hai();
[Link]("I am Hai Bean 1");
return hai;
}
@Bean(name="myhello")
public Hello createHello()
{ return new Hello();
}
}
3. [Link]
package [Link];
import [Link];
/*
@Resource(name="myhai2") //ByName
Hai hai; //Field Injection
import [Link].*;
/*
* @Author : Som Prakash
* @Company : jtcindia
* @Website : [Link]
* */
@Configuration
public class JTCAppConfig {
@Bean(name="myhai1")
public Hai createHai1() {
Hai hai=new Hai();
[Link]("I am Hai Bean 1");
return hai;
}
@Bean(name="myhai2")
public Hai createHai2() {
Hai hai=new Hai();
[Link]("I am Hai Bean 2");
return hai;
}
@Bean(name="myhello")
public Hello createHello()
{ return new Hello();
}
}
When you want to detect the beans based on by Name process then you need to @Qualifier
Annotation along with @Inject.
Note: When you want to use @Inject Annotation then you must add [Link] file to
project build path.
1. [Link]
package [Link];
import [Link];
import [Link];
/*
* @Author : Som Prakash
* @Company : jtcindia
* @Website : [Link]
* */
public class Lab38 {
public static void main(String[] args) {
ApplicationContext ctx=new AnnotationConfigApplicationContext([Link]);
[Link]("---------Now Spring Container is Ready---- ");
Hello hello=(Hello)[Link]("myhello");
[Link]();
}
}
2. [Link]
package [Link];
public class A {
String str; //Dependency
public void setStr(String str) {
[Link] = str;
}
public String toString()
{ return str;
}
}
4. [Link]
package [Link];
import [Link];
import [Link];
/*
* @Author : Som Prakash
* @Company : jtcindia
* @Website : [Link]
* */
public class Hello {
@Inject
Hai hai; //ByType
@Inject
@Qualifier("myao")
A aobj; //ByName
import [Link].*;
/*
* @Author : Som Prakash
* @Company : jtcindia
* @Website : [Link]
* */
@Configuration
public class JTCAppConfig {
@Bean(name="myhai")
public Hai createHai() {
Hai hai=new Hai();
[Link]("I am Hai Bean");
return hai;
}
@Bean(name="myao")
public A createA() {
A ao=new A();
[Link]("I am Bean - A");
return ao;
}
@Bean(name="myhello")
public Hello createHello()
{ return new Hello();
}
}