Рубрики
Без рубрики

Весна 3 и JSR-330 @Вводят и @Именованный пример

– Весна 3 и JSR-330 @Вводят и @Именованный пример

Начиная с Spring 3.0, Spring поддерживает стандарт JSR 330: Внедрение зависимостей для Java . В приложении Spring 3 вы можете использовать стандартные

  1. @Inject вместо Spring @Autowired для ввода боба.
  2. @Named вместо компонента Spring @/| для объявления компонента.

Эти стандартные аннотации JSR-330 сканируются и извлекаются так же, как и аннотации Spring, интеграция просто произошла автоматически, если в вашем пути к классу указана следующая jar.

	
		javax.inject
		javax.inject
		1
	

1. Весенние Аннотации

Давайте посмотрим пример аннотации обычной весны – @Autowired и @Компонент

P.S @Компонент , @Репозиторий и @Сервис такие же, просто объявляет боб в контексте весеннего Мок.

package com.mkyong.customer.dao;

import org.springframework.stereotype.Repository;

@Repository
public class CustomerDAO 
{
	public void save() {
		System.out.println("CustomerDAO save method...");
	}	
}
package com.mkyong.customer.services;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import com.mkyong.customer.dao.CustomerDAO;

@Service
public class CustomerService 
{
	@Autowired
	CustomerDAO customerDAO;

	public void save() {
		
		System.out.println("CustomerService save method...");
		customerDAO.save();
		
	}
		
}

2. Примечания JSR-330

В принципе, он работает одинаково, только с разными аннотациями – @Inject и @По имени .

package com.mkyong.customer.dao;

import javax.inject.Named;

@Named
public class CustomerDAO 
{
	
	public void save() {
		System.out.println("CustomerDAO save method...");
	}	
}
package com.mkyong.customer.services;

import javax.inject.Inject;
import javax.inject.Named;

import com.mkyong.customer.dao.CustomerDAO;

@Named
public class CustomerService 
{
	@Inject
	CustomerDAO customerDAO;

	public void save() {
		
		System.out.println("CustomerService save method...");
		customerDAO.save();
		
	}
		
}

3. Запустите его

Как для аннотаций Spring, так и для аннотаций JSR 330 необходимы компоненты, которые могут работать.



    
 

package com.mkyong;

import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;

import com.mkyong.customer.services.CustomerService;

public class App 
{
    public static void main( String[] args )
    {
    	ApplicationContext context = 
    		new ClassPathXmlApplicationContext(new String[] {"Spring-AutoScan.xml"});

    	CustomerService cust = (CustomerService)context.getBean("customerService");
    	cust.save();
    	
    }
}

Приведенные выше два примера генерируют один и тот же результат

CustomerService save method...
CustomerDAO save method...

4. Ограничения JSR-330

Для JSR-330 существуют некоторые ограничения по сравнению с Spring:

  1. @Inject не имеет атрибута ” требуется “, чтобы убедиться, что компонент введен успешно.
  2. В контейнере Spring JSR-330 по умолчанию имеет одноэлементный элемент области, но вы можете использовать @Scope Spring для определения других.
  3. Нет эквивалента значению Spring @ , @Требуется или @Ленивый .

Проверьте это Ссылки на пружины .

5. Переходите на JSR-330

На самом деле, аннотации Spring более мощные, но доступны только в Spring framework. JSR-330 является стандартной спецификацией и поддерживается во всех средах J2ee, которые соответствуют спецификации JSR-330.

Для нового или миграционного проекта всегда рекомендуется использовать аннотации JSR-330, и помните, что это работает и в Spring 3.

Скачать Исходный Код

Рекомендации

  1. Ссылка на пружину: Использование стандартных аннотаций JSR 330
  2. JSR 330: Внедрение зависимостей для Java

Оригинал: “https://mkyong.com/spring3/spring-3-and-jsr-330-inject-and-named-example/”