模拟spring功能
1、建立User.java,内容如下:
package net.model; /** * @项目名:spring2.5 * @包名:net.model * @文件名:User.java * @日期:Jun 22, 2011 4:31:22 PM * @备注: * @作者:apple */ public class User { private String username; private String password; public String getUsername() {return username;} public void setUsername(String username) {this.username = username;} public String getPassword() {return password;} public void setPassword(String password) { this.password = password; } }
2、建立UserDao.java,内容如下:
package net.dao; import net.model.User; /** * @项目名:spring2.5 * @包名:net.dao * @文件名:UserDao.java * @日期:Jun 22, 2011 4:12:42 PM * @备注: * @作者:apple */ public interface UserDao { public void save(User u); }
3、建立UserDaoImpl.java,内容如下:
package net.dao.impl; import net.dao.UserDao; import net.model.User; /** * @项目名:spring2.5 * @包名:net.dao.impl * @文件名:UserDaoImpl.java * @日期:Jun 22, 2011 4:13:45 PM * @备注: * @作者:apple */ public class UserDaoImpl implements UserDao { public void save(User u) { // TODO Auto-generated method stub System.out.println("user save..."); } }
4、建立UserService.java,内容如下:
package net.service; import net.dao.UserDao; import net.dao.impl.UserDaoImpl; import net.model.User; /** * @项目名:spring2.5 * @包名:net.service * @文件名:UserService.java * @日期:Jun 22, 2011 4:15:47 PM * @备注: * @作者:apple */ public class UserService { private UserDao userDao ; public UserDao getUserDao() { return userDao; } public void setUserDao(UserDao userDao) { this.userDao = userDao; } public void add(User u){ userDao.save(u); }//这里可以调用任务实现了UserDao接口的save方法了。 }
5、建立BeanFactory.java,内容如下:
package net.factory; /** * @项目名:spring2.5 * @包名:net.factory * @文件名:BeanFactory.java * @日期:Jun 22, 2011 4:37:08 PM * @备注: * @作者:apple */ public interface BeanFactory { public Object getBean(String name); }
6、建立ClassPathXmlApplicationContext.java,内容如下:
package net.util; import java.lang.reflect.Method; import java.util.HashMap; import java.util.List; import java.util.Map; import net.dao.UserDao; import net.factory.BeanFactory; import net.model.User; import net.service.UserService; import org.jdom.Document; import org.jdom.Element; import org.jdom.input.SAXBuilder; /** * @项目名:spring2.5 * @包名:net.util * @文件名:ClassPathXmlApplicationContext.java * @日期:Jun 22, 2011 4:19:35 PM * @备注: * @作者:apple */ public class ClassPathXmlApplicationContext implements BeanFactory{ private Map<String,Object> beans = new HashMap<String, Object>(); public ClassPathXmlApplicationContext() throws Exception{ SAXBuilder sb=new SAXBuilder();//创建一个SAXBuilder对象 Document doc=sb.build(ClassPathXmlApplicationContext.class.getClassLoader().getResourceAsStream("beans.xml")); //构造文档对象 Element root=doc.getRootElement(); //获取根元素 List list=root.getChildren("bean");//取名字为bean的所有元素 for(int i=0;i<list.size();i++){ Element element=(Element)list.get(i); String id = element.getAttributeValue("id"); String clazz = element.getAttributeValue("class"); System.out.println(id + ":" + clazz); Object o = Class.forName(clazz).newInstance(); beans.put(id, o); //* 以下for循环是实现模拟spring自动装配(注入)功能 //一开始列出此bean的所有property子元素 for (Element propertyElement : (List<Element>)element.getChildren("property")){ //获取property子元素中 属性为name的值(也就是需要注入的参数名称) String name = propertyElement.getAttributeValue("name"); //获取property子元素中 属性为bean的值 (需要注入参数的类型),此处的bean值是已经在上面初始化好了的bean的ID了。 String bean = propertyElement.getAttributeValue("bean"); //因此此处获取指定ID的bean Object beanObject = beans.get(bean); //组成set方法名称:set + 第一个字母大写 + 其它的字母 String methodName = "set" + name.substring(0,1).toUpperCase() + name.substring(1); System.out.println("methodName = " + methodName); //获取bean的set方法,参数(方法名,参数:此参数的类型) Method m = o.getClass().getMethod(methodName, beanObject.getClass().getInterfaces()[0]); //使用反映机制,执行method方法,从而实现注入功能 m.invoke(o, beanObject); } } } public Object getBean(String name){ return beans.get(name); } public static void main(String[] args){ BeanFactory factory=null; try { factory = new ClassPathXmlApplicationContext(); } catch (Exception e) { // TODO Auto-generated catch block e.printStackTrace(); } UserService service = (UserService)factory.getBean("userService"); User u = new User(); service.add(u); } }
7、建立beans.xml,内容如下:
<?xml version="1.0" encoding="UTF-8"?> <beans> <bean id="u" class="net.dao.impl.UserDaoImpl"> </bean> <bean id="userService" class="net.service.UserService"> <property name="userDao" bean="u"/> </bean> </beans>

Outils d'IA chauds

Undresser.AI Undress
Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover
Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool
Images de déshabillage gratuites

Clothoff.io
Dissolvant de vêtements AI

Video Face Swap
Échangez les visages dans n'importe quelle vidéo sans effort grâce à notre outil d'échange de visage AI entièrement gratuit !

Article chaud

Outils chauds

Bloc-notes++7.3.1
Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise
Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1
Puissant environnement de développement intégré PHP

Dreamweaver CS6
Outils de développement Web visuel

SublimeText3 version Mac
Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Sujets chauds





En 2023, la technologie de l’IA est devenue un sujet brûlant et a un impact énorme sur diverses industries, notamment dans le domaine de la programmation. Les gens sont de plus en plus conscients de l’importance de la technologie de l’IA, et la communauté Spring ne fait pas exception. Avec l’évolution continue de la technologie GenAI (Intelligence Artificielle Générale), il est devenu crucial et urgent de simplifier la création d’applications dotées de fonctions d’IA. Dans ce contexte, « SpringAI » a émergé, visant à simplifier le processus de développement d'applications fonctionnelles d'IA, en le rendant simple et intuitif et en évitant une complexité inutile. Grâce à « SpringAI », les développeurs peuvent plus facilement créer des applications dotées de fonctions d'IA, ce qui les rend plus faciles à utiliser et à exploiter.

En tant que leader du secteur, Spring+AI fournit des solutions de pointe pour divers secteurs grâce à son API puissante et flexible et ses fonctions avancées. Dans cette rubrique, nous examinerons les exemples d'application de Spring+AI dans divers domaines. Chaque cas montrera comment Spring+AI répond à des besoins spécifiques, atteint ses objectifs et étend ces LEÇONS APPRISES à une gamme plus large d'applications. J'espère que ce sujet pourra vous inciter à comprendre et à utiliser plus profondément les possibilités infinies de Spring+AI. Le framework Spring a une histoire de plus de 20 ans dans le domaine du développement logiciel, et cela fait 10 ans que la version Spring Boot 1.0 est sortie. Maintenant, personne ne peut contester ce printemps

Comment implémenter les transactions programmatiques Spring : 1. Utilisez TransactionTemplate ; 2. Utilisez TransactionCallback et TransactionCallbackWithoutResult ; 3. Utilisez les annotations Transactional ; 4. Utilisez TransactionTemplate en combinaison avec @Transactional ;

Java implémente les tâches planifiées dans la bibliothèque fournie avec Jdk, il existe deux façons d'implémenter les tâches planifiées, l'une est Timer et l'autre est ScheduledThreadPoolExecutor. Lorsque Timer+TimerTask crée un Timer, il crée un thread, qui peut être utilisé pour planifier des tâches TimerTask. Timer a quatre méthodes de construction, et vous pouvez spécifier le nom du thread Timer et s'il doit être défini comme thread démon. Le nom par défaut est Timer-number et il ne s'agit pas d'un thread démon par défaut. Il existe trois méthodes principales : cancel() : mettre fin à la planification des tâches et annuler toutes les tâches actuellement planifiées. purge() : supprimer les tâches de la file d'attente des tâches.

SpringBoot et SpringCloud sont tous deux des extensions de Spring Framework qui aident les développeurs à créer et déployer des applications de microservices plus rapidement, mais elles ont chacune des objectifs et des fonctions différents. SpringBoot est un framework permettant de créer rapidement des applications Java, permettant aux développeurs de créer et de déployer plus rapidement des applications basées sur Spring. Il fournit un moyen simple et facile à comprendre de créer des applications Spring autonomes et exécutables.

Comment définir le niveau d'isolement des transactions dans Spring : 1. Utilisez l'annotation @Transactional ; 2. Définissez-le dans le fichier de configuration Spring ; 3. Utilisez PlatformTransactionManager ; Introduction détaillée : 1. Utilisez l'annotation @Transactional, ajoutez l'annotation @Transactional à la classe ou à la méthode qui nécessite la gestion des transactions et définissez le niveau d'isolement dans l'attribut 2. Dans le fichier de configuration Spring, etc.

Avec la mise à jour et l'itération de la technologie, Java5.0 a commencé à prendre en charge les annotations. En tant que framework leader en Java, Spring a lentement commencé à abandonner la configuration XML depuis sa mise à jour vers la version 2.5, et davantage d'annotations sont utilisées pour contrôler le framework Spring.

En tant que développeur Java, apprendre et utiliser le framework Spring est une compétence essentielle. Avec la popularité du cloud computing et des microservices, apprendre et utiliser Spring Cloud est devenu une autre compétence qui doit être maîtrisée. SpringCloud est un ensemble d'outils de développement basé sur SpringBoot permettant de créer rapidement des systèmes distribués. Il fournit aux développeurs une série de composants, notamment l'enregistrement et la découverte de services, un centre de configuration, l'équilibrage de charge et des disjoncteurs, etc., permettant aux développeurs de créer des micro-ordinateurs.
